Subject: [PATCH] Built motion from commit (unavailable).|2.5.31

From: Cris Di Sclafani <[email-masked]>
Date: Wed, 7 Jul 2021 11:07:38 +0200

---
 apidoc/api_data.js                                 |38432 +++++++++++++++++++-
 apidoc/api_data.json                               |38432 +++++++++++++++++++-
 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                                       |    2 +-
 public/app/main/apps/chat/i18n/en.json             |   19 +-
 public/app/main/apps/chat/i18n/it.json             |    4 +
 public/app/main/apps/staff/i18n/ar.json            |   11 +-
 public/app/main/apps/staff/i18n/cs.json            |   11 +-
 public/app/main/apps/staff/i18n/da.json            |   11 +-
 public/app/main/apps/staff/i18n/de.json            |   11 +-
 public/app/main/apps/staff/i18n/en.json            |   11 +-
 public/app/main/apps/staff/i18n/es.json            |   11 +-
 public/app/main/apps/staff/i18n/et.json            |   11 +-
 public/app/main/apps/staff/i18n/fa.json            |   11 +-
 public/app/main/apps/staff/i18n/fi.json            |   11 +-
 public/app/main/apps/staff/i18n/fr.json            |   11 +-
 public/app/main/apps/staff/i18n/he.json            |   11 +-
 public/app/main/apps/staff/i18n/hi.json            |   11 +-
 public/app/main/apps/staff/i18n/id.json            |   11 +-
 public/app/main/apps/staff/i18n/it.json            |   11 +-
 public/app/main/apps/staff/i18n/ja.json            |   11 +-
 public/app/main/apps/staff/i18n/ko.json            |   11 +-
 public/app/main/apps/staff/i18n/lt.json            |   11 +-
 public/app/main/apps/staff/i18n/lv.json            |   11 +-
 public/app/main/apps/staff/i18n/nl.json            |   11 +-
 public/app/main/apps/staff/i18n/no.json            |   11 +-
 public/app/main/apps/staff/i18n/pl.json            |   11 +-
 public/app/main/apps/staff/i18n/pt-BR.json         |   11 +-
 public/app/main/apps/staff/i18n/pt-PT.json         |   11 +-
 public/app/main/apps/staff/i18n/ru.json            |   11 +-
 public/app/main/apps/staff/i18n/sv.json            |   11 +-
 public/app/main/apps/staff/i18n/tr.json            |   11 +-
 public/app/main/apps/staff/i18n/zh-CN.json         |   11 +-
 public/app/main/apps/staff/i18n/zh-TW.json         |   11 +-
 public/app/main/apps/voice/i18n/ar.json            |    1 -
 public/app/main/apps/voice/i18n/cs.json            |    1 -
 public/app/main/apps/voice/i18n/da.json            |    1 -
 public/app/main/apps/voice/i18n/de.json            |    1 -
 public/app/main/apps/voice/i18n/en.json            |    2 +-
 public/app/main/apps/voice/i18n/es.json            |    1 -
 public/app/main/apps/voice/i18n/et.json            |    1 -
 public/app/main/apps/voice/i18n/fa.json            |    1 -
 public/app/main/apps/voice/i18n/fi.json            |    1 -
 public/app/main/apps/voice/i18n/fr.json            |    1 -
 public/app/main/apps/voice/i18n/he.json            |    1 -
 public/app/main/apps/voice/i18n/hi.json            |    1 -
 public/app/main/apps/voice/i18n/id.json            |    1 -
 public/app/main/apps/voice/i18n/ja.json            |    1 -
 public/app/main/apps/voice/i18n/ko.json            |    1 -
 public/app/main/apps/voice/i18n/lt.json            |    1 -
 public/app/main/apps/voice/i18n/lv.json            |    1 -
 public/app/main/apps/voice/i18n/nl.json            |    1 -
 public/app/main/apps/voice/i18n/no.json            |    1 -
 public/app/main/apps/voice/i18n/pl.json            |    1 -
 public/app/main/apps/voice/i18n/pt-BR.json         |    1 -
 public/app/main/apps/voice/i18n/pt-PT.json         |    1 -
 public/app/main/apps/voice/i18n/ru.json            |    1 -
 public/app/main/apps/voice/i18n/sv.json            |    1 -
 public/app/main/apps/voice/i18n/tr.json            |    1 -
 public/app/main/apps/voice/i18n/zh-CN.json         |    1 -
 public/app/main/apps/voice/i18n/zh-TW.json         |    1 -
 public/assets/plugins/jscookie/js.cookie.min.js    |    2 -
 public/index.html                                  |    8 +-
 public/scripts/app.09e27ab1.js                     |    1 +
 public/scripts/app.9043fce4.js                     |    1 -
 public/snippets/tvox/answer.controller.js          |  452 -
 public/snippets/tvox/answer.html                   |  139 -
 public/snippets/tvox/css/angular-material.min.css  |    6 -
 public/snippets/tvox/css/style.css                 |   47 -
 public/snippets/tvox/js/angular-animate.min.js     |   59 -
 public/snippets/tvox/js/angular-aria.min.js        |   14 -
 public/snippets/tvox/js/angular-cookies.min.js     |    9 -
 public/snippets/tvox/js/angular-material.min.js    |    7 -
 public/snippets/tvox/js/angular-messages.min.js    |   13 -
 public/snippets/tvox/js/angular-resource.js        |  863 -
 public/snippets/tvox/js/angular-sanitize.min.js    |   17 -
 public/snippets/tvox/js/angular.min.js             |  352 -
 public/snippets/tvox/js/auth.service.js            |  599 -
 public/snippets/tvox/js/index.socket.js            |   71 -
 public/snippets/tvox/js/lodash.min.js              |17161 ---------
 public/snippets/tvox/js/ng-flow-standalone.min.js  |    2 -
 public/snippets/tvox/js/tvox_integration.js        |  150 -
 public/snippets/tvox/ring.controller.js            |   52 -
 public/snippets/tvox/ring.html                     |   35 -
 public/snippets/tvox/script.js                     |   12 -
 public/snippets/tvox/test.html                     |   35 -
 public/styles/app.6b5b73e3.css                     |    1 -
 public/styles/app.7031ba1e.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 +-
 .../cmContactHasItem.attributes.js                 |   18 +
 .../cmContactHasItem.controller.js                 |   18 +
 .../api/cmContactHasItem/cmContactHasItem.model.js |   18 +
 .../api/cmContactHasItem/cmContactHasItem.rpc.js   |   18 +
 server/api/cmContactHasItem/index.js               |   18 +
 .../cmContactHasPhone.attributes.js                |   18 +
 .../cmContactHasPhone.controller.js                |   18 +
 .../cmContactHasPhone/cmContactHasPhone.model.js   |   18 +
 .../api/cmContactHasPhone/cmContactHasPhone.rpc.js |   18 +
 server/api/cmContactHasPhone/index.js              |   18 +
 .../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 +-
 .../cmHopperAdditionalPhone.attributes.js          |   18 +
 .../cmHopperAdditionalPhone.controller.js          |   18 +
 .../cmHopperAdditionalPhone.model.js               |   18 +
 .../cmHopperAdditionalPhone.rpc.js                 |   18 +
 server/api/cmHopperAdditionalPhone/index.js        |   18 +
 .../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 +-
 .../contactItemType/contactItemType.attributes.js  |   18 +
 .../contactItemType/contactItemType.controller.js  |   18 +
 .../api/contactItemType/contactItemType.model.js   |   18 +
 server/api/contactItemType/contactItemType.rpc.js  |   18 +
 server/api/contactItemType/index.js                |   18 +
 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/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/teamVoiceQueue/index.js                 |    2 +-
 .../teamVoiceQueue/teamVoiceQueue.attributes.js    |    2 +-
 server/api/teamVoiceQueue/teamVoiceQueue.model.js  |    2 +-
 server/api/teamVoiceQueue/teamVoiceQueue.rpc.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/userNotification/index.js               |    2 +-
 .../userNotification.attributes.js                 |    2 +-
 .../userNotification.controller.js                 |    2 +-
 .../userNotification/userNotification.events.js    |    2 +-
 .../api/userNotification/userNotification.model.js |    2 +-
 .../api/userNotification/userNotification.rpc.js   |    2 +-
 .../userNotification/userNotification.socket.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/import/cm/csvUpdates.js          |   18 +
 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           |    9 +-
 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/schedule/whatsapp.js                 |    2 +-
 server/config/seedContact.js                       |    2 +-
 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 +-
 .../attachments/1624887183415-cloroplasti.jpg      |  Bin 0 -> 109857 bytes
 .../files/attachments/1624887197137-palestra.jpg   |  Bin 0 -> 667893 bytes
 server/files/templates/chatOfflineMessage.ejs      |   21 +-
 server/migrations/2.5.29.js                        |    2 +-
 server/migrations/2.5.30.js                        |   57 +-
 server/migrations/2.5.31.js                        |  182 +
 server/migrations/2.5.7.js                         |   30 +-
 server/migrations/2.6.0.js                         |  228 +
 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/additionalPhone.js      |   18 +
 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/cmHopperAdditionalPhone.js |   18 +
 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/setting.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/rpc/setting.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 +-
 .../routing/server/applications/dialogflowV2.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/tvox.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 +-
 snippet/3.0.0/index.html                           |    4 +-
 snippet/3.0.0/scripts/app.js                       |    2 +
 snippet/3.0.0/scripts/app.js.LICENSE.txt           |   19 +
 snippet/3.0.0/scripts/chat.js                      |    3 +
 snippet/3.0.0/scripts/chat.js.LICENSE.txt          |    7 +
 snippet/3.0.0/scripts/chat.js.map                  |    1 +
 snippet/3.0.0/scripts/runtime.js                   |    2 +-
 snippet/3.0.0/scripts/runtime.js.map               |    2 +-
 snippet/3.0.0/scripts/vendor-index.js              |    2 +
 snippet/3.0.0/scripts/vendor-index.js.map          |    1 +
 snippet/3.0.0/scripts/vendor-stateDirectives.js    |    2 +-
 .../3.0.0/scripts/vendor-stateDirectives.js.map    |    2 +-
 snippet/3.0.0/styles/app.css                       |   28 +
 snippet/3.0.0/styles/app.css.map                   |    1 +
 .../offline/index.tpl.html/index.tpl.html          |  368 +-
 .../templates/online/index.tpl.html/index.tpl.html |   83 +-
 1355 files changed, 79984 insertions(+), 22912 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/assets/plugins/jscookie/js.cookie.min.js
 create mode 100644 public/scripts/app.09e27ab1.js
 delete mode 100644 public/scripts/app.9043fce4.js
 delete mode 100644 public/snippets/tvox/answer.controller.js
 delete mode 100644 public/snippets/tvox/answer.html
 delete mode 100644 public/snippets/tvox/css/angular-material.min.css
 delete mode 100644 public/snippets/tvox/css/style.css
 delete mode 100644 public/snippets/tvox/js/angular-animate.min.js
 delete mode 100644 public/snippets/tvox/js/angular-aria.min.js
 delete mode 100644 public/snippets/tvox/js/angular-cookies.min.js
 delete mode 100644 public/snippets/tvox/js/angular-material.min.js
 delete mode 100644 public/snippets/tvox/js/angular-messages.min.js
 delete mode 100644 public/snippets/tvox/js/angular-resource.js
 delete mode 100644 public/snippets/tvox/js/angular-sanitize.min.js
 delete mode 100644 public/snippets/tvox/js/angular.min.js
 delete mode 100644 public/snippets/tvox/js/auth.service.js
 delete mode 100644 public/snippets/tvox/js/index.socket.js
 delete mode 100644 public/snippets/tvox/js/lodash.min.js
 delete mode 100644 public/snippets/tvox/js/ng-flow-standalone.min.js
 delete mode 100644 public/snippets/tvox/js/tvox_integration.js
 delete mode 100644 public/snippets/tvox/ring.controller.js
 delete mode 100644 public/snippets/tvox/ring.html
 delete mode 100644 public/snippets/tvox/script.js
 delete mode 100644 public/snippets/tvox/test.html
 delete mode 100644 public/styles/app.6b5b73e3.css
 create mode 100644 public/styles/app.7031ba1e.css
 create mode 100644 server/api/cmContactHasItem/cmContactHasItem.attributes.js
 create mode 100644 server/api/cmContactHasItem/cmContactHasItem.controller.js
 create mode 100644 server/api/cmContactHasItem/cmContactHasItem.model.js
 create mode 100644 server/api/cmContactHasItem/cmContactHasItem.rpc.js
 create mode 100644 server/api/cmContactHasItem/index.js
 create mode 100644 server/api/cmContactHasPhone/cmContactHasPhone.attributes.js
 create mode 100644 server/api/cmContactHasPhone/cmContactHasPhone.controller.js
 create mode 100644 server/api/cmContactHasPhone/cmContactHasPhone.model.js
 create mode 100644 server/api/cmContactHasPhone/cmContactHasPhone.rpc.js
 create mode 100644 server/api/cmContactHasPhone/index.js
 create mode 100644 server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.attributes.js
 create mode 100644 server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.controller.js
 create mode 100644 server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model.js
 create mode 100644 server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc.js
 create mode 100644 server/api/cmHopperAdditionalPhone/index.js
 create mode 100644 server/api/contactItemType/contactItemType.attributes.js
 create mode 100644 server/api/contactItemType/contactItemType.controller.js
 create mode 100644 server/api/contactItemType/contactItemType.model.js
 create mode 100644 server/api/contactItemType/contactItemType.rpc.js
 create mode 100644 server/api/contactItemType/index.js
 create mode 100644 server/components/import/cm/csvUpdates.js
 create mode 100644 server/files/attachments/1624887183415-cloroplasti.jpg
 create mode 100644 server/files/attachments/1624887197137-palestra.jpg
 create mode 100644 server/migrations/2.5.31.js
 create mode 100644 server/migrations/2.6.0.js
 create mode 100644 server/services/ami/dialer/additionalPhone.js
 create mode 100644 server/services/ami/rpc/cmHopperAdditionalPhone.js
 create mode 100644 snippet/3.0.0/scripts/app.js
 create mode 100644 snippet/3.0.0/scripts/app.js.LICENSE.txt
 create mode 100644 snippet/3.0.0/scripts/chat.js
 create mode 100644 snippet/3.0.0/scripts/chat.js.LICENSE.txt
 create mode 100644 snippet/3.0.0/scripts/chat.js.map
 create mode 100644 snippet/3.0.0/scripts/vendor-index.js
 create mode 100644 snippet/3.0.0/scripts/vendor-index.js.map
 create mode 100644 snippet/3.0.0/styles/app.css
 create mode 100644 snippet/3.0.0/styles/app.css.map

diff --git a/apidoc/api_data.js b/apidoc/api_data.js
index e7ed922..1ae7803 100644
--- a/apidoc/api_data.js
+++ b/apidoc/api_data.js
@@ -1 +1,38431 @@
-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": "secondDisposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "thirdDisposition",
            "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": "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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "providerName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "providerResponse",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": "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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "providerName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "providerResponse",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "openNewInteraction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "subjectOffline",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"first\"",
              "\"second\"",
              "\"third\""
            ],
            "optional": false,
            "field": "level",
            "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/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": "secondDisposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "thirdDisposition",
            "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}/journey",
    "title": "Gets customer journey",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/{id}/journey -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "getJourney",
    "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}/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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"first\"",
              "\"second\"",
              "\"third\""
            ],
            "optional": false,
            "field": "level",
            "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/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": false,
            "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\"",
              "\"picklist\""
            ],
            "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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"first\"",
              "\"second\"",
              "\"third\""
            ],
            "optional": false,
            "field": "level",
            "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/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": false,
            "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\"",
              "\"picklist\""
            ],
            "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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"first\"",
              "\"second\"",
              "\"third\""
            ],
            "optional": false,
            "field": "level",
            "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/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": "secondDisposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "thirdDisposition",
            "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": "secondDisposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "thirdDisposition",
            "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": "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}/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": "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": false,
            "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\"",
              "\"picklist\""
            ],
            "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": false,
            "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\"",
              "\"picklist\""
            ],
            "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": "Text",
            "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": "Text",
            "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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"first\"",
              "\"second\"",
              "\"third\""
            ],
            "optional": false,
            "field": "level",
            "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/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": "secondDisposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "thirdDisposition",
            "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": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": "secondDisposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "thirdDisposition",
            "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": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"Email\"",
              "\"Chat\""
            ],
            "optional": false,
            "field": "originChannel",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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/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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"first\"",
              "\"second\"",
              "\"third\""
            ],
            "optional": false,
            "field": "level",
            "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/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": "secondDisposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "thirdDisposition",
            "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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "providerName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "providerResponse",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "providerName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "providerResponse",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": "put",
    "url": "/api/rpc/voice/{id}/queues",
    "title": "Updates a single VoiceQueue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/voice/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "UpdateVoiceQueues",
    "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/:id/waitinginteractions",
    "title": "Gets a list of openchannelQueuesIdWaitingInteractions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/openchannel/queues/:id/waitinginteractions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "openchannelQueuesIdWaitingInteractions",
    "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": "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": false,
            "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\"",
              "\"account_contact_lead\"",
              "\"account\""
            ],
            "optional": true,
            "field": "moduleSearch",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"nothing\"",
              "\"contact\"",
              "\"lead\"",
              "\"account\""
            ],
            "optional": true,
            "field": "moduleCreate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "leadId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "additionalSearchAccount",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "additionalSearchContact",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "additionalSearchLead",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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\"",
              "\"picklist\""
            ],
            "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": false,
            "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\"",
              "\"picklist\""
            ],
            "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/now",
    "title": "Get Server Current Date",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/now -v -X GET",
        "type": "json"
      }
    ],
    "name": "getDate",
    "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}/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\"",
              "\"bandwidth\"",
              "\"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": "applicationId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "accountId",
            "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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"first\"",
              "\"second\"",
              "\"third\""
            ],
            "optional": false,
            "field": "level",
            "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/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": "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/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": "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": "secondDisposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "thirdDisposition",
            "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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "providerName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "providerResponse",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "providerName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "providerResponse",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "providerName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "providerResponse",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "savedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "publishedAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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}",
    "title": "Delete recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/recordings/{id} -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": false,
            "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\"",
              "\"picklist\""
            ],
            "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/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/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/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/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/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": "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/userNotifications",
    "title": "Send notification to user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userNotifications -d '{\"text\": \"Hello!\", \"TemplateId\": 1}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "Send",
    "group": "UserNotifications",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userNotification/index.js",
    "groupTitle": "UserNotifications"
  },
  {
    "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": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "privacyEnabled",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": "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": "post",
    "url": "/api/users/create_many",
    "title": "Create Users",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/create_many -d '[{\"name\": \"john.doe\", \"role\": \"user\", \"...\": \"...\"}]' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "bulkCreate",
    "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": "get",
    "url": "/api/users/{id}/open_tabs",
    "title": "Get interactions opened tabs",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/open_tabs -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getOpenTabs",
    "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/presence",
    "title": "Gets agent presence",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/presence -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "getPresence",
    "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": true,
            "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": "userSecondDisposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "userThirdDisposition",
            "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": "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": "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": "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/describe",
    "title": "Gets table info about Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/transfers/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeTransfer_Reports",
    "group": "Voice_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/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": false,
            "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\"",
              "\"picklist\""
            ],
            "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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"first\"",
              "\"second\"",
              "\"third\""
            ],
            "optional": false,
            "field": "level",
            "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/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": "secondDisposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "thirdDisposition",
            "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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "providerName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "providerResponse",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "providerName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "providerResponse",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": false,
            "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\"",
              "\"picklist\""
            ],
            "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": false,
            "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\"",
              "\"picklist\""
            ],
            "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/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": "secondDisposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "thirdDisposition",
+            "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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "providerName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "providerResponse",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "providerName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "providerResponse",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "vidaooTopic",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "vidaooNote",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "vidaooMetadata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "openNewInteraction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "subjectOffline",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"first\"",
+              "\"second\"",
+              "\"third\""
+            ],
+            "optional": false,
+            "field": "level",
+            "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/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": "secondDisposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "thirdDisposition",
+            "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_contact_has_items",
+    "title": "Creates a new CmContactHasItem",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_contact_has_items -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateCmContactHasItems",
+    "group": "CmContactHasItems",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "CmContactId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "item",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "ItemTypeId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "ItemClass",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "OrderBy",
+            "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/cmContactHasItem/index.js",
+    "groupTitle": "CmContactHasItems"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cm_contact_has_items/{id}",
+    "title": "Deletes a CmContactHasItem",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_contact_has_items/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteCmContactHasItems",
+    "group": "CmContactHasItems",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContactHasItem/index.js",
+    "groupTitle": "CmContactHasItems"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm_contact_has_items",
+    "title": "Gets a list of CmContactHasItems",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_contact_has_items -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetCmContactHasItems",
+    "group": "CmContactHasItems",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>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_contact_has_items?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning 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_contact_has_items?name=john.doe,jane.miller</code></p> <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_contact_has_items?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A 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_contact_has_items?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result 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_contact_has_items?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContactHasItem/index.js",
+    "groupTitle": "CmContactHasItems"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm_contact_has_items/{id}",
+    "title": "Gets a single CmContactHasItem",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_contact_has_items/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowCmContactHasItems",
+    "group": "CmContactHasItems",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContactHasItem/index.js",
+    "groupTitle": "CmContactHasItems"
+  },
+  {
+    "type": "put",
+    "url": "/api/cm_contact_has_items/{id}",
+    "title": "Update an existing CmContactHasItem",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_contact_has_items/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateCmContactHasItems",
+    "group": "CmContactHasItems",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContactHasItem/index.js",
+    "groupTitle": "CmContactHasItems"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm_contact_has_phones",
+    "title": "Creates a new CmContactHasPhone",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_contact_has_phones -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateCmContactHasPhones",
+    "group": "CmContactHasPhones",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "CmContactId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContactHasPhone/index.js",
+    "groupTitle": "CmContactHasPhones"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cm_contact_has_phones/{id}",
+    "title": "Deletes a CmContactHasPhone",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_contact_has_phones/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteCmContactHasPhones",
+    "group": "CmContactHasPhones",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContactHasPhone/index.js",
+    "groupTitle": "CmContactHasPhones"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm_contact_has_phones",
+    "title": "Gets a list of CmContactHasPhones",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_contact_has_phones -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetCmContactHasPhones",
+    "group": "CmContactHasPhones",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>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_contact_has_phones?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning 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_contact_has_phones?name=john.doe,jane.miller</code></p> <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_contact_has_phones?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A 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_contact_has_phones?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result 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_contact_has_phones?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContactHasPhone/index.js",
+    "groupTitle": "CmContactHasPhones"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm_contact_has_phones/{id}",
+    "title": "Gets a single CmContactHasPhone",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_contact_has_phones/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowCmContactHasPhones",
+    "group": "CmContactHasPhones",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContactHasPhone/index.js",
+    "groupTitle": "CmContactHasPhones"
+  },
+  {
+    "type": "put",
+    "url": "/api/cm_contact_has_phones/{id}",
+    "title": "Update an existing CmContactHasPhone",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_contact_has_phones/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateCmContactHasPhones",
+    "group": "CmContactHasPhones",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContactHasPhone/index.js",
+    "groupTitle": "CmContactHasPhones"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm_hopper_additional_phones",
+    "title": "Creates a new CmHopperAdditionalPhone",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_hopper_additional_phones -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateCmHopperAdditionalPhones",
+    "group": "CmHopperAdditionalPhones",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "CmHopperId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "OrderBy",
+            "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": "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/cmHopperAdditionalPhone/index.js",
+    "groupTitle": "CmHopperAdditionalPhones"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cm_hopper_additional_phones/{id}",
+    "title": "Deletes a CmHopperAdditionalPhone",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_hopper_additional_phones/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteCmHopperAdditionalPhones",
+    "group": "CmHopperAdditionalPhones",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperAdditionalPhone/index.js",
+    "groupTitle": "CmHopperAdditionalPhones"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm_hopper_additional_phones",
+    "title": "Gets a list of CmHopperAdditionalPhones",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_hopper_additional_phones -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetCmHopperAdditionalPhones",
+    "group": "CmHopperAdditionalPhones",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>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_additional_phones?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning 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_additional_phones?name=john.doe,jane.miller</code></p> <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_additional_phones?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A 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_additional_phones?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result 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_additional_phones?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperAdditionalPhone/index.js",
+    "groupTitle": "CmHopperAdditionalPhones"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm_hopper_additional_phones/{id}",
+    "title": "Gets a single CmHopperAdditionalPhone",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_hopper_additional_phones/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowCmHopperAdditionalPhones",
+    "group": "CmHopperAdditionalPhones",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperAdditionalPhone/index.js",
+    "groupTitle": "CmHopperAdditionalPhones"
+  },
+  {
+    "type": "put",
+    "url": "/api/cm_hopper_additional_phones/{id}",
+    "title": "Update an existing CmHopperAdditionalPhone",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_hopper_additional_phones/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateCmHopperAdditionalPhones",
+    "group": "CmHopperAdditionalPhones",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperAdditionalPhone/index.js",
+    "groupTitle": "CmHopperAdditionalPhones"
+  },
+  {
+    "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}/journey",
+    "title": "Gets customer journey",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/{id}/journey -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getJourney",
+    "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}/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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"first\"",
+              "\"second\"",
+              "\"third\""
+            ],
+            "optional": false,
+            "field": "level",
+            "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/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/contact_item_types",
+    "title": "Creates a new ContactItemType",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/contact_item_types -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateContactItemTypes",
+    "group": "ContactItemType",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "OrderBy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "rgbBackgroundColor",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/contactItemType/index.js",
+    "groupTitle": "ContactItemType"
+  },
+  {
+    "type": "delete",
+    "url": "/api/contact_item_types/{id}",
+    "title": "Deletes a ContactItemType",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/contact_item_types/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteContactItemTypes",
+    "group": "ContactItemType",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/contactItemType/index.js",
+    "groupTitle": "ContactItemType"
+  },
+  {
+    "type": "get",
+    "url": "/api/contact_item_types",
+    "title": "Gets a list of ContactItemTypes",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/contact_item_types -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetContactItemTypes",
+    "group": "ContactItemType",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/contact_item_types?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/contact_item_types?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/contact_item_types?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/contact_item_types?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/contact_item_types?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/contactItemType/index.js",
+    "groupTitle": "ContactItemType"
+  },
+  {
+    "type": "get",
+    "url": "/api/contact_item_types/{id}",
+    "title": "Gets a single ContactItemType",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/contact_item_types/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowContactItemTypes",
+    "group": "ContactItemType",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/contactItemType/index.js",
+    "groupTitle": "ContactItemType"
+  },
+  {
+    "type": "put",
+    "url": "/api/contact_item_types/{id}",
+    "title": "Update an existing ContactItemType",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/contact_item_types/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateContactItemTypes",
+    "group": "ContactItemType",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/contactItemType/index.js",
+    "groupTitle": "ContactItemType"
+  },
+  {
+    "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": false,
+            "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\"",
+              "\"picklist\""
+            ],
+            "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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"first\"",
+              "\"second\"",
+              "\"third\""
+            ],
+            "optional": false,
+            "field": "level",
+            "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/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": false,
+            "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\"",
+              "\"picklist\""
+            ],
+            "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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"first\"",
+              "\"second\"",
+              "\"third\""
+            ],
+            "optional": false,
+            "field": "level",
+            "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/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": "secondDisposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "thirdDisposition",
+            "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": "secondDisposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "thirdDisposition",
+            "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": "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}/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": "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": false,
+            "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\"",
+              "\"picklist\""
+            ],
+            "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": false,
+            "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\"",
+              "\"picklist\""
+            ],
+            "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": "Text",
+            "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": "Text",
+            "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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"first\"",
+              "\"second\"",
+              "\"third\""
+            ],
+            "optional": false,
+            "field": "level",
+            "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/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": "secondDisposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "thirdDisposition",
+            "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": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": "secondDisposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "thirdDisposition",
+            "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": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"Email\"",
+              "\"Chat\""
+            ],
+            "optional": false,
+            "field": "originChannel",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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/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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"first\"",
+              "\"second\"",
+              "\"third\""
+            ],
+            "optional": false,
+            "field": "level",
+            "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/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": "secondDisposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "thirdDisposition",
+            "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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "providerName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "providerResponse",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "providerName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "providerResponse",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": "put",
+    "url": "/api/rpc/voice/{id}/queues",
+    "title": "Updates a single VoiceQueue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/voice/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "UpdateVoiceQueues",
+    "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/:id/waitinginteractions",
+    "title": "Gets a list of openchannelQueuesIdWaitingInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/openchannel/queues/:id/waitinginteractions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "openchannelQueuesIdWaitingInteractions",
+    "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": "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": false,
+            "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\"",
+              "\"account_contact_lead\"",
+              "\"account\""
+            ],
+            "optional": true,
+            "field": "moduleSearch",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"nothing\"",
+              "\"contact\"",
+              "\"lead\"",
+              "\"account\""
+            ],
+            "optional": true,
+            "field": "moduleCreate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "leadId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "additionalSearchAccount",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "additionalSearchContact",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "additionalSearchLead",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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\"",
+              "\"picklist\""
+            ],
+            "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": false,
+            "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\"",
+              "\"picklist\""
+            ],
+            "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/now",
+    "title": "Get Server Current Date",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/now -v -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDate",
+    "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}/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\"",
+              "\"bandwidth\"",
+              "\"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": "applicationId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "accountId",
+            "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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"first\"",
+              "\"second\"",
+              "\"third\""
+            ],
+            "optional": false,
+            "field": "level",
+            "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/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": "secondDisposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "thirdDisposition",
+            "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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "providerName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "providerResponse",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "providerName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "providerResponse",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "providerName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "providerResponse",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "savedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "publishedAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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}",
+    "title": "Delete recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/recordings/{id} -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": false,
+            "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\"",
+              "\"picklist\""
+            ],
+            "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/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/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/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/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/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/userNotifications",
+    "title": "Send notification to user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userNotifications -d '{\"text\": \"Hello!\", \"TemplateId\": 1}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Send",
+    "group": "UserNotifications",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userNotification/index.js",
+    "groupTitle": "UserNotifications"
+  },
+  {
+    "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": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "privacyEnabled",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "downloadAttachments",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "downloadCallySquareRecordings",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "downloadContactManagerLists",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "downloadJscriptySessions",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "downloadOmnichannelInteractions",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "downloadScreenRecordings",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "downloadVoiceRecordings",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": "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": "post",
+    "url": "/api/users/create_many",
+    "title": "Create Users",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/create_many -d '[{\"name\": \"john.doe\", \"role\": \"user\", \"...\": \"...\"}]' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "bulkCreate",
+    "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": "get",
+    "url": "/api/users/{id}/open_tabs",
+    "title": "Get interactions opened tabs",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/open_tabs -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getOpenTabs",
+    "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/presence",
+    "title": "Gets agent presence",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/presence -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getPresence",
+    "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": true,
+            "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": "userSecondDisposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "userThirdDisposition",
+            "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": "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": "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": "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/describe",
+    "title": "Gets table info about Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/transfers/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeTransfer_Reports",
+    "group": "Voice_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/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": false,
+            "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\"",
+              "\"picklist\""
+            ],
+            "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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"first\"",
+              "\"second\"",
+              "\"third\""
+            ],
+            "optional": false,
+            "field": "level",
+            "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/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": "secondDisposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "thirdDisposition",
+            "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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "providerName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "providerResponse",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "providerName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "providerResponse",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": false,
+            "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\"",
+              "\"picklist\""
+            ],
+            "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": false,
+            "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\"",
+              "\"picklist\""
+            ],
+            "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 7672430..9964cd4 100644
--- a/apidoc/api_data.json
+++ b/apidoc/api_data.json
@@ -1 +1,38431 @@
-[
  {
    "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": "secondDisposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "thirdDisposition",
            "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": "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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "providerName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "providerResponse",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": "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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "providerName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "providerResponse",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "openNewInteraction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "subjectOffline",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"first\"",
              "\"second\"",
              "\"third\""
            ],
            "optional": false,
            "field": "level",
            "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/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": "secondDisposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "thirdDisposition",
            "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}/journey",
    "title": "Gets customer journey",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/{id}/journey -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "getJourney",
    "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}/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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"first\"",
              "\"second\"",
              "\"third\""
            ],
            "optional": false,
            "field": "level",
            "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/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": false,
            "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\"",
              "\"picklist\""
            ],
            "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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"first\"",
              "\"second\"",
              "\"third\""
            ],
            "optional": false,
            "field": "level",
            "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/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": false,
            "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\"",
              "\"picklist\""
            ],
            "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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"first\"",
              "\"second\"",
              "\"third\""
            ],
            "optional": false,
            "field": "level",
            "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/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": "secondDisposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "thirdDisposition",
            "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": "secondDisposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "thirdDisposition",
            "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": "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}/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": "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": false,
            "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\"",
              "\"picklist\""
            ],
            "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": false,
            "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\"",
              "\"picklist\""
            ],
            "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": "Text",
            "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": "Text",
            "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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"first\"",
              "\"second\"",
              "\"third\""
            ],
            "optional": false,
            "field": "level",
            "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/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": "secondDisposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "thirdDisposition",
            "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": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": "secondDisposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "thirdDisposition",
            "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": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"Email\"",
              "\"Chat\""
            ],
            "optional": false,
            "field": "originChannel",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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/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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"first\"",
              "\"second\"",
              "\"third\""
            ],
            "optional": false,
            "field": "level",
            "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/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": "secondDisposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "thirdDisposition",
            "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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "providerName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "providerResponse",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "providerName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "providerResponse",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": "put",
    "url": "/api/rpc/voice/{id}/queues",
    "title": "Updates a single VoiceQueue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/voice/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "UpdateVoiceQueues",
    "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/:id/waitinginteractions",
    "title": "Gets a list of openchannelQueuesIdWaitingInteractions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/openchannel/queues/:id/waitinginteractions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "openchannelQueuesIdWaitingInteractions",
    "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": "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": false,
            "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\"",
              "\"account_contact_lead\"",
              "\"account\""
            ],
            "optional": true,
            "field": "moduleSearch",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"nothing\"",
              "\"contact\"",
              "\"lead\"",
              "\"account\""
            ],
            "optional": true,
            "field": "moduleCreate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "leadId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "additionalSearchAccount",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "additionalSearchContact",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "additionalSearchLead",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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\"",
              "\"picklist\""
            ],
            "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": false,
            "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\"",
              "\"picklist\""
            ],
            "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/now",
    "title": "Get Server Current Date",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/now -v -X GET",
        "type": "json"
      }
    ],
    "name": "getDate",
    "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}/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\"",
              "\"bandwidth\"",
              "\"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": "applicationId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "accountId",
            "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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"first\"",
              "\"second\"",
              "\"third\""
            ],
            "optional": false,
            "field": "level",
            "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/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": "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/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": "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": "secondDisposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "thirdDisposition",
            "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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "providerName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "providerResponse",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "providerName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "providerResponse",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "providerName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "providerResponse",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "savedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "publishedAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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}",
    "title": "Delete recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/recordings/{id} -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": false,
            "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\"",
              "\"picklist\""
            ],
            "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/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/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/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/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/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": "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/userNotifications",
    "title": "Send notification to user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userNotifications -d '{\"text\": \"Hello!\", \"TemplateId\": 1}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "Send",
    "group": "UserNotifications",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userNotification/index.js",
    "groupTitle": "UserNotifications"
  },
  {
    "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": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "privacyEnabled",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": "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": "post",
    "url": "/api/users/create_many",
    "title": "Create Users",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/create_many -d '[{\"name\": \"john.doe\", \"role\": \"user\", \"...\": \"...\"}]' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "bulkCreate",
    "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": "get",
    "url": "/api/users/{id}/open_tabs",
    "title": "Get interactions opened tabs",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/open_tabs -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getOpenTabs",
    "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/presence",
    "title": "Gets agent presence",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/presence -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "getPresence",
    "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": true,
            "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": "userSecondDisposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "userThirdDisposition",
            "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": "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": "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": "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/describe",
    "title": "Gets table info about Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/transfers/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeTransfer_Reports",
    "group": "Voice_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/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": false,
            "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\"",
              "\"picklist\""
            ],
            "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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"first\"",
              "\"second\"",
              "\"third\""
            ],
            "optional": false,
            "field": "level",
            "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/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": "secondDisposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "thirdDisposition",
            "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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "providerName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "providerResponse",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "providerName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "providerResponse",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>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": false,
            "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\"",
              "\"picklist\""
            ],
            "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": false,
            "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\"",
              "\"picklist\""
            ],
            "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/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": "secondDisposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "thirdDisposition",
+            "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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "providerName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "providerResponse",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "providerName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "providerResponse",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "vidaooTopic",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "vidaooNote",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "vidaooMetadata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "openNewInteraction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "subjectOffline",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"first\"",
+              "\"second\"",
+              "\"third\""
+            ],
+            "optional": false,
+            "field": "level",
+            "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/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": "secondDisposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "thirdDisposition",
+            "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_contact_has_items",
+    "title": "Creates a new CmContactHasItem",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_contact_has_items -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateCmContactHasItems",
+    "group": "CmContactHasItems",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "CmContactId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "item",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "ItemTypeId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "ItemClass",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "OrderBy",
+            "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/cmContactHasItem/index.js",
+    "groupTitle": "CmContactHasItems"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cm_contact_has_items/{id}",
+    "title": "Deletes a CmContactHasItem",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_contact_has_items/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteCmContactHasItems",
+    "group": "CmContactHasItems",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContactHasItem/index.js",
+    "groupTitle": "CmContactHasItems"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm_contact_has_items",
+    "title": "Gets a list of CmContactHasItems",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_contact_has_items -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetCmContactHasItems",
+    "group": "CmContactHasItems",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>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_contact_has_items?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning 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_contact_has_items?name=john.doe,jane.miller</code></p> <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_contact_has_items?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A 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_contact_has_items?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result 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_contact_has_items?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContactHasItem/index.js",
+    "groupTitle": "CmContactHasItems"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm_contact_has_items/{id}",
+    "title": "Gets a single CmContactHasItem",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_contact_has_items/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowCmContactHasItems",
+    "group": "CmContactHasItems",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContactHasItem/index.js",
+    "groupTitle": "CmContactHasItems"
+  },
+  {
+    "type": "put",
+    "url": "/api/cm_contact_has_items/{id}",
+    "title": "Update an existing CmContactHasItem",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_contact_has_items/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateCmContactHasItems",
+    "group": "CmContactHasItems",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContactHasItem/index.js",
+    "groupTitle": "CmContactHasItems"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm_contact_has_phones",
+    "title": "Creates a new CmContactHasPhone",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_contact_has_phones -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateCmContactHasPhones",
+    "group": "CmContactHasPhones",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "CmContactId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContactHasPhone/index.js",
+    "groupTitle": "CmContactHasPhones"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cm_contact_has_phones/{id}",
+    "title": "Deletes a CmContactHasPhone",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_contact_has_phones/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteCmContactHasPhones",
+    "group": "CmContactHasPhones",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContactHasPhone/index.js",
+    "groupTitle": "CmContactHasPhones"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm_contact_has_phones",
+    "title": "Gets a list of CmContactHasPhones",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_contact_has_phones -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetCmContactHasPhones",
+    "group": "CmContactHasPhones",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>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_contact_has_phones?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning 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_contact_has_phones?name=john.doe,jane.miller</code></p> <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_contact_has_phones?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A 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_contact_has_phones?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result 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_contact_has_phones?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContactHasPhone/index.js",
+    "groupTitle": "CmContactHasPhones"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm_contact_has_phones/{id}",
+    "title": "Gets a single CmContactHasPhone",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_contact_has_phones/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowCmContactHasPhones",
+    "group": "CmContactHasPhones",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContactHasPhone/index.js",
+    "groupTitle": "CmContactHasPhones"
+  },
+  {
+    "type": "put",
+    "url": "/api/cm_contact_has_phones/{id}",
+    "title": "Update an existing CmContactHasPhone",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_contact_has_phones/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateCmContactHasPhones",
+    "group": "CmContactHasPhones",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContactHasPhone/index.js",
+    "groupTitle": "CmContactHasPhones"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm_hopper_additional_phones",
+    "title": "Creates a new CmHopperAdditionalPhone",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_hopper_additional_phones -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateCmHopperAdditionalPhones",
+    "group": "CmHopperAdditionalPhones",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "CmHopperId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "OrderBy",
+            "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": "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/cmHopperAdditionalPhone/index.js",
+    "groupTitle": "CmHopperAdditionalPhones"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cm_hopper_additional_phones/{id}",
+    "title": "Deletes a CmHopperAdditionalPhone",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_hopper_additional_phones/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteCmHopperAdditionalPhones",
+    "group": "CmHopperAdditionalPhones",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperAdditionalPhone/index.js",
+    "groupTitle": "CmHopperAdditionalPhones"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm_hopper_additional_phones",
+    "title": "Gets a list of CmHopperAdditionalPhones",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_hopper_additional_phones -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetCmHopperAdditionalPhones",
+    "group": "CmHopperAdditionalPhones",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>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_additional_phones?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning 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_additional_phones?name=john.doe,jane.miller</code></p> <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_additional_phones?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A 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_additional_phones?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result 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_additional_phones?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperAdditionalPhone/index.js",
+    "groupTitle": "CmHopperAdditionalPhones"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm_hopper_additional_phones/{id}",
+    "title": "Gets a single CmHopperAdditionalPhone",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_hopper_additional_phones/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowCmHopperAdditionalPhones",
+    "group": "CmHopperAdditionalPhones",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperAdditionalPhone/index.js",
+    "groupTitle": "CmHopperAdditionalPhones"
+  },
+  {
+    "type": "put",
+    "url": "/api/cm_hopper_additional_phones/{id}",
+    "title": "Update an existing CmHopperAdditionalPhone",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm_hopper_additional_phones/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateCmHopperAdditionalPhones",
+    "group": "CmHopperAdditionalPhones",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperAdditionalPhone/index.js",
+    "groupTitle": "CmHopperAdditionalPhones"
+  },
+  {
+    "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}/journey",
+    "title": "Gets customer journey",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/{id}/journey -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getJourney",
+    "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}/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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"first\"",
+              "\"second\"",
+              "\"third\""
+            ],
+            "optional": false,
+            "field": "level",
+            "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/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/contact_item_types",
+    "title": "Creates a new ContactItemType",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/contact_item_types -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateContactItemTypes",
+    "group": "ContactItemType",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "OrderBy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "rgbBackgroundColor",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/contactItemType/index.js",
+    "groupTitle": "ContactItemType"
+  },
+  {
+    "type": "delete",
+    "url": "/api/contact_item_types/{id}",
+    "title": "Deletes a ContactItemType",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/contact_item_types/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteContactItemTypes",
+    "group": "ContactItemType",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/contactItemType/index.js",
+    "groupTitle": "ContactItemType"
+  },
+  {
+    "type": "get",
+    "url": "/api/contact_item_types",
+    "title": "Gets a list of ContactItemTypes",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/contact_item_types -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetContactItemTypes",
+    "group": "ContactItemType",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/contact_item_types?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/contact_item_types?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/contact_item_types?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/contact_item_types?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/contact_item_types?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/contactItemType/index.js",
+    "groupTitle": "ContactItemType"
+  },
+  {
+    "type": "get",
+    "url": "/api/contact_item_types/{id}",
+    "title": "Gets a single ContactItemType",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/contact_item_types/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowContactItemTypes",
+    "group": "ContactItemType",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/contactItemType/index.js",
+    "groupTitle": "ContactItemType"
+  },
+  {
+    "type": "put",
+    "url": "/api/contact_item_types/{id}",
+    "title": "Update an existing ContactItemType",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/contact_item_types/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateContactItemTypes",
+    "group": "ContactItemType",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/contactItemType/index.js",
+    "groupTitle": "ContactItemType"
+  },
+  {
+    "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": false,
+            "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\"",
+              "\"picklist\""
+            ],
+            "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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"first\"",
+              "\"second\"",
+              "\"third\""
+            ],
+            "optional": false,
+            "field": "level",
+            "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/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": false,
+            "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\"",
+              "\"picklist\""
+            ],
+            "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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"first\"",
+              "\"second\"",
+              "\"third\""
+            ],
+            "optional": false,
+            "field": "level",
+            "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/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": "secondDisposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "thirdDisposition",
+            "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": "secondDisposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "thirdDisposition",
+            "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": "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}/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": "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": false,
+            "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\"",
+              "\"picklist\""
+            ],
+            "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": false,
+            "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\"",
+              "\"picklist\""
+            ],
+            "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": "Text",
+            "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": "Text",
+            "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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"first\"",
+              "\"second\"",
+              "\"third\""
+            ],
+            "optional": false,
+            "field": "level",
+            "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/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": "secondDisposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "thirdDisposition",
+            "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": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": "secondDisposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "thirdDisposition",
+            "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": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"Email\"",
+              "\"Chat\""
+            ],
+            "optional": false,
+            "field": "originChannel",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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/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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"first\"",
+              "\"second\"",
+              "\"third\""
+            ],
+            "optional": false,
+            "field": "level",
+            "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/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": "secondDisposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "thirdDisposition",
+            "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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "providerName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "providerResponse",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "providerName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "providerResponse",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": "put",
+    "url": "/api/rpc/voice/{id}/queues",
+    "title": "Updates a single VoiceQueue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/voice/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "UpdateVoiceQueues",
+    "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/:id/waitinginteractions",
+    "title": "Gets a list of openchannelQueuesIdWaitingInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/openchannel/queues/:id/waitinginteractions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "openchannelQueuesIdWaitingInteractions",
+    "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": "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": false,
+            "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\"",
+              "\"account_contact_lead\"",
+              "\"account\""
+            ],
+            "optional": true,
+            "field": "moduleSearch",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"nothing\"",
+              "\"contact\"",
+              "\"lead\"",
+              "\"account\""
+            ],
+            "optional": true,
+            "field": "moduleCreate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "leadId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "additionalSearchAccount",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "additionalSearchContact",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "additionalSearchLead",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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\"",
+              "\"picklist\""
+            ],
+            "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": false,
+            "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\"",
+              "\"picklist\""
+            ],
+            "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/now",
+    "title": "Get Server Current Date",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/now -v -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDate",
+    "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}/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\"",
+              "\"bandwidth\"",
+              "\"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": "applicationId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "accountId",
+            "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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"first\"",
+              "\"second\"",
+              "\"third\""
+            ],
+            "optional": false,
+            "field": "level",
+            "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/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": "secondDisposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "thirdDisposition",
+            "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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "providerName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "providerResponse",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "providerName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "providerResponse",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "providerName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "providerResponse",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "savedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "publishedAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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}",
+    "title": "Delete recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/recordings/{id} -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": false,
+            "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\"",
+              "\"picklist\""
+            ],
+            "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/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/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/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/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/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/userNotifications",
+    "title": "Send notification to user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userNotifications -d '{\"text\": \"Hello!\", \"TemplateId\": 1}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Send",
+    "group": "UserNotifications",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userNotification/index.js",
+    "groupTitle": "UserNotifications"
+  },
+  {
+    "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": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "privacyEnabled",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "downloadAttachments",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "downloadCallySquareRecordings",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "downloadContactManagerLists",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "downloadJscriptySessions",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "downloadOmnichannelInteractions",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "downloadScreenRecordings",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "downloadVoiceRecordings",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": "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": "post",
+    "url": "/api/users/create_many",
+    "title": "Create Users",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/create_many -d '[{\"name\": \"john.doe\", \"role\": \"user\", \"...\": \"...\"}]' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "bulkCreate",
+    "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": "get",
+    "url": "/api/users/{id}/open_tabs",
+    "title": "Get interactions opened tabs",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/open_tabs -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getOpenTabs",
+    "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/presence",
+    "title": "Gets agent presence",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/presence -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getPresence",
+    "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": true,
+            "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": "userSecondDisposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "userThirdDisposition",
+            "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": "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": "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": "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/describe",
+    "title": "Gets table info about Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/transfers/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeTransfer_Reports",
+    "group": "Voice_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/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": false,
+            "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\"",
+              "\"picklist\""
+            ],
+            "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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"first\"",
+              "\"second\"",
+              "\"third\""
+            ],
+            "optional": false,
+            "field": "level",
+            "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/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": "secondDisposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "thirdDisposition",
+            "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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "providerName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "providerResponse",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "providerName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "providerResponse",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>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": false,
+            "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\"",
+              "\"picklist\""
+            ],
+            "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": false,
+            "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\"",
+              "\"picklist\""
+            ],
+            "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 22e6f60..344f6ab 100644
--- a/apidoc/api_project.js
+++ b/apidoc/api_project.js
@@ -1 +1,24 @@
-define({
  "name": "xCALLY Motion API",
  "version": "2.5.30",
  "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": "2021-05-28T09:40:18.101Z",
    "url": "http://apidocjs.com",
    "version": "0.19.0"
  }
});
+define({
+  "name": "xCALLY Motion API",
+  "version": "2.5.31",
+  "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": "2021-07-07T08:59:45.090Z",
+    "url": "http://apidocjs.com",
+    "version": "0.24.0"
+  }
+});
diff --git a/apidoc/api_project.json b/apidoc/api_project.json
index e757257..7ad75b5 100644
--- a/apidoc/api_project.json
+++ b/apidoc/api_project.json
@@ -1 +1,24 @@
-{
  "name": "xCALLY Motion API",
  "version": "2.5.30",
  "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": "2021-05-28T09:40:18.101Z",
    "url": "http://apidocjs.com",
    "version": "0.19.0"
  }
}
+{
+  "name": "xCALLY Motion API",
+  "version": "2.5.31",
+  "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": "2021-07-07T08:59:45.090Z",
+    "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 98177d3..fde2759 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.5.30",
+  "version": "2.5.31",
   "description": "xCALLY Motion is the new Realtime asynchronous solution for your multichannel contact center over Asterisk.",
   "main": "server/app.js",
   "engines": {
diff --git a/public/app/main/apps/chat/i18n/en.json b/public/app/main/apps/chat/i18n/en.json
index c7aabfa..3f59310 100644
--- a/public/app/main/apps/chat/i18n/en.json
+++ b/public/app/main/apps/chat/i18n/en.json
@@ -8,6 +8,9 @@
 		"VIDAOOESCALATION": "Start Video Call",
 		"VIDAOOAPIKEY": "Vidaoo Api Key",
 		"VIDAOOSESSION": "Start Video Call",
+		"VIDAOOTOPIC":"Vidaoo Topic",
+		"VIDAOONOTE":"Vidaoo Note",
+		"VIDAOOMETADATA":"Vidaoo Metadata",
 		"VIDEO": "Video",
 		"VIDAOO": "Vidaoo",
 		"EDIT_AMAZONLEX": "Edit Amazon Lex",
@@ -179,26 +182,12 @@
 		"VALUE": "Value",
 		"MANDATORYDISPOSITION": "Mandatory disposition",
 		"MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled",
-        "SERVICEID": "Service ID",
-        "CHANNELID": "Channel ID",
-        "EDIT_TVOX": "Edit TVox",
-        "SERVICENAME": "Service name",
-        "TVOX": "TVox",
-        "TVOXURL": "TVox IP URL",
-        "TVOXIP": "TVox IP Address",
-        "TVOXUSERNAME": "TVox Username",
-        "TVOXPASSWD": "TVox Password",
-        "TVOXLOGINURL":"TVox Login REST Url",
-        "TVOXSESSIONURL":"TVox Session REST Url",
-        "MOTIONURLONRING":"Motion URL On Ring",
-        "MOTIONURLONANSWER":"Motion URL On Answer",
-        "MOTIONTITLE":"Motion Title",
-        "MOTIONURL":"Motion URL",
 		"ERRORS": {
 			"PROJECTID_REQUIRED": "Mandatory Field",
 			"CLIENTEMAIL_REQUIRED": "Mandatory Field",
 			"PRIVATEKEY_REQUIRED": "Mandatory Field",
 			"VIDAOOAPIKEY_REQUIRED": "Mandatory Field",
+			"VIDAOOTOPIC_REQUIRED": "Mandatory Field",
 			"BOTNAME_REQUIRED": "Mandatory Field",
 			"SECRETACCESSKEY_REQUIRED": "Mandatory Field",
 			"ACCESSKEYID_REQUIRED": "Mandatory Field",
diff --git a/public/app/main/apps/chat/i18n/it.json b/public/app/main/apps/chat/i18n/it.json
index 07e0432..0c50193 100644
--- a/public/app/main/apps/chat/i18n/it.json
+++ b/public/app/main/apps/chat/i18n/it.json
@@ -3,6 +3,9 @@
 		"VIDAOOESCALATION": "Avvia videochiamata",
 		"VIDAOOAPIKEY": "Vidaoo Api Key",
 		"VIDAOOSESSION": "Avvia videochiamata",
+		"VIDAOOTOPIC":"Vidaoo Topic",
+		"VIDAOONOTE":"Vidaoo Note",
+		"VIDAOOMETADATA":"Vidaoo Metadata",
 		"EDIT_AMAZONLEX": "Modifica Amazon Lex",
 		"AMAZONLEX": "Amazon Lex",
 		"ACCESSKEYID": "Access Key ID",
@@ -138,6 +141,7 @@
 		"WEBSITESCRIPT": "Script",
 		"ERRORS": {
 			"VIDAOOAPIKEY_REQUIRED": "Campo obbligatorio",
+			"VIDAOOTOPIC_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",
diff --git a/public/app/main/apps/staff/i18n/ar.json b/public/app/main/apps/staff/i18n/ar.json
index acab22a..c02c548 100644
--- a/public/app/main/apps/staff/i18n/ar.json
+++ b/public/app/main/apps/staff/i18n/ar.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "رابط WhatsApp",
 		"WHATSAPPCAPACITY": "سعة موصل WhatsApp",
 		"MASK_SENSITIVE_DATA": "إخفاء البيانات الحساسة",
-		"WSS_PORT": "منفذ WSS"
+		"WSS_PORT": "منفذ WSS",
+		"ATTACHMENTS": "المرفقات",
+		"CALLYSQUARE_RECORDINGS": "تسجيلات كالي سكوير",
+		"CONTACT_MANAGER_LISTS": "قوائم مدير الاتصال",
+		"DOWNLOADS": "التحميلات",
+		"DOWNLOAD_PERMISSIONS": "تنزيل الأذونات",
+		"JSCRIPTY_SESSIONS": "جلسات Jscripty",
+		"OMNICHANNEL_INTERACTIONS": "تفاعلات Omnichannel",
+		"SCREEN_RECORDINGS": "تسجيلات الشاشة",
+		"VOICE_RECORDINGS": "التسجيلات الصوتية"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/cs.json b/public/app/main/apps/staff/i18n/cs.json
index 1629d4f..80b8d7c 100644
--- a/public/app/main/apps/staff/i18n/cs.json
+++ b/public/app/main/apps/staff/i18n/cs.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "WhatsApp Connector",
 		"WHATSAPPCAPACITY": "Kapacita konektoru WhatsApp",
 		"MASK_SENSITIVE_DATA": "Maskovat citlivá data",
-		"WSS_PORT": "Port WSS"
+		"WSS_PORT": "Port WSS",
+		"ATTACHMENTS": "Přílohy",
+		"CALLYSQUARE_RECORDINGS": "Cally Square Recordings",
+		"CONTACT_MANAGER_LISTS": "Seznamy kontaktních manažerů",
+		"DOWNLOADS": "Soubory ke stažení",
+		"DOWNLOAD_PERMISSIONS": "Stáhnout oprávnění",
+		"JSCRIPTY_SESSIONS": "Jscripty Sessions",
+		"OMNICHANNEL_INTERACTIONS": "Omnikanálové interakce",
+		"SCREEN_RECORDINGS": "Záznamy z obrazovky",
+		"VOICE_RECORDINGS": "Hlasové nahrávky"
 	}
 }
\ 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 b10e45f..7f01759 100644
--- a/public/app/main/apps/staff/i18n/da.json
+++ b/public/app/main/apps/staff/i18n/da.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "WhatsApp-stik",
 		"WHATSAPPCAPACITY": "WhatsApp-konnektorkapacitet",
 		"MASK_SENSITIVE_DATA": "Maskefølsomme data",
-		"WSS_PORT": "WSS-port"
+		"WSS_PORT": "WSS-port",
+		"ATTACHMENTS": "Vedhæftede filer",
+		"CALLYSQUARE_RECORDINGS": "Cally Square optagelser",
+		"CONTACT_MANAGER_LISTS": "Kontaktlister over kontaktpersoner",
+		"DOWNLOADS": "Downloads",
+		"DOWNLOAD_PERMISSIONS": "Download tilladelser",
+		"JSCRIPTY_SESSIONS": "Jscripty-sessioner",
+		"OMNICHANNEL_INTERACTIONS": "Omnichannel-interaktioner",
+		"SCREEN_RECORDINGS": "Skærmoptagelser",
+		"VOICE_RECORDINGS": "Stemmeoptagelser"
 	}
 }
\ 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 cf74789..6577c89 100644
--- a/public/app/main/apps/staff/i18n/de.json
+++ b/public/app/main/apps/staff/i18n/de.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "WhatsApp Connector",
 		"WHATSAPPCAPACITY": "WhatsApp Connector-Kapazität",
 		"MASK_SENSITIVE_DATA": "Sensitive Daten maskieren",
-		"WSS_PORT": "WSS-Port"
+		"WSS_PORT": "WSS-Port",
+		"ATTACHMENTS": "Anhänge",
+		"CALLYSQUARE_RECORDINGS": "Cally Square-Aufnahmen",
+		"CONTACT_MANAGER_LISTS": "Kontaktmanagerlisten",
+		"DOWNLOADS": "Downloads",
+		"DOWNLOAD_PERMISSIONS": "Download-Berechtigungen",
+		"JSCRIPTY_SESSIONS": "Jscripty-Sitzungen",
+		"OMNICHANNEL_INTERACTIONS": "Omnichannel-Interaktionen",
+		"SCREEN_RECORDINGS": "Bildschirmaufnahmen",
+		"VOICE_RECORDINGS": "Sprachaufnahmen"
 	}
 }
\ 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 5afd9f4..370af87 100644
--- a/public/app/main/apps/staff/i18n/en.json
+++ b/public/app/main/apps/staff/i18n/en.json
@@ -359,6 +359,15 @@
 		"PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "You are not allowed to access the selected section",
 		"PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "You are not allowed to create the resource",
 		"MASK_SENSITIVE_DATA": "Mask Sensitive Data",
-		"WSS_PORT": "WSS Port"
+		"WSS_PORT": "WSS Port",
+		"DOWNLOADS": "Downloads",
+		"DOWNLOAD_PERMISSIONS": "Download Permissions",
+		"VOICE_RECORDINGS": "Voice Recordings",
+		"OMNICHANNEL_INTERACTIONS": "Omnichannel Interactions",
+		"ATTACHMENTS": "Attachments",
+		"SCREEN_RECORDINGS": "Screen Recordings",
+		"JSCRIPTY_SESSIONS": "Jscripty Sessions",
+		"CONTACT_MANAGER_LISTS": "Contact Manager Lists",
+		"CALLYSQUARE_RECORDINGS": "Cally Square Recordings"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/es.json b/public/app/main/apps/staff/i18n/es.json
index 34064dc..a2f0017 100644
--- a/public/app/main/apps/staff/i18n/es.json
+++ b/public/app/main/apps/staff/i18n/es.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "Conector de WhatsApp",
 		"WHATSAPPCAPACITY": "Capacidad del conector de WhatsApp",
 		"MASK_SENSITIVE_DATA": "Enmascarar datos sensibles",
-		"WSS_PORT": "Puerto WSS"
+		"WSS_PORT": "Puerto WSS",
+		"ATTACHMENTS": "Archivos adjuntos",
+		"CALLYSQUARE_RECORDINGS": "Grabaciones de Cally Square",
+		"CONTACT_MANAGER_LISTS": "Listas del administrador de contactos",
+		"DOWNLOADS": "Descargas",
+		"DOWNLOAD_PERMISSIONS": "Permisos de descarga",
+		"JSCRIPTY_SESSIONS": "Sesiones de Jscripty",
+		"OMNICHANNEL_INTERACTIONS": "Interacciones omnicanal",
+		"SCREEN_RECORDINGS": "Grabaciones de pantalla",
+		"VOICE_RECORDINGS": "Grabaciones de voz"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/et.json b/public/app/main/apps/staff/i18n/et.json
index 1842220..ca9aacb 100644
--- a/public/app/main/apps/staff/i18n/et.json
+++ b/public/app/main/apps/staff/i18n/et.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "WhatsApp-pistik",
 		"WHATSAPPCAPACITY": "WhatsApp-pistiku maht",
 		"MASK_SENSITIVE_DATA": "Maski tundlikud andmed",
-		"WSS_PORT": "WSS-port"
+		"WSS_PORT": "WSS-port",
+		"ATTACHMENTS": "Manused",
+		"CALLYSQUARE_RECORDINGS": "Cally Square salvestused",
+		"CONTACT_MANAGER_LISTS": "Kontaktihalduri loendid",
+		"DOWNLOADS": "Allalaadimised",
+		"DOWNLOAD_PERMISSIONS": "Allalaadimisõigused",
+		"JSCRIPTY_SESSIONS": "Jscripty seansid",
+		"OMNICHANNEL_INTERACTIONS": "Omikanalilised koostoimed",
+		"SCREEN_RECORDINGS": "Ekraanisalvestused",
+		"VOICE_RECORDINGS": "Helisalvestised"
 	}
 }
\ 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 44312c0..de2e326 100644
--- a/public/app/main/apps/staff/i18n/fa.json
+++ b/public/app/main/apps/staff/i18n/fa.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "اتصال واتساپ",
 		"WHATSAPPCAPACITY": "ظرفیت اتصال WhatsApp",
 		"MASK_SENSITIVE_DATA": "ماسک داده های حساس",
-		"WSS_PORT": "بندر WSS"
+		"WSS_PORT": "بندر WSS",
+		"ATTACHMENTS": "پیوست ها",
+		"CALLYSQUARE_RECORDINGS": "ضبط های Cally Square",
+		"CONTACT_MANAGER_LISTS": "با لیست های مدیر تماس بگیرید",
+		"DOWNLOADS": "بارگیری ها",
+		"DOWNLOAD_PERMISSIONS": "مجوزها را بارگیری کنید",
+		"JSCRIPTY_SESSIONS": "جلسات Jscripty",
+		"OMNICHANNEL_INTERACTIONS": "تعاملات Omnichannel",
+		"SCREEN_RECORDINGS": "ضبط صفحه",
+		"VOICE_RECORDINGS": "ضبط صدا"
 	}
 }
\ 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 bf2fd67..1cb5204 100644
--- a/public/app/main/apps/staff/i18n/fi.json
+++ b/public/app/main/apps/staff/i18n/fi.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "WhatsApp-liitin",
 		"WHATSAPPCAPACITY": "WhatsApp-liittimen kapasiteetti",
 		"MASK_SENSITIVE_DATA": "Peitä arkaluonteiset tiedot",
-		"WSS_PORT": "WSS-portti"
+		"WSS_PORT": "WSS-portti",
+		"ATTACHMENTS": "Liitteet",
+		"CALLYSQUARE_RECORDINGS": "Cally Square -tallenteet",
+		"CONTACT_MANAGER_LISTS": "Ota yhteyttä Manager -luettelot",
+		"DOWNLOADS": "Lataukset",
+		"DOWNLOAD_PERMISSIONS": "Lataa käyttöoikeudet",
+		"JSCRIPTY_SESSIONS": "Jscripty-istunnot",
+		"OMNICHANNEL_INTERACTIONS": "Omikanavaiset vuorovaikutukset",
+		"SCREEN_RECORDINGS": "Näytön nauhoitukset",
+		"VOICE_RECORDINGS": "Äänitallenteet"
 	}
 }
\ 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 9239008..3935e91 100644
--- a/public/app/main/apps/staff/i18n/fr.json
+++ b/public/app/main/apps/staff/i18n/fr.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "Connecteur WhatsApp",
 		"WHATSAPPCAPACITY": "Capacité du connecteur WhatsApp",
 		"MASK_SENSITIVE_DATA": "Masquer les données sensibles",
-		"WSS_PORT": "Port WSS"
+		"WSS_PORT": "Port WSS",
+		"ATTACHMENTS": "Pièces jointes",
+		"CALLYSQUARE_RECORDINGS": "Enregistrements Cally Square",
+		"CONTACT_MANAGER_LISTS": "Listes des gestionnaires de contacts",
+		"DOWNLOADS": "Téléchargements",
+		"DOWNLOAD_PERMISSIONS": "Télécharger les autorisations",
+		"JSCRIPTY_SESSIONS": "Sessions de script",
+		"OMNICHANNEL_INTERACTIONS": "Interactions omnicanales",
+		"SCREEN_RECORDINGS": "Enregistrements d'écran",
+		"VOICE_RECORDINGS": "Enregistrements vocaux"
 	}
 }
\ 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 6738fc6..e1edf37 100644
--- a/public/app/main/apps/staff/i18n/he.json
+++ b/public/app/main/apps/staff/i18n/he.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "מחבר WhatsApp",
 		"WHATSAPPCAPACITY": "קיבולת מחבר WhatsApp",
 		"MASK_SENSITIVE_DATA": "נתונים רגישים למסכה",
-		"WSS_PORT": "נמל WSS"
+		"WSS_PORT": "נמל WSS",
+		"ATTACHMENTS": "קבצים מצורפים",
+		"CALLYSQUARE_RECORDINGS": "הקלטות כיכר קלי",
+		"CONTACT_MANAGER_LISTS": "רשימות מנהל קשר",
+		"DOWNLOADS": "הורדות",
+		"DOWNLOAD_PERMISSIONS": "הורד הרשאות",
+		"JSCRIPTY_SESSIONS": "מושבי כתבי יד",
+		"OMNICHANNEL_INTERACTIONS": "אינטראקציות בכל ערוץ",
+		"SCREEN_RECORDINGS": "הקלטות מסך",
+		"VOICE_RECORDINGS": "הקלטות קוליות"
 	}
 }
\ 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 e5ae06e..802e632 100644
--- a/public/app/main/apps/staff/i18n/hi.json
+++ b/public/app/main/apps/staff/i18n/hi.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "WhatsApp कनेक्टर",
 		"WHATSAPPCAPACITY": "WhatsApp कनेक्टर क्षमता",
 		"MASK_SENSITIVE_DATA": "मास्क सेंसिटिव डेटा",
-		"WSS_PORT": "डब्ल्यूएसएस पोर्ट"
+		"WSS_PORT": "डब्ल्यूएसएस पोर्ट",
+		"ATTACHMENTS": "संलग्नक",
+		"CALLYSQUARE_RECORDINGS": "कैली स्क्वायर रिकॉर्डिंग",
+		"CONTACT_MANAGER_LISTS": "संपर्क प्रबंधक सूचियाँ",
+		"DOWNLOADS": "डाउनलोड",
+		"DOWNLOAD_PERMISSIONS": "अनुमतियां डाउनलोड करें",
+		"JSCRIPTY_SESSIONS": "जेस्क्रिप्टी सत्र",
+		"OMNICHANNEL_INTERACTIONS": "ओमनीचैनल इंटरैक्शन",
+		"SCREEN_RECORDINGS": "स्क्रीन रिकॉर्डिंग",
+		"VOICE_RECORDINGS": "वॉयस रिकॉर्डिंग"
 	}
 }
\ 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 6d8866e..87dad52 100644
--- a/public/app/main/apps/staff/i18n/id.json
+++ b/public/app/main/apps/staff/i18n/id.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "Konektor WhatsApp",
 		"WHATSAPPCAPACITY": "Kapasitas Konektor WhatsApp",
 		"MASK_SENSITIVE_DATA": "Menyembunyikan Data Sensitif",
-		"WSS_PORT": "Pelabuhan AMPL"
+		"WSS_PORT": "Pelabuhan AMPL",
+		"ATTACHMENTS": "lampiran",
+		"CALLYSQUARE_RECORDINGS": "Rekaman Cally Square",
+		"CONTACT_MANAGER_LISTS": "Daftar Manajer Kontak",
+		"DOWNLOADS": "Unduhan",
+		"DOWNLOAD_PERMISSIONS": "Unduh Izin",
+		"JSCRIPTY_SESSIONS": "Sesi Jscripty",
+		"OMNICHANNEL_INTERACTIONS": "Interaksi Multisaluran",
+		"SCREEN_RECORDINGS": "Rekaman Layar",
+		"VOICE_RECORDINGS": "Rekaman Suara"
 	}
 }
\ 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 4c176f5..e3ec6cc 100644
--- a/public/app/main/apps/staff/i18n/it.json
+++ b/public/app/main/apps/staff/i18n/it.json
@@ -360,6 +360,15 @@
 		"WHATSAPP": "Connettore WhatsApp",
 		"WHATSAPPCAPACITY": "Capacità del connettore WhatsApp",
 		"MASK_SENSITIVE_DATA": "Maschera Dati Sensibili",
-		"WSS_PORT": "Porta WSS"
+		"WSS_PORT": "Porta WSS",
+		"DOWNLOADS": "Downloads",
+		"DOWNLOAD_PERMISSIONS": "Permessi Download",
+		"VOICE_RECORDINGS": "Registrazioni Voce",
+		"OMNICHANNEL_INTERACTIONS": "Interazioni Omnichannel",
+		"ATTACHMENTS": "Allegati",
+		"SCREEN_RECORDINGS": "Registrazioni Screen",
+		"JSCRIPTY_SESSIONS": "Sessioni Jscripty",
+		"CONTACT_MANAGER_LISTS": "Liste Manager Contatti",
+		"CALLYSQUARE_RECORDINGS": "Registrazioni Cally Square"
 	}
 }
\ 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 c38a0db..9c78eca 100644
--- a/public/app/main/apps/staff/i18n/ja.json
+++ b/public/app/main/apps/staff/i18n/ja.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "WhatsAppコネクタ",
 		"WHATSAPPCAPACITY": "WhatsAppコネクタ容量",
 		"MASK_SENSITIVE_DATA": "機密データをマスクする",
-		"WSS_PORT": "WSSポート"
+		"WSS_PORT": "WSSポート",
+		"ATTACHMENTS": "添付ファイル",
+		"CALLYSQUARE_RECORDINGS": "キャリースクエアレコーディング",
+		"CONTACT_MANAGER_LISTS": "コンタクトマネージャーリスト",
+		"DOWNLOADS": "ダウンロード",
+		"DOWNLOAD_PERMISSIONS": "ダウンロード許可",
+		"JSCRIPTY_SESSIONS": "Jscriptyセッション",
+		"OMNICHANNEL_INTERACTIONS": "オムニチャネルの相互作用",
+		"SCREEN_RECORDINGS": "スクリーンレコーディング",
+		"VOICE_RECORDINGS": "音声録音"
 	}
 }
\ 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 ec9e419..6c279f6 100644
--- a/public/app/main/apps/staff/i18n/ko.json
+++ b/public/app/main/apps/staff/i18n/ko.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "WhatsApp 커넥터",
 		"WHATSAPPCAPACITY": "WhatsApp 커넥터 용량",
 		"MASK_SENSITIVE_DATA": "민감한 데이터 마스킹",
-		"WSS_PORT": "WSS 포트"
+		"WSS_PORT": "WSS 포트",
+		"ATTACHMENTS": "첨부 파일",
+		"CALLYSQUARE_RECORDINGS": "Cally Square 녹음",
+		"CONTACT_MANAGER_LISTS": "연락처 관리자 목록",
+		"DOWNLOADS": "다운로드",
+		"DOWNLOAD_PERMISSIONS": "권한 다운로드",
+		"JSCRIPTY_SESSIONS": "Jscripty 세션",
+		"OMNICHANNEL_INTERACTIONS": "옴니 채널 상호 작용",
+		"SCREEN_RECORDINGS": "화면 녹화",
+		"VOICE_RECORDINGS": "음성 녹음"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/lt.json b/public/app/main/apps/staff/i18n/lt.json
index d40251f..c0b7055 100644
--- a/public/app/main/apps/staff/i18n/lt.json
+++ b/public/app/main/apps/staff/i18n/lt.json
@@ -359,6 +359,15 @@
 		"WHATSAPP": "„WhatsApp“ jungtis",
 		"WHATSAPPCAPACITY": "„WhatsApp“ jungties talpa",
 		"MASK_SENSITIVE_DATA": "Jautrūs kaukės duomenys",
-		"WSS_PORT": "WSS uostas"
+		"WSS_PORT": "WSS uostas",
+		"ATTACHMENTS": "Priedai",
+		"CALLYSQUARE_RECORDINGS": "„Cally Square“ įrašai",
+		"CONTACT_MANAGER_LISTS": "Kontaktų tvarkytuvės sąrašai",
+		"DOWNLOADS": "Atsisiuntimai",
+		"DOWNLOAD_PERMISSIONS": "Atsisiųsti leidimus",
+		"JSCRIPTY_SESSIONS": "Jscripty sesijos",
+		"OMNICHANNEL_INTERACTIONS": "„Omnichannel“ sąveika",
+		"SCREEN_RECORDINGS": "Ekrano įrašai",
+		"VOICE_RECORDINGS": "Balso įrašai"
 	}
 }
\ 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 09c0a5e..06809dc 100644
--- a/public/app/main/apps/staff/i18n/lv.json
+++ b/public/app/main/apps/staff/i18n/lv.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "WhatsApp savienotājs",
 		"WHATSAPPCAPACITY": "WhatsApp savienotāja jauda",
 		"MASK_SENSITIVE_DATA": "Masku sensitīvie dati",
-		"WSS_PORT": "WSS osta"
+		"WSS_PORT": "WSS osta",
+		"ATTACHMENTS": "Pielikumi",
+		"CALLYSQUARE_RECORDINGS": "Kallija laukuma ieraksti",
+		"CONTACT_MANAGER_LISTS": "Kontaktu pārvaldnieku saraksti",
+		"DOWNLOADS": "Lejupielādes",
+		"DOWNLOAD_PERMISSIONS": "Lejupielādes atļaujas",
+		"JSCRIPTY_SESSIONS": "Jscripty sesijas",
+		"OMNICHANNEL_INTERACTIONS": "Visu kanālu mijiedarbība",
+		"SCREEN_RECORDINGS": "Ekrāna ieraksti",
+		"VOICE_RECORDINGS": "Balss ieraksti"
 	}
 }
\ 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 206175f..804f7e2 100644
--- a/public/app/main/apps/staff/i18n/nl.json
+++ b/public/app/main/apps/staff/i18n/nl.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "WhatsApp-aansluiting",
 		"WHATSAPPCAPACITY": "WhatsApp Connector Capaciteit",
 		"MASK_SENSITIVE_DATA": "Gevoelige gegevens maskeren",
-		"WSS_PORT": "WSS-poort"
+		"WSS_PORT": "WSS-poort",
+		"ATTACHMENTS": "Bijlagen",
+		"CALLYSQUARE_RECORDINGS": "Cally Square-opnamen",
+		"CONTACT_MANAGER_LISTS": "Lijsten met contactmanagers",
+		"DOWNLOADS": "Downloads",
+		"DOWNLOAD_PERMISSIONS": "Downloadmachtigingen",
+		"JSCRIPTY_SESSIONS": "Jscripty-sessies",
+		"OMNICHANNEL_INTERACTIONS": "Omnichannel-interacties",
+		"SCREEN_RECORDINGS": "Schermopnames",
+		"VOICE_RECORDINGS": "Spraakopnamen"
 	}
 }
\ 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 bf8d4d9..99457cf 100644
--- a/public/app/main/apps/staff/i18n/no.json
+++ b/public/app/main/apps/staff/i18n/no.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "WhatsApp-kontakt",
 		"WHATSAPPCAPACITY": "WhatsApp-kontaktskapasitet",
 		"MASK_SENSITIVE_DATA": "Mask Sensitive Data",
-		"WSS_PORT": "WSS-port"
+		"WSS_PORT": "WSS-port",
+		"ATTACHMENTS": "Vedlegg",
+		"CALLYSQUARE_RECORDINGS": "Cally Square Recordings",
+		"CONTACT_MANAGER_LISTS": "Kontaktlister",
+		"DOWNLOADS": "Nedlastinger",
+		"DOWNLOAD_PERMISSIONS": "Last ned tillatelser",
+		"JSCRIPTY_SESSIONS": "Jscripty Sessions",
+		"OMNICHANNEL_INTERACTIONS": "Omnichannel-interaksjoner",
+		"SCREEN_RECORDINGS": "Skjermopptak",
+		"VOICE_RECORDINGS": "Stemmeopptak"
 	}
 }
\ 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 eb04497..7526cb6 100644
--- a/public/app/main/apps/staff/i18n/pl.json
+++ b/public/app/main/apps/staff/i18n/pl.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "Złącze WhatsApp",
 		"WHATSAPPCAPACITY": "Pojemność złącza WhatsApp",
 		"MASK_SENSITIVE_DATA": "Dane wrażliwe na maskowanie",
-		"WSS_PORT": "Port WSS"
+		"WSS_PORT": "Port WSS",
+		"ATTACHMENTS": "Załączniki",
+		"CALLYSQUARE_RECORDINGS": "Cally Square Nagrania",
+		"CONTACT_MANAGER_LISTS": "Listy menedżera kontaktów",
+		"DOWNLOADS": "Pliki do pobrania",
+		"DOWNLOAD_PERMISSIONS": "Uprawnienia do pobierania",
+		"JSCRIPTY_SESSIONS": "Sesje Jscripty",
+		"OMNICHANNEL_INTERACTIONS": "Interakcje wielokanałowe",
+		"SCREEN_RECORDINGS": "Nagrania ekranu",
+		"VOICE_RECORDINGS": "Nagrania głosowe"
 	}
 }
\ 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 dac67cf..79845b5 100644
--- a/public/app/main/apps/staff/i18n/pt-BR.json
+++ b/public/app/main/apps/staff/i18n/pt-BR.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "Conector WhatsApp",
 		"WHATSAPPCAPACITY": "Capacidade do conector WhatsApp",
 		"MASK_SENSITIVE_DATA": "Máscara de dados sensíveis",
-		"WSS_PORT": "Porta WSS"
+		"WSS_PORT": "Porta WSS",
+		"ATTACHMENTS": "Anexos",
+		"CALLYSQUARE_RECORDINGS": "Gravações da Cally Square",
+		"CONTACT_MANAGER_LISTS": "Listas de gerenciadores de contatos",
+		"DOWNLOADS": "Transferências",
+		"DOWNLOAD_PERMISSIONS": "Permissões de download",
+		"JSCRIPTY_SESSIONS": "Sessões Jscripty",
+		"OMNICHANNEL_INTERACTIONS": "Interações Omnichannel",
+		"SCREEN_RECORDINGS": "Gravações de tela",
+		"VOICE_RECORDINGS": "Gravações de Voz"
 	}
 }
\ 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 16f8b0e..3967e3e 100644
--- a/public/app/main/apps/staff/i18n/pt-PT.json
+++ b/public/app/main/apps/staff/i18n/pt-PT.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "Conector WhatsApp",
 		"WHATSAPPCAPACITY": "Capacidade do conector WhatsApp",
 		"MASK_SENSITIVE_DATA": "Máscara de dados sensíveis",
-		"WSS_PORT": "Porta WSS"
+		"WSS_PORT": "Porta WSS",
+		"ATTACHMENTS": "Anexos",
+		"CALLYSQUARE_RECORDINGS": "Gravações da Cally Square",
+		"CONTACT_MANAGER_LISTS": "Listas de gerenciadores de contatos",
+		"DOWNLOADS": "Transferências",
+		"DOWNLOAD_PERMISSIONS": "Permissões de download",
+		"JSCRIPTY_SESSIONS": "Sessões Jscripty",
+		"OMNICHANNEL_INTERACTIONS": "Interações Omnichannel",
+		"SCREEN_RECORDINGS": "Gravações de tela",
+		"VOICE_RECORDINGS": "Gravações de Voz"
 	}
 }
\ 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 75941c0..b670da0 100644
--- a/public/app/main/apps/staff/i18n/ru.json
+++ b/public/app/main/apps/staff/i18n/ru.json
@@ -362,6 +362,15 @@
 		"WHATSAPP": "Коннектор WhatsApp",
 		"WHATSAPPCAPACITY": "Емкость разъема WhatsApp",
 		"MASK_SENSITIVE_DATA": "Маскировать конфиденциальные данные",
-		"WSS_PORT": "Порт WSS"
+		"WSS_PORT": "Порт WSS",
+		"ATTACHMENTS": "Вложения",
+		"CALLYSQUARE_RECORDINGS": "Cally Square Recordings",
+		"CONTACT_MANAGER_LISTS": "Списки менеджеров контактов",
+		"DOWNLOADS": "Загрузки",
+		"DOWNLOAD_PERMISSIONS": "Разрешения на скачивание",
+		"JSCRIPTY_SESSIONS": "Сессии Jscripty",
+		"OMNICHANNEL_INTERACTIONS": "Омниканальные взаимодействия",
+		"SCREEN_RECORDINGS": "Записи с экрана",
+		"VOICE_RECORDINGS": "Голосовые записи"
 	}
 }
\ 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 e13341d..c8914b7 100644
--- a/public/app/main/apps/staff/i18n/sv.json
+++ b/public/app/main/apps/staff/i18n/sv.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "WhatsApp-anslutning",
 		"WHATSAPPCAPACITY": "WhatsApp-anslutningskapacitet",
 		"MASK_SENSITIVE_DATA": "Mask Sensitive Data",
-		"WSS_PORT": "WSS-port"
+		"WSS_PORT": "WSS-port",
+		"ATTACHMENTS": "Bilagor",
+		"CALLYSQUARE_RECORDINGS": "Cally Square inspelningar",
+		"CONTACT_MANAGER_LISTS": "Kontakta chefslistor",
+		"DOWNLOADS": "Nedladdningar",
+		"DOWNLOAD_PERMISSIONS": "Ladda ner behörigheter",
+		"JSCRIPTY_SESSIONS": "Jscripty-sessioner",
+		"OMNICHANNEL_INTERACTIONS": "Omnichannel-interaktioner",
+		"SCREEN_RECORDINGS": "Skärminspelningar",
+		"VOICE_RECORDINGS": "Röstinspelningar"
 	}
 }
\ 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 92b93fd..e142ce4 100644
--- a/public/app/main/apps/staff/i18n/tr.json
+++ b/public/app/main/apps/staff/i18n/tr.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "WhatsApp Bağlayıcısı",
 		"WHATSAPPCAPACITY": "WhatsApp Bağlayıcı Kapasitesi",
 		"MASK_SENSITIVE_DATA": "Hassas Verileri Maskele",
-		"WSS_PORT": "WSS Bağlantı Noktası"
+		"WSS_PORT": "WSS Bağlantı Noktası",
+		"ATTACHMENTS": "ekler",
+		"CALLYSQUARE_RECORDINGS": "Cally Square Kayıtları",
+		"CONTACT_MANAGER_LISTS": "Kişi Yöneticisi Listeleri",
+		"DOWNLOADS": "İndirilenler",
+		"DOWNLOAD_PERMISSIONS": "İzinleri İndir",
+		"JSCRIPTY_SESSIONS": "Jscript Oturumları",
+		"OMNICHANNEL_INTERACTIONS": "Çok Kanallı Etkileşimler",
+		"SCREEN_RECORDINGS": "Ekran Kayıtları",
+		"VOICE_RECORDINGS": "Ses Kayıtları"
 	}
 }
\ 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 9375a4e..26a3890 100644
--- a/public/app/main/apps/staff/i18n/zh-CN.json
+++ b/public/app/main/apps/staff/i18n/zh-CN.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "WhatsApp连接器",
 		"WHATSAPPCAPACITY": "WhatsApp连接器容量",
 		"MASK_SENSITIVE_DATA": "遮罩敏感数据",
-		"WSS_PORT": "WSS端口"
+		"WSS_PORT": "WSS端口",
+		"ATTACHMENTS": "附件",
+		"CALLYSQUARE_RECORDINGS": "卡莉广场录音",
+		"CONTACT_MANAGER_LISTS": "联系人管理器列表",
+		"DOWNLOADS": "下载",
+		"DOWNLOAD_PERMISSIONS": "下载权限",
+		"JSCRIPTY_SESSIONS": "Jscripty 会话",
+		"OMNICHANNEL_INTERACTIONS": "全渠道互动",
+		"SCREEN_RECORDINGS": "屏幕录像",
+		"VOICE_RECORDINGS": "录音"
 	}
 }
\ 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 d2edc66..6badd25 100644
--- a/public/app/main/apps/staff/i18n/zh-TW.json
+++ b/public/app/main/apps/staff/i18n/zh-TW.json
@@ -352,6 +352,15 @@
 		"WHATSAPP": "WhatsApp連接器",
 		"WHATSAPPCAPACITY": "WhatsApp連接器容量",
 		"MASK_SENSITIVE_DATA": "遮罩敏感數據",
-		"WSS_PORT": "WSS端口"
+		"WSS_PORT": "WSS端口",
+		"ATTACHMENTS": "附件",
+		"CALLYSQUARE_RECORDINGS": "卡莉廣場錄音",
+		"CONTACT_MANAGER_LISTS": "聯繫人管理器列表",
+		"DOWNLOADS": "下載",
+		"DOWNLOAD_PERMISSIONS": "下載權限",
+		"JSCRIPTY_SESSIONS": "Jscripty 會話",
+		"OMNICHANNEL_INTERACTIONS": "全渠道互動",
+		"SCREEN_RECORDINGS": "屏幕錄像",
+		"VOICE_RECORDINGS": "錄音"
 	}
 }
\ 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 6b4c188..b7f38bf 100644
--- a/public/app/main/apps/voice/i18n/ar.json
+++ b/public/app/main/apps/voice/i18n/ar.json
@@ -70,7 +70,6 @@
 			"MINANNOUNCEFREQUENCY": "أقل تردد للإعلان (مفيد عندما يتغير موضع المتصل باستمرار)",
 			"MINUTEANNOUNCE": "اختر صوتًا محددًا في الأدوات. الافتراضي = \"دقيقة\". غير محدد = لا يوجد اعلان",
 			"MINUTESANNOUNCE": "اختر صوتًا محددًا في الأدوات. الافتراضي = \"دقيقة\". غير محدد = لا يوجد اعلان",
-			"MONITORFORMAT": "يحدد تنسيق الملف المراد استخدامه عند التسجيل. إذا كان تنسيق الشاشة غير نشط ، فلن يتم تسجيل المكالمات",
 			"MUSICONHOLD": "لتعيين فئة الموسيقى المراد استخدامها لقائمة انتظار معينة",
 			"NAME": "يتم دعم الأرقام والحروف والأحرف المحددة (._) فقط",
 			"PERIODICANNOUNCE": "مجموعة من الإعلانات الدورية التي سيتم لعبها (بالترتيب)",
diff --git a/public/app/main/apps/voice/i18n/cs.json b/public/app/main/apps/voice/i18n/cs.json
index 8e68eaf..e9626f9 100644
--- a/public/app/main/apps/voice/i18n/cs.json
+++ b/public/app/main/apps/voice/i18n/cs.json
@@ -126,7 +126,6 @@
 			"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)",
diff --git a/public/app/main/apps/voice/i18n/da.json b/public/app/main/apps/voice/i18n/da.json
index bcd4802..857c65e 100644
--- a/public/app/main/apps/voice/i18n/da.json
+++ b/public/app/main/apps/voice/i18n/da.json
@@ -114,7 +114,6 @@
 			"AUTOPAUSE": "Aktiverer/deaktiverer automatisk afbrydelse af medlemmer der undlader at besvare et opkald. Hvis aktiv, skyldes det, at der holdes pause i alle køer, han er medlem af.",
 			"RINGINUSE": "Bruges til at undgå at sende opkald til medlemmer, hvis status er i brug.",
 			"TIMEOUTRESTART": "Hvis sat til Ja, nulstiller timeout for en agent at besvare hvis enten optaget eller overbelastning status modtages fra kanalen.",
-			"MONITORFORMAT": "Angiver filformatet til brug ved optagelse. Hvis skærm-format er inaktiv, vil ikke blive registreret.",
 			"CONTEXT": "Gør det muligt for en person at forlade køen ved at trykke en enkelt DTMF ciffer. Hvis en sammenhæng er specificeret, og opkalderen indtaster en række tal, som vil prøve at blive matchet i forbindelse angivet, og opkaldsplanen udførelsen fortsætter der.",
 			"SETINTERFACEVARIABLES": "Hvis sat til ja, lige inden de ringer, er forbundet med en kø-nogle variabler bliver sat(se wiki)",
 			"SETQUEUEVARIABLES": "Hvis sat til ja, lige inden de ringer, er forbundet med en anden kø og lige inden personen forlader køen nogle variabler bliver sat(se wiki)",
diff --git a/public/app/main/apps/voice/i18n/de.json b/public/app/main/apps/voice/i18n/de.json
index 641a5aa..23c80f2 100644
--- a/public/app/main/apps/voice/i18n/de.json
+++ b/public/app/main/apps/voice/i18n/de.json
@@ -114,7 +114,6 @@
 			"AUTOPAUSE": "Aktiviert/Deaktiviert die automatische Unterbrechung der Mitglieder, die es versäumen, um einen Anruf zu beantworten. Wenn aktiv, wird diese Mitgliedstaaten angehalten zu werden in allen Warteschlangen er Mitglied ist.",
 			"RINGINUSE": "Verwendet werden, um zu vermeiden, Senden von Anrufen an Mitglieder, deren Status im Einsatz ist.",
 			"TIMEOUTRESTART": "Falls auf Ja eingestellt, wird das Timeout für einen Agenten zu beantworten, wenn entweder ein Besetztzeichen oder wird mit dem Status \"Überlastung des Kanals.",
-			"MONITORFORMAT": "Gibt das Dateiformat zu verwenden, wenn die Aufnahme. Wenn der Monitor-Format deaktiviert ist, werden die Anrufe nicht aufgezeichnet werden.",
 			"CONTEXT": "Ermöglicht einem Anrufer zu beenden, die die Warteschlange durch Drücken einer einzigen Taste MFV-Ziffer. Wenn Sie einen Kontext angegeben ist und der Anrufer gibt eine Zahl, Ziffer wird versuchen, die angepasst werden können, im Rahmen festgelegt, und es wird auch weiterhin die Ausführung Nummernplan.",
 			"SETINTERFACEVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange, die einige Variablen werden(siehe wiki)",
 			"SETQUEUEVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange und kurz vor dem Anrufer die Warteschlange verlassen einige Variablen werden(siehe wiki)",
diff --git a/public/app/main/apps/voice/i18n/en.json b/public/app/main/apps/voice/i18n/en.json
index 66e5276..d4b878d 100644
--- a/public/app/main/apps/voice/i18n/en.json
+++ b/public/app/main/apps/voice/i18n/en.json
@@ -462,7 +462,7 @@
 			"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",
+			"MONITORFORMAT": "Specifies the format of the recording file. If it set to '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)",
diff --git a/public/app/main/apps/voice/i18n/es.json b/public/app/main/apps/voice/i18n/es.json
index 499d862..b0556b7 100644
--- a/public/app/main/apps/voice/i18n/es.json
+++ b/public/app/main/apps/voice/i18n/es.json
@@ -22,7 +22,6 @@
 			"MINANNOUNCEFREQUENCY": "Frecuencia mínima de anuncio (útil cuando la posición de quien llama cambia con frecuencia)",
 			"MINUTEANNOUNCE": "Elija un sonido definido en Herramientas. Predeterminado = \"minuto\". Indefinido = sin anuncio",
 			"MINUTESANNOUNCE": "Elija un sonido definido en Herramientas. Predeterminado = \"minutos\". Indefinido = sin anuncio",
-			"MONITORFORMAT": "Especifica el formato de archivo para usar al grabar. Si el formato de monitor está inactivo, las llamadas no se grabarán",
 			"MUSICONHOLD": "Establece la clase de música para usar en una cola particular",
 			"NAME": "Solo se admiten números, letras y caracteres específicos (._)",
 			"PERIODICANNOUNCE": "Conjunto de anuncios periódicos para ser reproducidos (en el orden)",
diff --git a/public/app/main/apps/voice/i18n/et.json b/public/app/main/apps/voice/i18n/et.json
index 5d5601d..166d740 100644
--- a/public/app/main/apps/voice/i18n/et.json
+++ b/public/app/main/apps/voice/i18n/et.json
@@ -126,7 +126,6 @@
 			"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)",
diff --git a/public/app/main/apps/voice/i18n/fa.json b/public/app/main/apps/voice/i18n/fa.json
index 81bbc1c..afd1249 100644
--- a/public/app/main/apps/voice/i18n/fa.json
+++ b/public/app/main/apps/voice/i18n/fa.json
@@ -114,7 +114,6 @@
 			"AUTOPAUSE": "زیرنویس ها را فعال یا غیرفعال می کند/امکان می دهد به طور خودکار از خراب شدن عيوب لزديكترلن كسانتار عضو كه از پاسخ دادن به تلفن است. اگر علل این عضو فعال را در صفهای طولانی مكث، عضو است.",
 			"RINGINUSE": "به منظور اجتناب از استفاده از ارسال فراخوان برای اعضای آن است که وضعیت مورد استفاده است.",
 			"TIMEOUTRESTART": "اگر بله، تنظیم زمان وقفه nبازنشانی نمایش را عاملي براي پاسخ گويي به هر کدام از شلوغی و تراکم است که وضعیت را از شبكه دريافت كرد.",
-			"MONITORFORMAT": "فرمت فایل را تعیین می کند، به هنگام ضبط استفاده می شود. اگر از مانیتور با فرمت غیرفعال است، خواهان ثبت نخواهد شد.",
 			"CONTEXT": "به تماس گیرنده امکان می دهد تا برای خروج از صف را با فشار دادن یك DTMF رقمی است. اگر یک متن تعیین می شود و به تماس گیرنده شماره وارد شود، اين رقم در تلاش است که ادغام در متن تعیین می شود، و اعدام در dialplan ادامه خواهد داشت.",
 			"SETINTERFACEVARIABLES": "اگر روی بله، درست قبل از تماس گیرنده با بركت بودن صف عضو برخی از متغیرها تنظیم می شود(wiki)",
 			"SETQUEUEVARIABLES": "اگر روی بله، درست قبل از تماس گیرنده در صف، با بركت بودن عضو و فقط قبل از تماس گیرنده را در صف خروج از برخی متغیرها تنظیم می شود(wiki)",
diff --git a/public/app/main/apps/voice/i18n/fi.json b/public/app/main/apps/voice/i18n/fi.json
index 53c938b..7a53614 100644
--- a/public/app/main/apps/voice/i18n/fi.json
+++ b/public/app/main/apps/voice/i18n/fi.json
@@ -114,7 +114,6 @@
 			"AUTOPAUSE": "Voit ottaa käyttöön tai poistaa käytöstä automaattisen keskeyttämällä sellaisia jäseniä, jotka eivät vastaa puheluun. Jos aktiivinen aiheuttaa kyseisen voi pysäyttää kaikki jonot hän kuuluu.",
 			"RINGINUSE": "Jotta lähettämässä puheluja jäsentä, joiden tila on käytössä.",
 			"TIMEOUTRESTART": "Jos arvoksi määritetään Kyllä, määrittää aikakatkaisun uudelleen, kun edustaja vastaa huomioidaanko on varattu tai ylikuormituksen tila on vastaanotettu kanavasta.",
-			"MONITORFORMAT": "Määrittää tiedoston muoto, jota käytetään tallennukseen. Jos monitorin näkymä on aktiivinen, vaatii ei tallenneta.",
 			"CONTEXT": "Mahdollistaa soittaja voi poistua jonon painamalla yhtä DTMF-numeroon. Jos yhteydessä on määritetty ja soittajan perussäädön, numero yrittää kohdistaa yhteydessä määritelty ja dialplan suorittaminen jatkuu.",
 			"SETINTERFACEVARIABLES": "Jos arvoksi määritetään Kyllä, juuri ennen kuin soittaja ei yhdistetä jonoon asettaneen muuttujia tulee(katso wiki)",
 			"SETQUEUEVARIABLES": "Jos arvoksi määritetään Kyllä, juuri ennen kuin soittaja ei yhdistetä jonoon ja juuri ennen poistumista soittajan jono joitakin tekijöitä tulee(katso wiki)",
diff --git a/public/app/main/apps/voice/i18n/fr.json b/public/app/main/apps/voice/i18n/fr.json
index 72c120e..4eb2d58 100644
--- a/public/app/main/apps/voice/i18n/fr.json
+++ b/public/app/main/apps/voice/i18n/fr.json
@@ -114,7 +114,6 @@
 			"AUTOPAUSE": "Active/désactive la mise en pause automatique d'un agent qui ne répond pas à un appel. Ce paramètre aura un impact sur toutes les files d'attente ou l'agent est présent.",
 			"RINGINUSE": "Utilisé pour éviter de déranger un agent dont le statut est En cours d'utilisation.",
 			"TIMEOUTRESTART": "Si défini à Oui, réinitialise Le délai pour réinitialiser le statut d'un agent qui à un statut occupé ou en congestion.",
-			"MONITORFORMAT": "Spécifie le format de fichier à utiliser  pourl'enregistrement. Si le paramètre est inactif, les appels ne sont pas enregistrées.",
 			"CONTEXT": "Permet à un appelant de quitter la file d'attente en appuyant sur une touche de son téléphone. Si un contexte est spécifié et que l'appelant entre un nombre, ce chiffre va tenter de s'executer dans le contexte spécifié, et il continuera d'exécuter le dialplan.",
 			"SETINTERFACEVARIABLES": "Si défini à Oui, certaines variables de l'interface seront définies(voir image) lorsqu'un appelant rejoint la file d'attente.",
 			"SETQUEUEVARIABLES": "Si défini à Oui, certaines variables de la file d'attente seront définies(voir image)lorsqu'un appelant rejoint la file d'attente.",
diff --git a/public/app/main/apps/voice/i18n/he.json b/public/app/main/apps/voice/i18n/he.json
index 412b5f1..4075766 100644
--- a/public/app/main/apps/voice/i18n/he.json
+++ b/public/app/main/apps/voice/i18n/he.json
@@ -126,7 +126,6 @@
 			"AUTOPAUSE": "מפעיל/משבית את ההשהיה האוטומטית של נציגים שלא השיבו על שיחה. במצב מופעל, הסוכן עובר למצב השהיה בכל התורים שהוא משויך אליהם",
 			"RINGINUSE": "כדי למנוע/לאפשר שליחת שיחות לנציגים עם סטטוס 'בשימוש'",
 			"TIMEOUTRESTART": "אם כן, הזמן הקצוב לסוכן לקבל שיחה כאשר מתקבל סטטוס 'תפוס' או 'עומס' מהערוץ יתאפס",
-			"MONITORFORMAT": "מציין את תבנית הקובץ להקלטה. כאשר תבנית 'ניטור' לא פעילה אין הקלטת שיחות.",
 			"CONTEXT": "מאפשר למתקשר לצאת מהתור בלחיצה על ספרת DTMF אחת. אם צוין הקשר והמתקשר מקיש את הספרה, המערכת תנסה להתאים את הספרה להקשר שצוין וביצוע תוכנית החיוג תימשך שם",
 			"SETINTERFACEVARIABLES": "אם הערך בהגדרה הוא 'כן', המערכת תקבע משתנים מסוימים ממש לפני העברת השיחה לנציג (לפרטים נוספים, עיין ב-Wiki Docs)",
 			"SETQUEUEVARIABLES": "אם הערך בהגדרה הוא 'כן', המערכת תקבע משתנים מסוימים ממש לפני העברת השיחה לנציג ויציאתו מהתור (לפרטים נוספים, עיין ב-Wiki Docs)",
diff --git a/public/app/main/apps/voice/i18n/hi.json b/public/app/main/apps/voice/i18n/hi.json
index f309522..ba5fb4e 100644
--- a/public/app/main/apps/voice/i18n/hi.json
+++ b/public/app/main/apps/voice/i18n/hi.json
@@ -114,7 +114,6 @@
 			"AUTOPAUSE": "सदस्यों की स्वचालित किसी वाक्य को सक्षम/अक्षम असफल कॉल का उत्तर देने के लिए है। यदि इस कारण सक्रिय सदस्य को रोका गया है वह किसी सदस्य की कतार में सभी",
 			"RINGINUSE": "कॉल भेजने के लिए सदस्यों से बचने के लिए इस्तेमाल किया जाता है जिसकी स्थिति में प्रयोग में है.",
 			"TIMEOUTRESTART": "यदि हाँ, रीसेट करें पर सेट करने के लिए, यदि उत्तर देने के लिए, व्यस्त या टाइमआउट एजेंट या भीड़-भाड़ दर्जा प्राप्त चैनल है।",
-			"MONITORFORMAT": "निर्दिष्ट करने के लिए, फ़ाइल स्वरूप का प्रयोग करने के लिए रिकॉर्डिंग है। अगर निगरानी-स्वरूप निष्क्रिय कॉल्स नहीं किया जाएगा.",
 			"CONTEXT": "अनुमत कॉलर कतार से बाहर निकलने के लिए दबाकर एक अंकीय DTMF है। यदि कॉलर और विनिर्दिष्ट संख्या के संदर्भ में प्रवेश करने का प्रयास करेंगे कि अंकीय मेल के संदर्भ में विनिर्दिष्ट और वहां रहेंगे निष्पादन dialplan",
 			"SETINTERFACEVARIABLES": "यदि हां, तो पूर्व निर्धारित की जा रही एक कतार में कुछ सदस्य कॉलर खाई फेर किया जाएगा।(देखिए) wiki",
 			"SETQUEUEVARIABLES": "यदि हां, तो पहले से सेट करने के लिए किया जा रहा है और सदस्य एक कतार कॉलर खाई को छोडने की कतार में कुछ फेर से पूर्व कॉलर स्थापित किए जाएंगे।(देखिए) wiki",
diff --git a/public/app/main/apps/voice/i18n/id.json b/public/app/main/apps/voice/i18n/id.json
index c74179c..3942e20 100644
--- a/public/app/main/apps/voice/i18n/id.json
+++ b/public/app/main/apps/voice/i18n/id.json
@@ -70,7 +70,6 @@
 			"MINANNOUNCEFREQUENCY": "Frekuensi pengumuman minimum (berguna ketika posisi pemanggil sering berubah)",
 			"MINUTEANNOUNCE": "Pilih Suara yang didefinisikan dalam Alat. Default = \"menit\". Tidak ditentukan = tidak ada pengumuman",
 			"MINUTESANNOUNCE": "Pilih Suara yang didefinisikan dalam Alat. Default = “menit”. Tidak ditentukan = tidak ada pengumuman",
-			"MONITORFORMAT": "Menentukan format file yang akan digunakan saat merekam. Jika format monitor tidak aktif, panggilan tidak akan direkam",
 			"MUSICONHOLD": "Setel kelas musik yang akan digunakan untuk antrean tertentu",
 			"NAME": "Hanya angka, huruf, dan karakter tertentu (._) yang didukung",
 			"PERIODICANNOUNCE": "Kumpulan pengumuman berkala untuk dimainkan (dalam urutan)",
diff --git a/public/app/main/apps/voice/i18n/ja.json b/public/app/main/apps/voice/i18n/ja.json
index a50a5e2..70d5686 100644
--- a/public/app/main/apps/voice/i18n/ja.json
+++ b/public/app/main/apps/voice/i18n/ja.json
@@ -70,7 +70,6 @@
 			"MINANNOUNCEFREQUENCY": "最小アナウンス頻度（発信者のポジションが頻繁に変化する場合に便利）",
 			"MINUTEANNOUNCE": "ツールで定義されたサウンドを選択します。デフォルト= \"分\"。未定義=アナウンスなし",
 			"MINUTESANNOUNCE": "ツールで定義されたサウンドを選択します。デフォルト= \"分\"。未定義=アナウンスなし",
-			"MONITORFORMAT": "録音時に使用するファイル形式を指定します。 monitor-formatが非アクティブの場合、コールは録音されません",
 			"MUSICONHOLD": "特定のキューに使用する音楽クラスを設定します",
 			"NAME": "数字、文字、および特定の文字（._）のみがサポートされています",
 			"PERIODICANNOUNCE": "再生する定期アナウンスのセット（順番に）",
diff --git a/public/app/main/apps/voice/i18n/ko.json b/public/app/main/apps/voice/i18n/ko.json
index 346d704..8f5e950 100644
--- a/public/app/main/apps/voice/i18n/ko.json
+++ b/public/app/main/apps/voice/i18n/ko.json
@@ -114,7 +114,6 @@
 			"AUTOPAUSE": "자동 일시정지",
 			"RINGINUSE": "사용중 전화",
 			"TIMEOUTRESTART": "시간초과 재시작",
-			"MONITORFORMAT": "모니터 형식",
 			"CONTEXT": "내용",
 			"SETINTERFACEVARIABLES": "대화 변수 설정",
 			"SETQUEUEVARIABLES": "상담그룹 변수 설정",
diff --git a/public/app/main/apps/voice/i18n/lt.json b/public/app/main/apps/voice/i18n/lt.json
index b2bca73..32f8056 100644
--- a/public/app/main/apps/voice/i18n/lt.json
+++ b/public/app/main/apps/voice/i18n/lt.json
@@ -129,7 +129,6 @@
 			"AUTOPAUSE": "Įjungia/išjungia automatinę pauzę agentams, kurie neatsako į skambutį. Jei įjungta, agentas pristabdomas visose eilėse, kurioms jis priklauso.",
 			"RINGINUSE": "Neleisti/leisti siųsti skambučius nariams, kurių būsena yra Naudojamas",
 			"TIMEOUTRESTART": "Jei taip, tai iš naujo nustato agento atsakymo laiką, kai iš kanalo gaunama būsena UŽIMTAS arba PERKROVA",
-			"MONITORFORMAT": "Nurodo failo formatą, kurį reikia naudoti įrašant. Jei monitoriaus formatas neaktyvus, skambučiai nebus įrašomi",
 			"CONTEXT": "Leidžia skambinančiajam išeiti iš eilės paspaudus vieną DTMF skaitmenį. Jei nurodomas kontekstas ir skambintojas įveda numerį, tą skaičių bus bandoma suderinti su nurodytu kontekste, ir ten bus tęsiamas telefono numerio rinkimo atlikimas",
 			"SETINTERFACEVARIABLES": "Jei nustatyta taip, prieš pat skambinančiojo prijungimą prie eilės agento bus nustatyti kai kurie kintamieji (daugiau informacijos žr. wiki dokumentuose)",
 			"SETQUEUEVARIABLES": "Jei nustatyta taip, prieš pat skambinančiojo prijungimą prie eilės agento ir paliekant eilę, bus nustatyti kai kurie kintamieji (daugiau informacijos žr.  wiki dokumentuose)",
diff --git a/public/app/main/apps/voice/i18n/lv.json b/public/app/main/apps/voice/i18n/lv.json
index d678102..e8421ee 100644
--- a/public/app/main/apps/voice/i18n/lv.json
+++ b/public/app/main/apps/voice/i18n/lv.json
@@ -85,7 +85,6 @@
 			"AUTOPAUSE": "Iespējo/atspējo pārtraukumu automātiskajiem aģentiem, kas nespēj atbildēt uz zvanu. Ja tas ir iespējots, aģents tiek apturēts visās rindās, kurām viņš pieder",
 			"RINGINUSE": "Lai nepieļautu/atļautu zvanus tiem dalībniekiem, kuru statuss ir \"Lietošanā\"",
 			"TIMEOUTRESTART": "Ja \"Jā\", tas atiestata laika ierobežojumu, lai aģents atbildētu, ja no kanāla tiek saņemts statuss \"AIZŅEMTS\" vai \"PĀRSLODZE\"",
-			"MONITORFORMAT": "Norāda datnes formātu, kas ir jāizmanto ierakstīšanas laikā. Ja monitora formāts ir neaktīvs, zvani netiks ierakstīti",
 			"CONTEXT": "Ļauj zvanītājam iziet no rindas, nospiežot vienu divtoņu daudzfrekvenču signalizācijas ciparu. Ja konteksts ir norādīts un zvanītājs ievada numuru, šis cipars mēģinās tikt saskaņots norādītajā kontekstā un zvana izpilde turpināsies tur",
 			"SETINTERFACEVARIABLES": "Ja ir iestatīts uz \"Jā\", tieši pirms zvanītāja savienošanas ar rindas aģentu tiks iestatīti daži mainīgie (plašāku informāciju skatiet \"Vikipēdijas\" dokumentos)",
 			"SETQUEUEVARIABLES": "Ja ir iestatīts uz \"Jā\", tieši pirms zvanītāja pieslēgšanas rindas aģentam un rindas atstāšanas tiks iestatīti daži mainīgie (lai iegūtu plašāku informāciju, skatiet \"Vikipēdijas\" dokumentus)",
diff --git a/public/app/main/apps/voice/i18n/nl.json b/public/app/main/apps/voice/i18n/nl.json
index a6038d2..e4534f5 100644
--- a/public/app/main/apps/voice/i18n/nl.json
+++ b/public/app/main/apps/voice/i18n/nl.json
@@ -114,7 +114,6 @@
 			"AUTOPAUSE": "Hiermee schakelt u de automatische onderbreken van leden die verzuimen om een oproep te beantwoorden. Indien actief, veroorzaakt dit lid te worden onderbroken in alle wachtrijen hij lid is.",
 			"RINGINUSE": "Gebruikt om te voorkomen dat gesprekken doorsturen naar leden wier status in gebruik is.",
 			"TIMEOUTRESTART": "Als deze optie is ingesteld op ja, wordt de time-out voor een agent om antwoord als een drukke of overbezetting van het kanaal.",
-			"MONITORFORMAT": "Specificeert het bestandsformaat te gebruiken tijdens de opname. Als monitor-formaat is inactief, gesprekken worden niet geregistreerd.",
 			"CONTEXT": "Kan een beller naar de wachtrij met een enkele druk op DTMF-cijfer. Als een context wordt opgegeven en de beller een aantal, dat cijfer zal proberen aan te passen in het kader van de vastgestelde dialplan uitvoering zal doorgaan.",
 			"SETINTERFACEVARIABLES": "Als deze optie is ingesteld op ja, net voordat de beller worden overbrugd met een wachtrij lid sommige variabelen worden ingesteld (zie wiki)",
 			"SETQUEUEVARIABLES": "Als deze optie is ingesteld op ja, net voordat de beller worden overbrugd met een wachtrij lid en net voordat de beller uit de wachtrij sommige variabelen worden ingesteld (zie wiki)",
diff --git a/public/app/main/apps/voice/i18n/no.json b/public/app/main/apps/voice/i18n/no.json
index 0b18ec4..492a92c 100644
--- a/public/app/main/apps/voice/i18n/no.json
+++ b/public/app/main/apps/voice/i18n/no.json
@@ -114,7 +114,6 @@
 			"AUTOPAUSE": "Aktiverer/deaktiverer automatisk pause av medlemmer som unnlater å svare på et anrop. Hvis aktiv fører dette medlem til å være avslått i alle køer han er medlem av.",
 			"RINGINUSE": "Brukes for å unngå å sende samtaler til medlemmer som er i bruk.",
 			"TIMEOUTRESTART": "Hvis satt til ja, tilbakestiller stille for en agent til å svare hvis enten en opptatt eller flaskehalser status er mottatt fra kanalen.",
-			"MONITORFORMAT": "Angir filformatet til bruk når opptaket. Hvis monitoren-format er inaktiv, samtaler vil ikke bli registrert.",
 			"CONTEXT": "Gjør en innringer til å gå ut av køen ved å trykke en enkelt DTMF siffer. Hvis en kontekst er spesifisert og anroper legger inn et nummer, at tallet vil forsøke å være avkrysset i kontekst angitt, og dialplan utførelsen vil fortsette der.",
 			"SETINTERFACEVARIABLES": "Hvis satt til ja, like før til innringeren blir forbundet med en kø medlem noen variabler blir satt(se wiki)",
 			"SETQUEUEVARIABLES": "Hvis satt til ja, like før til innringeren blir forbundet med en kø-medlem og like før til innringeren forlate køen noen variabler blir satt(se wiki)",
diff --git a/public/app/main/apps/voice/i18n/pl.json b/public/app/main/apps/voice/i18n/pl.json
index 9f9e91b..02e672d 100644
--- a/public/app/main/apps/voice/i18n/pl.json
+++ b/public/app/main/apps/voice/i18n/pl.json
@@ -114,7 +114,6 @@
 			"AUTOPAUSE": "Włącza/wyłącza automatyczne wstrzymywanie agentów, którzy nie dotrzymali, aby odebrać połączenie. Jeśli opcja ta jest włączona, powoduje, że do agenta wstrzymany we wszystkich kolejkach przynależy do",
 			"RINGINUSE": "Aby uniknąć/zezwalaj na wysyłanie zaproszeń do członków, których stan jest w użyciu.",
 			"TIMEOUTRESTART": "Jeśli tak, to wyzerowanie timeout dla agenta do odpowiedzi kiedy albo zajęty lub przeciążenia stan jest odbierany z kanału",
-			"MONITORFORMAT": "Określa format pliku do wykorzystania podczas nagrywania. Jeśli monitor belinea jest aktywna, połączenia przychodzące nie będą rejestrowane",
 			"CONTEXT": "Pozwala rozmówcy, aby wyjść z kolejki przez naciśnięcie pojedynczego DTMF cyfra. Jeśli kontekst jest określona i dzwoniący dostaje numer, że cyfra będzie próbować być dopasowywana w kontekście określonego i dialplan wykonanie będzie nadal dostępna",
 			"SETINTERFACEVARIABLES": "Jeśli ustawione na tak, tuż przed dzwoniący jest połączona z kolejki agenta niektórych zmiennych zostaną ustawione (więcej informacji patrz wiki docs).",
 			"SETQUEUEVARIABLES": "Jeśli ustawione na tak, tuż przed dzwoniący jest połączona z kolejki agenta i opuszczeniem kolejki, niektóre zmienne zostaną ustawione (aby uzyskać więcej informacji, patrz dokumentacja wiki)",
diff --git a/public/app/main/apps/voice/i18n/pt-BR.json b/public/app/main/apps/voice/i18n/pt-BR.json
index aeccb86..f1d6b47 100644
--- a/public/app/main/apps/voice/i18n/pt-BR.json
+++ b/public/app/main/apps/voice/i18n/pt-BR.json
@@ -126,7 +126,6 @@
 			"AUTOPAUSE": "Ativa / desativa a pausa automática de agentes que não atendem uma chamada. Se ativado, faz com que o agente seja pausado em todas as filas às quais ele pertence",
 			"RINGINUSE": "Para evitar / permitir o envio de chamadas para membros cujo status é Em uso",
 			"TIMEOUTRESTART": "Se sim, isso redefine o tempo limite para um agente responder quando um status OCUPADO ou CONGESTIONADO é recebido do canal",
-			"MONITORFORMAT": "Especifica o formato de arquivo a ser usado durante a gravação. Se o formato do monitor estiver inativo, as chamadas não serão gravadas",
 			"CONTEXT": "Permite que um chamador saia da fila pressionando um único dígito DTMF. Se um contexto for especificado e o chamador inserir um número, esse dígito tentará ser correspondido no contexto especificado e a execução da planta de discagem continuará lá.",
 			"SETINTERFACEVARIABLES": "Se configurado como yes, antes de o chamador ser conectado a um agente de fila, algumas variáveis ​​serão configuradas (para obter mais informações, consulte os documentos do wiki)",
 			"SETQUEUEVARIABLES": "Se definido como yes, logo antes de o chamador se conectar com um agente de fila e sair da fila, algumas variáveis ​​serão configuradas (para obter mais informações, consulte docs do wiki)",
diff --git a/public/app/main/apps/voice/i18n/pt-PT.json b/public/app/main/apps/voice/i18n/pt-PT.json
index adffa7a..eda3512 100644
--- a/public/app/main/apps/voice/i18n/pt-PT.json
+++ b/public/app/main/apps/voice/i18n/pt-PT.json
@@ -114,7 +114,6 @@
 			"AUTOPAUSE": "Habilita/desabilita a pausa automática dos membros que não atender uma chamada. Se indicar ACTIVO causas este membro para ser pausado em todas as filas que ele é um membro.",
 			"RINGINUSE": "Usado para evitar o envio de chamadas para os membros cujo estatuto está em uso.",
 			"TIMEOUTRESTART": "Se for definido como sim, redefine o tempo limite para um agente atender se quer um sinal de ocupado ou de estado de congestão é recebida do canal.",
-			"MONITORFORMAT": "Especifica o formato do arquivo para usar quando a gravação. Se o monitor de formato é inactivo, as chamadas não serão gravadas.",
 			"CONTEXT": "Permite que um chamador para sair da fila de espera pressionando um único dígito DTMF. Se um contexto é especificado e o chamador insere um número de dígitos, que tentará ser igualada no contexto especificado e execução dialplan continuará lá.",
 			"SETINTERFACEVARIABLES": "Se for definido como Sim, apenas antes de o chamador a ser uma ponte com uma fila membro algumas variáveis será definido(ver wiki)",
 			"SETQUEUEVARIABLES": "Se for definido como Sim, apenas antes de o chamador a ser uma ponte com uma fila de membro e apenas antes de o chamador deixar a fila de algumas variáveis será definido(ver wiki)",
diff --git a/public/app/main/apps/voice/i18n/ru.json b/public/app/main/apps/voice/i18n/ru.json
index 74a1736..3f6508a 100644
--- a/public/app/main/apps/voice/i18n/ru.json
+++ b/public/app/main/apps/voice/i18n/ru.json
@@ -114,7 +114,6 @@
 			"AUTOPAUSE": "Включение/отключение автоматического приостановки члены Совета, которые не ответить на вызов. Если активно причины этого члена на паузу во всех очередях он является членом.",
 			"RINGINUSE": "Используется для предотвращения отправки вызовов для членов, состояние которого находится в использовании.",
 			"TIMEOUTRESTART": "Если установлено значение Да, Сброс тайм-аут для ответа оператора либо занят или состояние перегрузки будет получено от канала.",
-			"MONITORFORMAT": "Указывает формат файла для использования при записи. Если монитор формата неактивно, вызовы не будут записаны.",
 			"CONTEXT": "Позволяет вызывающему абоненту для выхода из очереди нажатием одной цифры DTMF. Если контекст не указан и абонент вводит номер, цифра будет пытаться быть подобраны в контексте указанного и команду display dialplan analysis исполнения будет и впредь.",
 			"SETINTERFACEVARIABLES": "Если установлено значение Да, просто до абонента, параллельной линии с очередью членов некоторых переменных будет set(см. wiki)",
 			"SETQUEUEVARIABLES": "Если установлено значение Да, просто до абонента, параллельной линии с очередью член и непосредственно до абонента оставив очереди некоторых переменных будет set(см. wiki)",
diff --git a/public/app/main/apps/voice/i18n/sv.json b/public/app/main/apps/voice/i18n/sv.json
index e1db31a..d70a8fc 100644
--- a/public/app/main/apps/voice/i18n/sv.json
+++ b/public/app/main/apps/voice/i18n/sv.json
@@ -114,7 +114,6 @@
 			"AUTOPAUSE": "Om aktiverad pausas agenten automatiskt i samtliga köer den är med i vid ett missat samtal",
 			"RINGINUSE": "Om aktiverad går det att ringa till agenter som är i aktiva samtal",
 			"TIMEOUTRESTART": "Om aktiverad så nollställs köns timeouträkning när det börjar ringa på en ny agent",
-			"MONITORFORMAT": "Anger filformet som inspelningar ska sparas i. Om inaktiverad spelas samtal ej in",
 			"CONTEXT": "Ger en inringande möjlighet att lämna kön genom ett knappval. Om en kontext är specificerad kommer detta knappval att försöka matchas med en samtalsplan.",
 			"SETINTERFACEVARIABLES": "Om aktiverad kommer vissa variabler att sättas innan inringande och agent blir ihopkopplade (se wiki för ytterligare dokumentation)",
 			"SETQUEUEVARIABLES": "Om aktiverad kommer vissa variabler att sättas innan inringande och agent blir ihopkopplade (se wiki för ytterligare dokumentation)",
diff --git a/public/app/main/apps/voice/i18n/tr.json b/public/app/main/apps/voice/i18n/tr.json
index 2beb9eb..d0896ce 100644
--- a/public/app/main/apps/voice/i18n/tr.json
+++ b/public/app/main/apps/voice/i18n/tr.json
@@ -114,7 +114,6 @@
 			"AUTOPAUSE": "Etkinleştirir/devre dışı bırakır. otomatik çekimde üyeleri başarısız, bir aramayı yanıtlamak için. Aktif ise bu üye olarak duraklatıldı tüm kuyrukları üyesi.",
 			"RINGINUSE": "Engellemek için gönderme çağrıları üyelerin durumu.",
 			"TIMEOUTRESTART": "Eğer yes, sıfırlar ve zaman aşımı bir temsilcinin, cevap ya da meşgul veya tıkanıklık durumu alınan, kanal.",
-			"MONITORFORMAT": "Belirler, dosya formatı kullanmak için kayıt. Eğer monitör-format, akti̇f deği̇l, aramalar kaydedilmez.",
 			"CONTEXT": "Bir arayan çıkmak için kuyruk tek bir DTMF rakam. Eğer bir içerik olarak belirtilen ve arayan bir numarası, basamak girişimi olarak uygun içerik ve dialplan yürütme devam.",
 			"SETINTERFACEVARIABLES": "Eğer evet, hemen öncesinde arayan, köprülenmiş bir kuyruk üye bazı değişkenler,(bakınız wiki).",
 			"SETQUEUEVARIABLES": "Eğer evet, hemen öncesinde arayan, köprülenmiş bir kuyruk üye ve hemen öncesinde arayan ayrılırken kuyruk bazı değişkenler,(bakınız wiki).",
diff --git a/public/app/main/apps/voice/i18n/zh-CN.json b/public/app/main/apps/voice/i18n/zh-CN.json
index 7969d26..1cbc358 100644
--- a/public/app/main/apps/voice/i18n/zh-CN.json
+++ b/public/app/main/apps/voice/i18n/zh-CN.json
@@ -114,7 +114,6 @@
 			"AUTOPAUSE": "使/禁用自动暂停的成员无法应答呼叫。 如果活动的原因该成员将暂停所有队列的他是其中的成员。",
 			"RINGINUSE": "用于避免呼叫发送到成员的地位是在使用中。",
 			"TIMEOUTRESTART": "如果设置为 “是”, 重置超时业务代表应答如果占线或拥塞状态为 “已接收” 的通道。",
-			"MONITORFORMAT": "指定的文件格式时要使用的录制。 如果监护仪-格式是处于非活动状态, 呼叫将不被记录。",
 			"CONTEXT": "允许主叫方退出队列的按单一的 DTMF 数字。 如果指定了环境和主叫方输入的数字, 该数字将尝试匹配指定的环境下, 执行 dialplan 将会继续存在。",
 			"SETINTERFACEVARIABLES": "如果设置为 “是”, 只在主叫方被桥接的队列成员的某些变量将被设置(参见维基百科)",
 			"SETQUEUEVARIABLES": "如果设置为 “是”, 只在主叫方被桥接的队列成员之前, 主叫方离开队列中的某些变量将被设置(参见维基百科)",
diff --git a/public/app/main/apps/voice/i18n/zh-TW.json b/public/app/main/apps/voice/i18n/zh-TW.json
index ecdaa17..5ce21ac 100644
--- a/public/app/main/apps/voice/i18n/zh-TW.json
+++ b/public/app/main/apps/voice/i18n/zh-TW.json
@@ -114,7 +114,6 @@
 			"AUTOPAUSE": "啟用 / 停用「自動暫停的成員無法接聽來電。 如果作用會導致此會員為暫停所有佇列他的成員之一。",
 			"RINGINUSE": "用來避免傳送來電至成員的狀態是在使用中。",
 			"TIMEOUTRESTART": "如果設定為「是」 , 將會重設逾時的值機員可接聽如果是忙線或網路壅塞狀態會收到的通道。",
-			"MONITORFORMAT": "指定的檔案格式時要用錄影。 如果監視器的格式為非作用中通話將不會被記錄下來。",
 			"CONTEXT": "允許來電者離開佇列按一 DTMF 數字。 如果內容是特定的來電者輸入的數字 , 該數字便會嘗試進行匹配的內容中指定之 , 並撥號計畫執行程式將會繼續存在。",
 			"SETINTERFACEVARIABLES": "如果設定為「是」 , 只要事先來電者被以橋接模式的佇列會員部分變數將會設定 ( 請參閱 wiki )",
 			"SETQUEUEVARIABLES": "如果設定為「是」 , 只要事先來電者被以橋接模式的佇列成員和前呼叫者離開佇列部分變數將會設定 ( 請參閱 wiki )",
diff --git a/public/assets/plugins/jscookie/js.cookie.min.js b/public/assets/plugins/jscookie/js.cookie.min.js
deleted file mode 100644
index 1549485..0000000
--- a/public/assets/plugins/jscookie/js.cookie.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! js-cookie v3.0.0-rc.1 | MIT */
diff --git a/public/index.html b/public/index.html
index 1978c58..ce207fc 100644
--- a/public/index.html
+++ b/public/index.html
@@ -16,7 +16,7 @@
 
     <link rel="stylesheet" href="styles/vendor.85f73461.css">
 
-    <link rel="stylesheet" href="styles/app.6b5b73e3.css">
+    <link rel="stylesheet" href="styles/app.7031ba1e.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'> -->
@@ -66,7 +66,7 @@
     <script src="assets/plugins/angular-material-form-builder/dist/angular-material-form-builder.min.js"></script>
     <!-- ANGULAR-MATERIAL-FORM-BUILDER -->
 
-    <script src="scripts/app.9043fce4.js"></script>
+    <script src="scripts/app.09e27ab1.js"></script>
 
     <!-- CKEDITOR -->
     <script src="assets/plugins/ckeditor/ckeditor.js"></script>
@@ -80,10 +80,6 @@
     <script type="text/javascript" src="/socket.io/socket.io.js"></script>
     <!-- Socket.io -->
 
-    <!-- JSCOOKIE -->
-    <script src="assets/plugins/jscookie/js.cookie.min.js"></script>
-    <!-- JSCOOKIE -->
-
     <!-- Jira report issue -->
     <!-- <script type="text/javascript" src="https://track.xcallymotion.com/s/90265372adde7bfa418545eae35b3bba-T/fkd960/72003/b6b48b2829824b869586ac216d119363/2.0.21/_/download/batch/com.atlassian.jira.collector.plugin.jira-issue-collector-plugin:issuecollector/com.atlassian.jira.collector.plugin.jira-issue-collector-plugin:issuecollector.js?locale=en-US&collectorId=e823d908"></script> -->
     <!-- /Jira report issue -->
diff --git a/public/scripts/app.09e27ab1.js b/public/scripts/app.09e27ab1.js
new file mode 100644
index 0000000..994cb5c
--- /dev/null
+++ b/public/scripts/app.09e27ab1.js
@@ -0,0 +1 @@
\ No newline at end of file
diff --git a/public/scripts/app.9043fce4.js b/public/scripts/app.9043fce4.js
deleted file mode 100644
index cf96f93..0000000
--- a/public/scripts/app.9043fce4.js
+++ /dev/null
@@ -1 +0,0 @@
\ No newline at end of file
diff --git a/public/snippets/tvox/answer.controller.js b/public/snippets/tvox/answer.controller.js
deleted file mode 100644
index 1b62532..0000000
--- a/public/snippets/tvox/answer.controller.js
+++ /dev/null
@@ -1,452 +0,0 @@
-    // Include app dependency on ngMaterial
-    angular.module('AnswerApp', ['ngMaterial', 'ngCookies','motion','ngResource','flow','ngSanitize'])
-    .controller("AnswerController", function($rootScope,$scope, $http, $cookies, socket, $location, $timeout,$document) {
-        $scope.text = { content: null};        
-        $scope.textMessage="";
-        $scope.messageId=0;
-        $scope.contactId="";
-        $scope.interactionId=0;
-        $scope.interactionClosed=false;
-        $scope.userId="";
-        $scope.motionUrl=""; 
-        $scope.chatWebsiteId="";
-        $scope.logo="";
-        $scope.token="";
-        $scope.error_message="";
-        $scope.messages = {
-            count: 0,
-            rows: []
-        };
-        $scope.contactName="";
-        $scope.ngFlowOptions = {
-            target: '/api/attachments',
-            singleFile: true,
-            maxChunkRetries: 1,
-            chunkSize: 10240000,
-            simultaneousUploads: 1,
-            testChunks: false,
-            progressCallbacksInterval: 1000,
-            allowDuplicateUploads: true
-        };
-        $scope.ngFlow = {
-            // ng-flow will be injected into here through its directive
-            flow: {}
-        };
-    
-        $scope.errors = [];
-        $scope.dispositions = [];
-
-        $scope.dispo={};
-        $scope.dispo.firstLevelDisposition = null;
-        $scope.dispo.secondLevelDisposition = null;
-        $scope.dispo.thirdLevelDisposition = null;
-        $scope.dispo.anySecondLevelDisposition = null;
-        $scope.dispo.anyThirdLevelDisposition = null;
-        $scope.dispo.mandatoryDisposition = false;
-        $scope.dispo.mandatoryDispositionPause = '';
-        $scope.dispo.note = '';
-
-        tvoxCallId="";
-    
-    
-
-
-        function parseJwt (token) {
-            var base64Url = token.split('.')[1];
-            var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
-            var jsonPayload = decodeURIComponent(atob(base64).split('').map(function(c) {
-                return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
-            }).join(''));
-
-            return JSON.parse(jsonPayload);
-        }; 
-        
-
-        function closeInteraction() {
-            
-            
-            var msg={
-                id: $scope.interactionId,
-                closed: true,
-                closeReason: 'contact',
-                closedAt: new Date() // moment().format('YYYY-MM-DD HH:mm:ss'),
-            };
-
-            $http.put($scope.motionUrl+"/api/chat/interactions/"+$scope.interactionId+"/custom_update",msg,
-            {
-                headers: {'Authorization': 'Bearer '+$scope.token}
-            }).
-            then(
-                function ret(response) {
-                    console.log("cris RESPONSEHTTP", response);
-                }
-            );     
-                   
-        }
-        $scope.close=function() {
-            closeInteraction();
-        }
-        
-        $scope.keyPress = function(keyEvent) {
-            if (keyEvent.which === 13)
-              if ($scope.text.content) {
-                var msg={};
-                msg.body=$scope.text.content;
-                sendMessage(msg);
-            }
-          }        
-
-
-        this.$onInit=function() {
-            var urlParams = new URLSearchParams(window.location.search);
-            var params=urlParams.get("params");
-            var arr=params.split("|");
-            if(arr) {
-                $scope.messageId=arr[0];
-                $scope.motionUrl=arr[1];
-                $scope.chatWebsiteId=arr[2];
-                $scope.interactionId=arr[3];
-            }
-
-
-            $scope.token=$cookies.get('motion.token');
-            if(_.isNil($scope.token))
-                $scope.error_message="XCally motion token not valid, please connect to XCally Motion, then retry";
-            else {
-
-                window.addEventListener("message", function(event) {
-                    console.log("TVOXMESAGE", event)
-
-                    let message = event.data;
-                    if (message == null || message.namespace == null || message.namespace != 'webclient.teleniasoftware.com') {
-                        console.info("Received Unknown message", message);
-                        return;
-                    }
-
-                    if (message.event == 'callEvent') {
-                        console.log("CRISCALLEVENT", message)
-                        tvoxCallId=message.data.callId;
-                        if(message.data.state=="IDLE") {
-                            closeInteraction();
-                        }
-                        /*
-                        if (!_primaryCallInfo) {
-                            _primaryCallInfo = message.data;
-                            alert(_primaryCallInfo)
-                            if (_callInfoCallback !== null)
-                                _callInfoCallback(_primaryCallInfo);
-                        } */
-                    } 
-                }, false);
-                tvoxSendReadyEvent();                
-                var js=parseJwt($scope.token);
-                $scope.userId=js.id;
-                $rootScope.userId=js.id;
-
-                socket.on('chatMessage:save', onMessageSave); 
-                socket.on('chatInteraction:save', onInteractionSave);
-                socket.on('chatInteraction:update', onInteractionSave);
-  
-
-                $http.get($scope.motionUrl+"/api/chat/websites/"+$scope.chatWebsiteId,{
-                headers: { 'Authorization': 'Bearer '+$scope.token}
-                }).
-                then(
-                    function successCallback(response) {
-                        console.log("CWS",response);
-                        $scope.dispo.mandatoryDisposition = response.mandatoryDisposition;
-                                      
-                        //if ($scope.mandatoryDisposition) {
-                          //$scope.mandatoryDispositionPause = response.mandatoryDispositionPause.name;
-                        //}
-
-                        $scope.logo=$scope.motionUrl+"/api/chat/websites/"+$scope.chatWebsiteId+"/logo?token="+response.token;
-                        $http({
-                            url:$scope.motionUrl+"/api/chat/messages/"+$scope.messageId+"/accept",
-                            method:"PUT",
-                            headers: { 'Authorization': 'Bearer '+$scope.token},                        
-                            data: {id: $scope.messageId,
-                                UserId: $scope.userId,
-                                manual: true
-                            }
-                        })
-                        .then(function(message) {
-                            $scope.userId=message.data.interaction.UserId;
-                            $scope.contactId=message.data.interaction.ContactId;
-                            $http.get($scope.motionUrl+"/api/chat/interactions/"+message.data.interaction.id+"/messages",{
-                                headers: { 'Authorization': 'Bearer '+$scope.token}
-                            }).
-                            then(
-                                function ret(response) {
-                                    $scope.messages.rows=response.data.rows;
-                                    $http.get($scope.motionUrl+"/api/cm/contacts/"+$scope.contactId,{
-                                        headers: { 'Authorization': 'Bearer '+$scope.token}
-                                    }).
-                                    then(
-                                        function ret(contact) {
-                                            var fn="";
-                                            var ln="";
-                                            if(contact.data.firstName!==null)
-                                                fn=contact.data.firstName;
-                                            if(contact.data.lastName!==null)
-                                                ln=contact.data.lastName;
-                                            $scope.contactName=fn+" "+ln;
-                                            loadDispositions();
-                                        }
-                                    );
-                                }
-                            );
-                        },
-                        function(err) {
-                            $http.get($scope.motionUrl+"/api/chat/interactions/"+$scope.interactionId+"/messages",{
-                                        headers: { 'Authorization': 'Bearer '+$scope.token}
-                            }).
-                            then(
-                                function ret(response) {
-                                    $scope.messages.rows=response.data.rows;
-                                    $http.get($scope.motionUrl+"/api/chat/interactions/"+$scope.interactionId,{
-                                        headers: { 'Authorization': 'Bearer '+$scope.token}
-                                    }).
-                                    then(
-                                        function ret(response) {
-                                            $scope.userId=response.data.UserId;
-                                            $scope.contactId=response.data.ContactId;
-                                            $http.get($scope.motionUrl+"/api/cm/contacts/"+$scope.contactId,{
-                                                headers: { 'Authorization': 'Bearer '+$scope.token}
-                                            }).
-                                            then(
-                                                function ret(contact) {
-                                                    var fn="";
-                                                    var ln="";
-                                                    if(contact.data.firstName!==null)
-                                                        fn=contact.data.firstName;
-                                                    if(contact.data.lastName!==null)
-                                                        ln=contact.data.lastName;
-                                                    $scope.contactName=fn+" "+ln;
-
-                                                    loadDispositions();
-        
-                                                }
-                                            );
-                                        }
-                                    );
-                                }
-                            );
-                        });
-                    },
-                    function errorCallback(response) {
-                        console.log("Unable to perform get request", response);
-                    }
-                );   
-            }
-        }
-
-        function loadDispositions() {
-            var dispositions = [];
-            var filters="ChatWebsiteId=null&FaxAccountId=null&ListId=null&MailAccountId=null&OpenchannelAccountId=null&SmsAccountId=null&WhatsappAccountId=null&nolimit=true";                                            
-            $http.get($scope.motionUrl+"/api/dispositions?"+filters,{
-                headers: { 'Authorization': 'Bearer '+$scope.token}
-            }).
-            then(
-                function ret(res) {
-                    if (res.data.rows.length) {
-                        $scope.dispositions = _.concat($scope.dispositions, res.data.rows);
-                    }
-                    filters="ChatWebsiteId="+$scope.chatWebsiteId+"&nolimit=true";                                            
-                    $http.get($scope.motionUrl+"/api/dispositions?"+filters,{
-                        headers: { 'Authorization': 'Bearer '+$scope.token}
-                    }).
-                    then(
-                        function ret(res) {
-                            if (res.data.rows.length) {
-                                $scope.dispositions = _.concat(dispositions, res.data.rows);
-                                
-                            }
-                        }
-                    );
-                }
-            );
-
-        }
-
-        $scope.onDispositionChange=function(level) {
-            console.log("DISPOS",$scope.dispositions)
-            if (level === 'first') {
-                $scope.dispo.anySecondLevelDisposition = $scope.dispo.firstLevelDisposition ? 
-                    _.some($scope.dispositions, ['ParentId', $scope.dispo.firstLevelDisposition.id]) : false;
-
-                console.log($scope.dispo.anySecondLevelDisposition );
-                // Clearing second level selection
-                if (!$scope.dispo.firstLevelDisposition) $scope.dispo.secondLevelDisposition = undefined;
-            } else if (level === 'second') {
-                $scope.dispo.anyThirdLevelDisposition = _.some($scope.dispositions, ['ParentId', $scope.dispo.secondLevelDisposition.id]);
-            }
-        }
-      
-        $scope.clearDispositionSelection=function(level) {
-            if (level === 'second') {
-                $scope.dispo.secondLevelDisposition = undefined;
-                $scope.dispo.thirdLevelDisposition = undefined;
-            } else if (level === 'third') {
-                $scope.dispo.thirdLevelDisposition = undefined;
-            }
-          }
-      
-
-        $scope.upload=function() {
-            // Set headers
-            $scope.ngFlow.flow.opts.headers = {
-              'X-Requested-With': 'XMLHttpRequest',
-              Authorization: 'Bearer ' + $scope.token
-            };
-      
-            $scope.ngFlow.flow.upload();
-          }
-      
-
-          
-
-          $scope.send=function() {
-            if ($scope.text.content) {
-                var msg={};
-                msg.body=$scope.text.content;
-
-                sendMessage(msg);
-            }
-        }
-
-        function sendMessage(msg) {
-            if(msg) {            
-                msg.ChatInteractionId=$scope.interactionId;
-                msg.ChatWebsiteId=$scope.chatWebsiteId;
-                msg.ContactId=$scope.contactId;
-                msg.UserId=$scope.userId;
-                msg.direction="out";
-                msg.secret=false;
-
-                $http.post($scope.motionUrl+"/api/chat/messages",msg,
-                {
-                    headers: {'Authorization': 'Bearer '+$scope.token}
-                }).
-                then(
-                    function ret(response) {
-                        $scope.text.content="";
-                    }
-                );
-            }
-        }
-
-        function onInteractionSave(interaction) {
-          // NOTE: return when is not a right interaction
-          if (interaction && interaction.id != $scope.interactionId) {
-            return;
-          }
-    
-          if (interaction.closed) {
-              $scope.interactionClosed=true;
-          }
-        }
-  
-
-        $scope.fileAdded=function(file) {
-            if (file.size > 10240000) {
-                alert("File too big");
-            /*
-              toasty.error({
-                title: 'File too big',
-                msg: 'The max allowed size is ' + maxFileSizeMb + 'MB'
-              });
-              */
-              return false;
-            }
-      
-            return true;
-          }
-      
-          /**
-           * Success
-           * Automatically triggers when files added to the uploader
-           */
-          $scope.fileSuccess=function(file, message) {
-            var attachment = JSON.parse(message);
-            var body = attachment.name;
-    
-      
-              body =
-                '<a href="' +
-                ($location.protocol() + '://' + $location.host()) +
-                '/api/chat/interactions/' +
-                $scope.interactionId +
-                '/attachment_download?attachId=' +
-                attachment.id +
-                '&token=' +
-                $scope.token +
-                '" target="_self">' +
-                attachment.name +
-                '</a>';
-      
-            sendMessage({
-              body: body,
-              AttachmentId: attachment.id
-            });
-          }
-    
-        $scope.saveDisposition=function() {
-        
-            var obj={
-                closed:true,
-                closeReason:'agent',
-                disposition:$scope.dispo.firstLevelDisposition ? $scope.dispo.firstLevelDisposition.name : null,
-                secondDisposition:$scope.dispo.secondLevelDisposition ? $scope.dispo.secondLevelDisposition.name : undefined,
-                thirdDisposition:$scope.dispo.thirdLevelDisposition ? $scope.dispo.thirdLevelDisposition.name : undefined,
-                mote: $scope.dispo.note
-            };
-
-            $http.put($scope.motionUrl+"/api/chat/interactions/"+$scope.interactionId,obj,
-            {
-                headers: {'Authorization': 'Bearer '+$scope.token}
-            }).
-            then(
-                function ret(response) {
-                    tvoxCloseInteraction(tvoxCallId);
-                }
-            );
-          
-        }          
-
-
-        function scrollToBottom() {
-            $timeout(function () {
-                var interactionContent = angular.element($document.find("md-content"));
-                if (interactionContent && interactionContent[0]) {
-                    interactionContent[0].scrollTop = interactionContent[0].scrollHeight;
-                }
-            }, 0);
-          }
-    
-
-        function onMessageSave(msg) {
-          var found = false;
-            if ($scope.messages) {
-                found = _.find($scope.messages.rows, {
-                    id: msg.id
-                });
-            } else {
-            $scope.messages = {
-                rows: [],
-                count: 0
-            };
-            }
-    
-            if (found) {
-            _.merge(found, msg);
-            } else {
-                $scope.messages.rows.push(msg);
-
-            }
-            scrollToBottom();
-        }
-
-        $scope.accept = function(event) {
-    	}
-    });
diff --git a/public/snippets/tvox/answer.html b/public/snippets/tvox/answer.html
deleted file mode 100644
index 8300a2f..0000000
--- a/public/snippets/tvox/answer.html
+++ /dev/null
@@ -1,139 +0,0 @@
-<!DOCTYPE html>
-
-<head>
-    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
-    <link rel="stylesheet" href="css/angular-material.min.css">
-    <link rel="stylesheet" href="css/style.css">
-</head>
-
-<body ng-app="AnswerApp">
-    <div ng-controller="AnswerController" layout="row" layout-fill>
-        <div ng-if="error_message!=''">{{error_message}}</div>
-        <div ng-if="error_message==''" layout="column" layout-fill>
-            <div flex="1">
-                <img width=100 layout-align="center" layout="row" src="{{logo}}">
-                <br>
-            </div>
-            <md-content flex="grow" style="overflow-y:auto;padding:10px" ng-if="!interactionClosed">
-                <div ng-repeat="message in messages.rows" class="message">
-                    <div ng-if="message.direction=='in'" layout="row" layout-align="start">
-                        <div style="display:inline-block">
-                            <span class="message-data-name">{{contactName}}</span>
-                            <span class="message-data-time">{{message.createdAt.substring(11,16)}}</span>
-                            <div class="user-message" ng-bind-html="message.body">
-                            </div>
-                        </div>
-                    </div>
-                    <div ng-if="message.direction=='out'" layout="row" layout-align="end">
-                        <div style="display:inline-block">
-                            <span class="message-data-time">{{message.createdAt.substring(11,16)}}</span>
-                            <div class="agent-message" ng-bind-html="message.body">
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            </md-content>
-            <div layout="row" flex="1" layout-align="start center" ng-if="!interactionClosed" class="block-footer">
-                <md-input-container style="width:100%" class="md-block">
-                    <label>Post your message</label>
-                    <textarea ng-model="text.content" rows="2" ng-keypress="keyPress($event)"
-                        md-select-on-focus></textarea>
-                </md-input-container>
-                <md-button ng-click="send()" class="md-raised md-primary">Send</md-button>
-                <md-button aria-label="attachment" flow-btn
-                    flow-name="ngFlow.flow" flow-files-submitted="upload()" flow-init="ngFlowOptions"
-                    class="md-raised md-primary"
-                    flow-file-added="fileAdded($file)" flow-file-success="fileSuccess($file, $message)">Attach</md-button>
-            </div>
-            <div ng-if="interactionClosed">
-                <md-input-container class="md-block">
-                    <label>Disposition</label>
-                    <md-select name="disposition" ng-model="dispo.firstLevelDisposition"
-                        ng-change="onDispositionChange('first')" required>
-                        <md-option ng-value="null" ng-if="!dispo.mandatoryDisposition">NONE</md-option>
-                        <md-option ng-value="disposition"
-                            ng-repeat="disposition in dispositions | filter: { level: 'first' } : true">
-                            {{ disposition.name }}</md-option>
-                    </md-select>
-                    <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched"
-                        role="alert">
-                        <div ng-message="required">
-                            <span>Disposition field is required</span>
-                        </div>
-                    </div>
-                </md-input-container>
-                <div ng-if="dispo.firstLevelDisposition && dispo.anySecondLevelDisposition" layout="row"
-                    layout-align="start center">
-                    <md-input-container class="md-block" flex>
-                        <label>Second Level Disposition</label>
-                        <md-select name="secondLevelDisposition" ng-model="dispo.secondLevelDisposition"
-                            ng-change="onDispositionChange('second')">
-                            <md-option ng-value="disposition"
-                                ng-repeat="disposition in dispositions | filter: { level: 'second', ParentId: dispo.firstLevelDisposition.id } : true">
-                                {{ disposition.name }}</md-option>
-                        </md-select>
-                    </md-input-container>
-                    <md-button ng-if="dispo.secondLevelDisposition" ng-click="clearDispositionSelection('second')"
-                        class="md-icon-button">
-                        <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">
-                        </md-icon>
-                    </md-button>
-                </div>
-                <div ng-if="dispo.secondLevelDisposition && dispo.anyThirdLevelDisposition" layout="row"
-                    layout-align="start center">
-                    <md-input-container class="md-block" flex>
-                        <label>Third Level Disposition</label>
-                        <md-select name="thirdLevelDisposition" ng-model="dispo.thirdLevelDisposition">
-                            <md-option ng-value="disposition"
-                                ng-repeat="disposition in dispositions | filter: { level: 'third', ParentId: dispo.secondLevelDisposition.id } : true"
-                                ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>
-                        </md-select>
-                    </md-input-container>
-                    <md-button ng-if="dispo.thirdLevelDisposition" ng-click="clearDispositionSelection('third')"
-                        class="md-icon-button">
-                        <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">
-                        </md-icon>
-                    </md-button>
-                </div>
-                
-                <md-input-container class="md-block">
-                    <label>Note</label>
-                    <textarea ng-model="dispo.note" md-maxlength="255" max-rows="5" autofocus></textarea>
-                    <div layout="row" layout-align="center center"></div>
-                        <md-button class="md-raised md-primary" ng-click="saveDisposition()">Save disposition</md-button>
-                    </div>
-                </md-input-container>
-                
-                <!--
-                <div class="error-list">
-                    <div ng-repeat="error in errors" class="error" layout="row" layout-align="space-between center">
-                        <div>
-                            <span class="message">{{error.message}}</span>
-                            <span class="type">({{error.type}})</span>
-                        </div>
-                        <md-button class="md-icon-button">
-                            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>
-                        </md-button>
-                    </div>
-                </div>
-                -->
-            </div>
-        </div>
-    </div>
-</body>
-
-</html>
-<script src="js/angular.min.js"></script>
-<script src="js/angular-animate.min.js"></script>
-<script src="js/angular-aria.min.js"></script>
-<script src="js/angular-messages.min.js"></script>
-<script src="js/angular-material.min.js"></script>
-<script src="js/angular-sanitize.min.js"></script>
-<script src="js/angular-cookies.min.js"></script>
-<script src="js/ng-flow-standalone.min.js"></script>
-<script type="text/javascript" src="/socket.io/socket.io.js"></script>
-<script src="js/angular-resource.js"></script>
-<script src="js/index.socket.js"></script>
-<script src="js/lodash.min.js"></script>
-<script src="js/tvox_integration.js"></script>
-<script type="text/javascript" src="answer.controller.js"></script>
\ No newline at end of file
diff --git a/public/snippets/tvox/css/angular-material.min.css b/public/snippets/tvox/css/angular-material.min.css
deleted file mode 100644
index 81f792a..0000000
--- a/public/snippets/tvox/css/angular-material.min.css
+++ /dev/null
@@ -1,6 +0,0 @@
-/*!
- * AngularJS Material Design
- * https://github.com/angular/material
- * @license MIT
- * v1.2.2
\ No newline at end of file
diff --git a/public/snippets/tvox/css/style.css b/public/snippets/tvox/css/style.css
deleted file mode 100644
index 91be02e..0000000
--- a/public/snippets/tvox/css/style.css
+++ /dev/null
@@ -1,47 +0,0 @@
-.btn-accept {background-color: green!important;}
-.btn-refuse {background-color: red!important;}
-
-.message-data-name {font-size:12px;
-    font-weight: bold;}
-
-.message-data-time { 
-    color: #a8aab1;
-    font-size:12px;
-    padding-left: 6px;
-}
-
-.user-message {
-    background-color: #86BB71;
-    color:#ffffff;
-    padding:5px;
-    display: block;
-    font-size:13px;
-}
-.agent-message {
-    background-color: #94C2ED;
-    color:#ffffff;
-    padding:5px;
-    display: block;
-    font-size:13px;
-}
-.message {
-    margin-bottom:4px
-}
-
-.block-left {
-    float: left;
-}
-.block-right {
-    float: right;
-}
-
-.footer {
-    position:fixed;
-bottom:10px;
-width:100%;
-}
-
-
-main {overflow-y:auto}
-
-.block-footer {margin-bottom:10px}
\ No newline at end of file
diff --git a/public/snippets/tvox/js/angular-animate.min.js b/public/snippets/tvox/js/angular-animate.min.js
deleted file mode 100644
index 72162c5..0000000
--- a/public/snippets/tvox/js/angular-animate.min.js
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- AngularJS v1.8.2
- (c) 2010-2020 Google LLC. http://angularjs.org
- License: MIT
-*/
-d.push(e.start());c.all(d,function(a){f.complete(a)});var f=new c({end:a(),cancel:a()});return f}}}else return d(a)}}]}])})(window,window.angular);
-//# sourceMappingURL=angular-animate.min.js.map
diff --git a/public/snippets/tvox/js/angular-aria.min.js b/public/snippets/tvox/js/angular-aria.min.js
deleted file mode 100644
index 615c512..0000000
--- a/public/snippets/tvox/js/angular-aria.min.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- AngularJS v1.8.2
- (c) 2010-2020 Google LLC. http://angularjs.org
- License: MIT
-*/
-!f.ngKeyup))d.on("keydown",function(a){function d(){l(e,{$event:a})}var f=a.which||a.keyCode;if(13===f||32===f)-1!==c.indexOf(a.target.nodeName)||a.target.isContentEditable||a.preventDefault(),e.$apply(d)})}}}}}]).directive("ngDblclick",["$aria",function(a){return function(e,k,h){h.hasOwnProperty("ngAriaDisable")||!a.config("tabindex")||k.attr("tabindex")||m(k,c)||k.attr("tabindex",0)}}])})(window,window.angular);
-//# sourceMappingURL=angular-aria.min.js.map
diff --git a/public/snippets/tvox/js/angular-cookies.min.js b/public/snippets/tvox/js/angular-cookies.min.js
deleted file mode 100644
index 1f0b512..0000000
--- a/public/snippets/tvox/js/angular-cookies.min.js
+++ /dev/null
@@ -1,9 +0,0 @@
-/*
- AngularJS v1.8.2
- (c) 2010-2020 Google LLC. http://angularjs.org
- License: MIT
-*/
-["$document","$log","$browser"];e.module("ngCookies").provider("$$cookieWriter",function(){this.$get=m})})(window,window.angular);
-//# sourceMappingURL=angular-cookies.min.js.map
diff --git a/public/snippets/tvox/js/angular-material.min.js b/public/snippets/tvox/js/angular-material.min.js
deleted file mode 100644
index 11b6b11..0000000
--- a/public/snippets/tvox/js/angular-material.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*!
- * AngularJS Material Design
- * https://github.com/angular/material
- * @license MIT
- * v1.2.2
- */
\ No newline at end of file
diff --git a/public/snippets/tvox/js/angular-messages.min.js b/public/snippets/tvox/js/angular-messages.min.js
deleted file mode 100644
index b3b1c37..0000000
--- a/public/snippets/tvox/js/angular-messages.min.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- AngularJS v1.8.2
- (c) 2010-2020 Google LLC. http://angularjs.org
- License: MIT
-*/
-q(!0))})(window,window.angular);
-//# sourceMappingURL=angular-messages.min.js.map
diff --git a/public/snippets/tvox/js/angular-resource.js b/public/snippets/tvox/js/angular-resource.js
deleted file mode 100644
index e8bb301..0000000
--- a/public/snippets/tvox/js/angular-resource.js
+++ /dev/null
@@ -1,863 +0,0 @@
-/**
- * @license AngularJS v1.5.8
- * (c) 2010-2016 Google, Inc. http://angularjs.org
- * License: MIT
- */
-(function(window, angular) {'use strict';
-
-var $resourceMinErr = angular.$$minErr('$resource');
-
-// Helper functions and regex to lookup a dotted path on an object
-// stopping at undefined/null.  The path must be composed of ASCII
-// identifiers (just like $parse)
-var MEMBER_NAME_REGEX = /^(\.[a-zA-Z_$@][0-9a-zA-Z_$@]*)+$/;
-
-function isValidDottedPath(path) {
-  return (path != null && path !== '' && path !== 'hasOwnProperty' &&
-      MEMBER_NAME_REGEX.test('.' + path));
-}
-
-function lookupDottedPath(obj, path) {
-  if (!isValidDottedPath(path)) {
-    throw $resourceMinErr('badmember', 'Dotted member path "@{0}" is invalid.', path);
-  }
-  var keys = path.split('.');
-  for (var i = 0, ii = keys.length; i < ii && angular.isDefined(obj); i++) {
-    var key = keys[i];
-    obj = (obj !== null) ? obj[key] : undefined;
-  }
-  return obj;
-}
-
-/**
- * Create a shallow copy of an object and clear other fields from the destination
- */
-function shallowClearAndCopy(src, dst) {
-  dst = dst || {};
-
-  angular.forEach(dst, function(value, key) {
-    delete dst[key];
-  });
-
-  for (var key in src) {
-    if (src.hasOwnProperty(key) && !(key.charAt(0) === '$' && key.charAt(1) === '$')) {
-      dst[key] = src[key];
-    }
-  }
-
-  return dst;
-}
-
-/**
- * @ngdoc module
- * @name ngResource
- * @description
- *
- * # ngResource
- *
- * The `ngResource` module provides interaction support with RESTful services
- * via the $resource service.
- *
- *
- * <div doc-module-components="ngResource"></div>
- *
- * See {@link ngResource.$resourceProvider} and {@link ngResource.$resource} for usage.
- */
-
-/**
- * @ngdoc provider
- * @name $resourceProvider
- *
- * @description
- *
- * Use `$resourceProvider` to change the default behavior of the {@link ngResource.$resource}
- * service.
- *
- * ## Dependencies
- * Requires the {@link ngResource } module to be installed.
- *
- */
-
-/**
- * @ngdoc service
- * @name $resource
- * @requires $http
- * @requires ng.$log
- * @requires $q
- * @requires ng.$timeout
- *
- * @description
- * A factory which creates a resource object that lets you interact with
- * [RESTful](http://en.wikipedia.org/wiki/Representational_State_Transfer) server-side data sources.
- *
- * The returned resource object has action methods which provide high-level behaviors without
- * the need to interact with the low level {@link ng.$http $http} service.
- *
- * Requires the {@link ngResource `ngResource`} module to be installed.
- *
- * By default, trailing slashes will be stripped from the calculated URLs,
- * which can pose problems with server backends that do not expect that
- * behavior.  This can be disabled by configuring the `$resourceProvider` like
- * this:
- *
- * ```js
-     app.config(['$resourceProvider', function($resourceProvider) {
-       // Don't strip trailing slashes from calculated URLs
-       $resourceProvider.defaults.stripTrailingSlashes = false;
-     }]);
- * ```
- *
- * @param {string} url A parameterized URL template with parameters prefixed by `:` as in
- *   `/user/:username`. If you are using a URL with a port number (e.g.
- *   `http://example.com:8080/api`), it will be respected.
- *
- *   If you are using a url with a suffix, just add the suffix, like this:
- *   `$resource('http://example.com/resource.json')` or `$resource('http://example.com/:id.json')`
- *   or even `$resource('http://example.com/resource/:resource_id.:format')`
- *   If the parameter before the suffix is empty, :resource_id in this case, then the `/.` will be
- *   collapsed down to a single `.`.  If you need this sequence to appear and not collapse then you
- *   can escape it with `/\.`.
- *
- * @param {Object=} paramDefaults Default values for `url` parameters. These can be overridden in
- *   `actions` methods. If a parameter value is a function, it will be called every time
- *   a param value needs to be obtained for a request (unless the param was overridden). The function
- *   will be passed the current data value as an argument.
- *
- *   Each key value in the parameter object is first bound to url template if present and then any
- *   excess keys are appended to the url search query after the `?`.
- *
- *   Given a template `/path/:verb` and parameter `{verb:'greet', salutation:'Hello'}` results in
- *   URL `/path/greet?salutation=Hello`.
- *
- *   If the parameter value is prefixed with `@`, then the value for that parameter will be
- *   extracted from the corresponding property on the `data` object (provided when calling a
- *   "non-GET" action method).
- *   For example, if the `defaultParam` object is `{someParam: '@someProp'}` then the value of
- *   `someParam` will be `data.someProp`.
- *   Note that the parameter will be ignored, when calling a "GET" action method (i.e. an action
- *   method that does not accept a request body)
- *
- * @param {Object.<Object>=} actions Hash with declaration of custom actions that should extend
- *   the default set of resource actions. The declaration should be created in the format of {@link
- *   ng.$http#usage $http.config}:
- *
- *       {action1: {method:?, params:?, isArray:?, headers:?, ...},
- *        action2: {method:?, params:?, isArray:?, headers:?, ...},
- *        ...}
- *
- *   Where:
- *
- *   - **`action`** – {string} – The name of action. This name becomes the name of the method on
- *     your resource object.
- *   - **`method`** – {string} – Case insensitive HTTP method (e.g. `GET`, `POST`, `PUT`,
- *     `DELETE`, `JSONP`, etc).
- *   - **`params`** – {Object=} – Optional set of pre-bound parameters for this action. If any of
- *     the parameter value is a function, it will be called every time when a param value needs to
- *     be obtained for a request (unless the param was overridden). The function will be passed the
- *     current data value as an argument.
- *   - **`url`** – {string} – action specific `url` override. The url templating is supported just
- *     like for the resource-level urls.
- *   - **`isArray`** – {boolean=} – If true then the returned object for this action is an array,
- *     see `returns` section.
- *   - **`transformRequest`** –
- *     `{function(data, headersGetter)|Array.<function(data, headersGetter)>}` –
- *     transform function or an array of such functions. The transform function takes the http
- *     request body and headers and returns its transformed (typically serialized) version.
- *     By default, transformRequest will contain one function that checks if the request data is
- *     an object and serializes to using `angular.toJson`. To prevent this behavior, set
- *     `transformRequest` to an empty array: `transformRequest: []`
- *   - **`transformResponse`** –
- *     `{function(data, headersGetter)|Array.<function(data, headersGetter)>}` –
- *     transform function or an array of such functions. The transform function takes the http
- *     response body and headers and returns its transformed (typically deserialized) version.
- *     By default, transformResponse will contain one function that checks if the response looks
- *     like a JSON string and deserializes it using `angular.fromJson`. To prevent this behavior,
- *     set `transformResponse` to an empty array: `transformResponse: []`
- *   - **`cache`** – `{boolean|Cache}` – If true, a default $http cache will be used to cache the
- *     GET request, otherwise if a cache instance built with
- *     {@link ng.$cacheFactory $cacheFactory}, this cache will be used for
- *     caching.
- *   - **`timeout`** – `{number}` – timeout in milliseconds.<br />
- *     **Note:** In contrast to {@link ng.$http#usage $http.config}, {@link ng.$q promises} are
- *     **not** supported in $resource, because the same value would be used for multiple requests.
- *     If you are looking for a way to cancel requests, you should use the `cancellable` option.
- *   - **`cancellable`** – `{boolean}` – if set to true, the request made by a "non-instance" call
- *     will be cancelled (if not already completed) by calling `$cancelRequest()` on the call's
- *     return value. Calling `$cancelRequest()` for a non-cancellable or an already
- *     completed/cancelled request will have no effect.<br />
- *   - **`withCredentials`** - `{boolean}` - whether to set the `withCredentials` flag on the
- *     XHR object. See
- *     [requests with credentials](https://developer.mozilla.org/en/http_access_control#section_5)
- *     for more information.
- *   - **`responseType`** - `{string}` - see
- *     [requestType](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#responseType).
- *   - **`interceptor`** - `{Object=}` - The interceptor object has two optional methods -
- *     `response` and `responseError`. Both `response` and `responseError` interceptors get called
- *     with `http response` object. See {@link ng.$http $http interceptors}.
- *
- * @param {Object} options Hash with custom settings that should extend the
- *   default `$resourceProvider` behavior.  The supported options are:
- *
- *   - **`stripTrailingSlashes`** – {boolean} – If true then the trailing
- *   slashes from any calculated URL will be stripped. (Defaults to true.)
- *   - **`cancellable`** – {boolean} – If true, the request made by a "non-instance" call will be
- *   cancelled (if not already completed) by calling `$cancelRequest()` on the call's return value.
- *   This can be overwritten per action. (Defaults to false.)
- *
- * @returns {Object} A resource "class" object with methods for the default set of resource actions
- *   optionally extended with custom `actions`. The default set contains these actions:
- *   ```js
- *   { 'get':    {method:'GET'},
- *     'save':   {method:'POST'},
- *     'query':  {method:'GET', isArray:true},
- *     'remove': {method:'DELETE'},
- *     'delete': {method:'DELETE'} };
- *   ```
- *
- *   Calling these methods invoke an {@link ng.$http} with the specified http method,
- *   destination and parameters. When the data is returned from the server then the object is an
- *   instance of the resource class. The actions `save`, `remove` and `delete` are available on it
- *   as  methods with the `$` prefix. This allows you to easily perform CRUD operations (create,
- *   read, update, delete) on server-side data like this:
- *   ```js
- *   var User = $resource('/user/:userId', {userId:'@id'});
- *   var user = User.get({userId:123}, function() {
- *     user.abc = true;
- *     user.$save();
- *   });
- *   ```
- *
- *   It is important to realize that invoking a $resource object method immediately returns an
- *   empty reference (object or array depending on `isArray`). Once the data is returned from the
- *   server the existing reference is populated with the actual data. This is a useful trick since
- *   usually the resource is assigned to a model which is then rendered by the view. Having an empty
- *   object results in no rendering, once the data arrives from the server then the object is
- *   populated with the data and the view automatically re-renders itself showing the new data. This
- *   means that in most cases one never has to write a callback function for the action methods.
- *
- *   The action methods on the class object or instance object can be invoked with the following
- *   parameters:
- *
- *   - HTTP GET "class" actions: `Resource.action([parameters], [success], [error])`
- *   - non-GET "class" actions: `Resource.action([parameters], postData, [success], [error])`
- *   - non-GET instance actions:  `instance.$action([parameters], [success], [error])`
- *
- *
- *   Success callback is called with (value, responseHeaders) arguments, where the value is
- *   the populated resource instance or collection object. The error callback is called
- *   with (httpResponse) argument.
- *
- *   Class actions return empty instance (with additional properties below).
- *   Instance actions return promise of the action.
- *
- *   The Resource instances and collections have these additional properties:
- *
- *   - `$promise`: the {@link ng.$q promise} of the original server interaction that created this
- *     instance or collection.
- *
- *     On success, the promise is resolved with the same resource instance or collection object,
- *     updated with data from server. This makes it easy to use in
- *     {@link ngRoute.$routeProvider resolve section of $routeProvider.when()} to defer view
- *     rendering until the resource(s) are loaded.
- *
- *     On failure, the promise is rejected with the {@link ng.$http http response} object, without
- *     the `resource` property.
- *
- *     If an interceptor object was provided, the promise will instead be resolved with the value
- *     returned by the interceptor.
- *
- *   - `$resolved`: `true` after first server interaction is completed (either with success or
- *      rejection), `false` before that. Knowing if the Resource has been resolved is useful in
- *      data-binding.
- *
- *   The Resource instances and collections have these additional methods:
- *
- *   - `$cancelRequest`: If there is a cancellable, pending request related to the instance or
- *      collection, calling this method will abort the request.
- *
- *   The Resource instances have these additional methods:
- *
- *   - `toJSON`: It returns a simple object without any of the extra properties added as part of
- *     the Resource API. This object can be serialized through {@link angular.toJson} safely
- *     without attaching Angular-specific fields. Notice that `JSON.stringify` (and
- *     `angular.toJson`) automatically use this method when serializing a Resource instance
- *     (see [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#toJSON()_behavior)).
- *
- * @example
- *
- * # Credit card resource
- *
- * ```js
-     // Define CreditCard class
-     var CreditCard = $resource('/user/:userId/card/:cardId',
-      {userId:123, cardId:'@id'}, {
-       charge: {method:'POST', params:{charge:true}}
-      });
-
-     // We can retrieve a collection from the server
-     var cards = CreditCard.query(function() {
-       // GET: /user/123/card
-       // server returns: [ {id:456, number:'1234', name:'Smith'} ];
-
-       var card = cards[0];
-       // each item is an instance of CreditCard
-       expect(card instanceof CreditCard).toEqual(true);
-       card.name = "J. Smith";
-       // non GET methods are mapped onto the instances
-       card.$save();
-       // POST: /user/123/card/456 {id:456, number:'1234', name:'J. Smith'}
-       // server returns: {id:456, number:'1234', name: 'J. Smith'};
-
-       // our custom method is mapped as well.
-       card.$charge({amount:9.99});
-       // POST: /user/123/card/456?amount=9.99&charge=true {id:456, number:'1234', name:'J. Smith'}
-     });
-
-     // we can create an instance as well
-     var newCard = new CreditCard({number:'0123'});
-     newCard.name = "Mike Smith";
-     newCard.$save();
-     // POST: /user/123/card {number:'0123', name:'Mike Smith'}
-     // server returns: {id:789, number:'0123', name: 'Mike Smith'};
-     expect(newCard.id).toEqual(789);
- * ```
- *
- * The object returned from this function execution is a resource "class" which has "static" method
- * for each action in the definition.
- *
- * Calling these methods invoke `$http` on the `url` template with the given `method`, `params` and
- * `headers`.
- *
- * @example
- *
- * # User resource
- *
- * When the data is returned from the server then the object is an instance of the resource type and
- * all of the non-GET methods are available with `$` prefix. This allows you to easily support CRUD
- * operations (create, read, update, delete) on server-side data.
-
-   ```js
-     var User = $resource('/user/:userId', {userId:'@id'});
-     User.get({userId:123}, function(user) {
-       user.abc = true;
-       user.$save();
-     });
-   ```
- *
- * It's worth noting that the success callback for `get`, `query` and other methods gets passed
- * in the response that came from the server as well as $http header getter function, so one
- * could rewrite the above example and get access to http headers as:
- *
-   ```js
-     var User = $resource('/user/:userId', {userId:'@id'});
-     User.get({userId:123}, function(user, getResponseHeaders){
-       user.abc = true;
-       user.$save(function(user, putResponseHeaders) {
-         //user => saved user object
-         //putResponseHeaders => $http header getter
-       });
-     });
-   ```
- *
- * You can also access the raw `$http` promise via the `$promise` property on the object returned
- *
-   ```
-     var User = $resource('/user/:userId', {userId:'@id'});
-     User.get({userId:123})
-         .$promise.then(function(user) {
-           $scope.user = user;
-         });
-   ```
- *
- * @example
- *
- * # Creating a custom 'PUT' request
- *
- * In this example we create a custom method on our resource to make a PUT request
- * ```js
- *    var app = angular.module('app', ['ngResource', 'ngRoute']);
- *
- *    // Some APIs expect a PUT request in the format URL/object/ID
- *    // Here we are creating an 'update' method
- *    app.factory('Notes', ['$resource', function($resource) {
- *    return $resource('/notes/:id', null,
- *        {
- *            'update': { method:'PUT' }
- *        });
- *    }]);
- *
- *    // In our controller we get the ID from the URL using ngRoute and $routeParams
- *    // We pass in $routeParams and our Notes factory along with $scope
- *    app.controller('NotesCtrl', ['$scope', '$routeParams', 'Notes',
-                                      function($scope, $routeParams, Notes) {
- *    // First get a note object from the factory
- *    var note = Notes.get({ id:$routeParams.id });
- *    $id = note.id;
- *
- *    // Now call update passing in the ID first then the object you are updating
- *    Notes.update({ id:$id }, note);
- *
- *    // This will PUT /notes/ID with the note object in the request payload
- *    }]);
- * ```
- *
- * @example
- *
- * # Cancelling requests
- *
- * If an action's configuration specifies that it is cancellable, you can cancel the request related
- * to an instance or collection (as long as it is a result of a "non-instance" call):
- *
-   ```js
-     // ...defining the `Hotel` resource...
-     var Hotel = $resource('/api/hotel/:id', {id: '@id'}, {
-       // Let's make the `query()` method cancellable
-       query: {method: 'get', isArray: true, cancellable: true}
-     });
-
-     // ...somewhere in the PlanVacationController...
-     ...
-     this.onDestinationChanged = function onDestinationChanged(destination) {
-       // We don't care about any pending request for hotels
-       // in a different destination any more
-       this.availableHotels.$cancelRequest();
-
-       // Let's query for hotels in '<destination>'
-       // (calls: /api/hotel?location=<destination>)
-       this.availableHotels = Hotel.query({location: destination});
-     };
-   ```
- *
- */
-angular.module('ngResource', ['ng']).
-  provider('$resource', function() {
-    var PROTOCOL_AND_DOMAIN_REGEX = /^https?:\/\/[^\/]*/;
-    var provider = this;
-
-    /**
-     * @ngdoc property
-     * @name $resourceProvider#defaults
-     * @description
-     * Object containing default options used when creating `$resource` instances.
-     *
-     * The default values satisfy a wide range of usecases, but you may choose to overwrite any of
-     * them to further customize your instances. The available properties are:
-     *
-     * - **stripTrailingSlashes** – `{boolean}` – If true, then the trailing slashes from any
-     *   calculated URL will be stripped.<br />
-     *   (Defaults to true.)
-     * - **cancellable** – `{boolean}` – If true, the request made by a "non-instance" call will be
-     *   cancelled (if not already completed) by calling `$cancelRequest()` on the call's return
-     *   value. For more details, see {@link ngResource.$resource}. This can be overwritten per
-     *   resource class or action.<br />
-     *   (Defaults to false.)
-     * - **actions** - `{Object.<Object>}` - A hash with default actions declarations. Actions are
-     *   high-level methods corresponding to RESTful actions/methods on resources. An action may
-     *   specify what HTTP method to use, what URL to hit, if the return value will be a single
-     *   object or a collection (array) of objects etc. For more details, see
-     *   {@link ngResource.$resource}. The actions can also be enhanced or overwritten per resource
-     *   class.<br />
-     *   The default actions are:
-     *   ```js
-     *   {
-     *     get: {method: 'GET'},
-     *     save: {method: 'POST'},
-     *     query: {method: 'GET', isArray: true},
-     *     remove: {method: 'DELETE'},
-     *     delete: {method: 'DELETE'}
-     *   }
-     *   ```
-     *
-     * #### Example
-     *
-     * For example, you can specify a new `update` action that uses the `PUT` HTTP verb:
-     *
-     * ```js
-     *   angular.
-     *     module('myApp').
-     *     config(['resourceProvider', function ($resourceProvider) {
-     *       $resourceProvider.defaults.actions.update = {
-     *         method: 'PUT'
-     *       };
-     *     });
-     * ```
-     *
-     * Or you can even overwrite the whole `actions` list and specify your own:
-     *
-     * ```js
-     *   angular.
-     *     module('myApp').
-     *     config(['resourceProvider', function ($resourceProvider) {
-     *       $resourceProvider.defaults.actions = {
-     *         create: {method: 'POST'}
-     *         get:    {method: 'GET'},
-     *         getAll: {method: 'GET', isArray:true},
-     *         update: {method: 'PUT'},
-     *         delete: {method: 'DELETE'}
-     *       };
-     *     });
-     * ```
-     *
-     */
-    this.defaults = {
-      // Strip slashes by default
-      stripTrailingSlashes: true,
-
-      // Make non-instance requests cancellable (via `$cancelRequest()`)
-      cancellable: false,
-
-      // Default actions configuration
-      actions: {
-        'get': {method: 'GET'},
-        'save': {method: 'POST'},
-        'query': {method: 'GET', isArray: true},
-        'remove': {method: 'DELETE'},
-        'delete': {method: 'DELETE'}
-      }
-    };
-
-    this.$get = ['$http', '$log', '$q', '$timeout', function($http, $log, $q, $timeout) {
-
-      var noop = angular.noop,
-        forEach = angular.forEach,
-        extend = angular.extend,
-        copy = angular.copy,
-        isFunction = angular.isFunction;
-
-      /**
-       * We need our custom method because encodeURIComponent is too aggressive and doesn't follow
-       * http://www.ietf.org/rfc/rfc3986.txt with regards to the character set
-       * (pchar) allowed in path segments:
-       *    segment       = *pchar
-       *    pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
-       *    pct-encoded   = "%" HEXDIG HEXDIG
-       *    unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
-       *    sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
-       *                     / "*" / "+" / "," / ";" / "="
-       */
-      function encodeUriSegment(val) {
-        return encodeUriQuery(val, true).
-          replace(/%26/gi, '&').
-          replace(/%3D/gi, '=').
-          replace(/%2B/gi, '+');
-      }
-
-
-      /**
-       * This method is intended for encoding *key* or *value* parts of query component. We need a
-       * custom method because encodeURIComponent is too aggressive and encodes stuff that doesn't
-       * have to be encoded per http://tools.ietf.org/html/rfc3986:
-       *    query       = *( pchar / "/" / "?" )
-       *    pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
-       *    unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
-       *    pct-encoded   = "%" HEXDIG HEXDIG
-       *    sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
-       *                     / "*" / "+" / "," / ";" / "="
-       */
-      function encodeUriQuery(val, pctEncodeSpaces) {
-        return encodeURIComponent(val).
-          replace(/%40/gi, '@').
-          replace(/%3A/gi, ':').
-          replace(/%24/g, '$').
-          replace(/%2C/gi, ',').
-          replace(/%20/g, (pctEncodeSpaces ? '%20' : '+'));
-      }
-
-      function Route(template, defaults) {
-        this.template = template;
-        this.defaults = extend({}, provider.defaults, defaults);
-        this.urlParams = {};
-      }
-
-      Route.prototype = {
-        setUrlParams: function(config, params, actionUrl) {
-          var self = this,
-            url = actionUrl || self.template,
-            val,
-            encodedVal,
-            protocolAndDomain = '';
-
-          var urlParams = self.urlParams = {};
-          forEach(url.split(/\W/), function(param) {
-            if (param === 'hasOwnProperty') {
-              throw $resourceMinErr('badname', "hasOwnProperty is not a valid parameter name.");
-            }
-            if (!(new RegExp("^\\d+$").test(param)) && param &&
-              (new RegExp("(^|[^\\\\]):" + param + "(\\W|$)").test(url))) {
-              urlParams[param] = {
-                isQueryParamValue: (new RegExp("\\?.*=:" + param + "(?:\\W|$)")).test(url)
-              };
-            }
-          });
-          url = url.replace(/\\:/g, ':');
-          url = url.replace(PROTOCOL_AND_DOMAIN_REGEX, function(match) {
-            protocolAndDomain = match;
-            return '';
-          });
-
-          params = params || {};
-          forEach(self.urlParams, function(paramInfo, urlParam) {
-            val = params.hasOwnProperty(urlParam) ? params[urlParam] : self.defaults[urlParam];
-            if (angular.isDefined(val) && val !== null) {
-              if (paramInfo.isQueryParamValue) {
-                encodedVal = encodeUriQuery(val, true);
-              } else {
-                encodedVal = encodeUriSegment(val);
-              }
-              url = url.replace(new RegExp(":" + urlParam + "(\\W|$)", "g"), function(match, p1) {
-                return encodedVal + p1;
-              });
-            } else {
-              url = url.replace(new RegExp("(\/?):" + urlParam + "(\\W|$)", "g"), function(match,
-                  leadingSlashes, tail) {
-                if (tail.charAt(0) == '/') {
-                  return tail;
-                } else {
-                  return leadingSlashes + tail;
-                }
-              });
-            }
-          });
-
-          // strip trailing slashes and set the url (unless this behavior is specifically disabled)
-          if (self.defaults.stripTrailingSlashes) {
-            url = url.replace(/\/+$/, '') || '/';
-          }
-
-          // then replace collapse `/.` if found in the last URL path segment before the query
-          // E.g. `http://url.com/id./format?q=x` becomes `http://url.com/id.format?q=x`
-          url = url.replace(/\/\.(?=\w+($|\?))/, '.');
-          // replace escaped `/\.` with `/.`
-          config.url = protocolAndDomain + url.replace(/\/\\\./, '/.');
-
-
-          // set params - delegate param encoding to $http
-          forEach(params, function(value, key) {
-            if (!self.urlParams[key]) {
-              config.params = config.params || {};
-              config.params[key] = value;
-            }
-          });
-        }
-      };
-
-
-      function resourceFactory(url, paramDefaults, actions, options) {
-        var route = new Route(url, options);
-
-        actions = extend({}, provider.defaults.actions, actions);
-
-        function extractParams(data, actionParams) {
-          var ids = {};
-          actionParams = extend({}, paramDefaults, actionParams);
-          forEach(actionParams, function(value, key) {
-            if (isFunction(value)) { value = value(data); }
-            ids[key] = value && value.charAt && value.charAt(0) == '@' ?
-              lookupDottedPath(data, value.substr(1)) : value;
-          });
-          return ids;
-        }
-
-        function defaultResponseInterceptor(response) {
-          return response.resource;
-        }
-
-        function Resource(value) {
-          shallowClearAndCopy(value || {}, this);
-        }
-
-        Resource.prototype.toJSON = function() {
-          var data = extend({}, this);
-          delete data.$promise;
-          delete data.$resolved;
-          return data;
-        };
-
-        forEach(actions, function(action, name) {
-          var hasBody = /^(POST|PUT|PATCH)$/i.test(action.method);
-          var numericTimeout = action.timeout;
-          var cancellable = angular.isDefined(action.cancellable) ? action.cancellable :
-              (options && angular.isDefined(options.cancellable)) ? options.cancellable :
-              provider.defaults.cancellable;
-
-          if (numericTimeout && !angular.isNumber(numericTimeout)) {
-            $log.debug('ngResource:\n' +
-                       '  Only numeric values are allowed as `timeout`.\n' +
-                       '  Promises are not supported in $resource, because the same value would ' +
-                       'be used for multiple requests. If you are looking for a way to cancel ' +
-                       'requests, you should use the `cancellable` option.');
-            delete action.timeout;
-            numericTimeout = null;
-          }
-
-          Resource[name] = function(a1, a2, a3, a4) {
-            var params = {}, data, success, error;
-
-            /* jshint -W086 */ /* (purposefully fall through case statements) */
-            switch (arguments.length) {
-              case 4:
-                error = a4;
-                success = a3;
-              //fallthrough
-              case 3:
-              case 2:
-                if (isFunction(a2)) {
-                  if (isFunction(a1)) {
-                    success = a1;
-                    error = a2;
-                    break;
-                  }
-
-                  success = a2;
-                  error = a3;
-                  //fallthrough
-                } else {
-                  params = a1;
-                  data = a2;
-                  success = a3;
-                  break;
-                }
-              case 1:
-                if (isFunction(a1)) success = a1;
-                else if (hasBody) data = a1;
-                else params = a1;
-                break;
-              case 0: break;
-              default:
-                throw $resourceMinErr('badargs',
-                  "Expected up to 4 arguments [params, data, success, error], got {0} arguments",
-                  arguments.length);
-            }
-            /* jshint +W086 */ /* (purposefully fall through case statements) */
-
-            var isInstanceCall = this instanceof Resource;
-            var value = isInstanceCall ? data : (action.isArray ? [] : new Resource(data));
-            var httpConfig = {};
-            var responseInterceptor = action.interceptor && action.interceptor.response ||
-              defaultResponseInterceptor;
-            var responseErrorInterceptor = action.interceptor && action.interceptor.responseError ||
-              undefined;
-            var timeoutDeferred;
-            var numericTimeoutPromise;
-
-            forEach(action, function(value, key) {
-              switch (key) {
-                default:
-                  httpConfig[key] = copy(value);
-                  break;
-                case 'params':
-                case 'isArray':
-                case 'interceptor':
-                case 'cancellable':
-                  break;
-              }
-            });
-
-            if (!isInstanceCall && cancellable) {
-              timeoutDeferred = $q.defer();
-              httpConfig.timeout = timeoutDeferred.promise;
-
-              if (numericTimeout) {
-                numericTimeoutPromise = $timeout(timeoutDeferred.resolve, numericTimeout);
-              }
-            }
-
-            if (hasBody) httpConfig.data = data;
-            route.setUrlParams(httpConfig,
-              extend({}, extractParams(data, action.params || {}), params),
-              action.url);
-
-            var promise = $http(httpConfig).then(function(response) {
-              var data = response.data;
-
-              if (data) {
-                // Need to convert action.isArray to boolean in case it is undefined
-                // jshint -W018
-                if (angular.isArray(data) !== (!!action.isArray)) {
-                  throw $resourceMinErr('badcfg',
-                      'Error in resource configuration for action `{0}`. Expected response to ' +
-                      'contain an {1} but got an {2} (Request: {3} {4})', name, action.isArray ? 'array' : 'object',
-                    angular.isArray(data) ? 'array' : 'object', httpConfig.method, httpConfig.url);
-                }
-                // jshint +W018
-                if (action.isArray) {
-                  value.length = 0;
-                  forEach(data, function(item) {
-                    if (typeof item === "object") {
-                      value.push(new Resource(item));
-                    } else {
-                      // Valid JSON values may be string literals, and these should not be converted
-                      // into objects. These items will not have access to the Resource prototype
-                      // methods, but unfortunately there
-                      value.push(item);
-                    }
-                  });
-                } else {
-                  var promise = value.$promise;     // Save the promise
-                  shallowClearAndCopy(data, value);
-                  value.$promise = promise;         // Restore the promise
-                }
-              }
-              response.resource = value;
-
-              return response;
-            }, function(response) {
-              (error || noop)(response);
-              return $q.reject(response);
-            });
-
-            promise['finally'](function() {
-              value.$resolved = true;
-              if (!isInstanceCall && cancellable) {
-                value.$cancelRequest = angular.noop;
-                $timeout.cancel(numericTimeoutPromise);
-                timeoutDeferred = numericTimeoutPromise = httpConfig.timeout = null;
-              }
-            });
-
-            promise = promise.then(
-              function(response) {
-                var value = responseInterceptor(response);
-                (success || noop)(value, response.headers);
-                return value;
-              },
-              responseErrorInterceptor);
-
-            if (!isInstanceCall) {
-              // we are creating instance / collection
-              // - set the initial promise
-              // - return the instance / collection
-              value.$promise = promise;
-              value.$resolved = false;
-              if (cancellable) value.$cancelRequest = timeoutDeferred.resolve;
-
-              return value;
-            }
-
-            // instance call
-            return promise;
-          };
-
-
-          Resource.prototype['$' + name] = function(params, success, error) {
-            if (isFunction(params)) {
-              error = success; success = params; params = {};
-            }
-            var result = Resource[name].call(this, params, this, success, error);
-            return result.$promise || result;
-          };
-        });
-
-        Resource.bind = function(additionalParamDefaults) {
-          return resourceFactory(url, extend({}, paramDefaults, additionalParamDefaults), actions);
-        };
-
-        return Resource;
-      }
-
-      return resourceFactory;
-    }];
-  });
-
-
-})(window, window.angular);
diff --git a/public/snippets/tvox/js/angular-sanitize.min.js b/public/snippets/tvox/js/angular-sanitize.min.js
deleted file mode 100644
index 813ff31..0000000
--- a/public/snippets/tvox/js/angular-sanitize.min.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- AngularJS v1.8.2
- (c) 2010-2020 Google LLC. http://angularjs.org
- License: MIT
-*/
-f||""===f)return f;if(!y(f))throw q("notstring",f);for(var p=z(u)?u:v(u)?function(){return u}:function(){return{}},n=f,l=[],w,m;f=n.match(g);)w=f[0],f[2]||f[4]||(w=(f[3]?"http://":"mailto:")+w),m=f.index,r(n.substr(0,m)),x(w,f[0].replace(t,"")),n=n.substring(m+f[0].length);r(n);return h(l.join(""))}}])})(window,window.angular);
-//# sourceMappingURL=angular-sanitize.min.js.map
diff --git a/public/snippets/tvox/js/angular.min.js b/public/snippets/tvox/js/angular.min.js
deleted file mode 100644
index 87108f9..0000000
--- a/public/snippets/tvox/js/angular.min.js
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- AngularJS v1.8.2
- (c) 2010-2020 Google LLC. http://angularjs.org
- License: MIT
-*/
-(function(z){'use strict';function ve(a){if(D(a))w(a.objectMaxDepth)&&(Xb.objectMaxDepth=Yb(a.objectMaxDepth)?a.objectMaxDepth:NaN),w(a.urlErrorParamsEnabled)&&Ga(a.urlErrorParamsEnabled)&&(Xb.urlErrorParamsEnabled=a.urlErrorParamsEnabled);else return Xb}function Yb(a){return X(a)&&0<a}function F(a,b){b=b||Error;return function(){var d=arguments[0],c;c="["+(a?a+":":"")+d+"] http://errors.angularjs.org/1.8.2/"+(a?a+"/":"")+d;for(d=1;d<arguments.length;d++){c=c+(1==d?"?":"&")+"p"+(d-1)+"=";var e=encodeURIComponent,
-c)};this.aHrefSanitizationTrustedUrlList=function(a){return w(a)?(b.aHrefSanitizationTrustedUrlList(a),this):b.aHrefSanitizationTrustedUrlList()};Object.defineProperty(this,"aHrefSanitizationWhitelist",{get:function(){return this.aHrefSanitizationTrustedUrlList},set:function(a){this.aHrefSanitizationTrustedUrlList=a}});this.imgSrcSanitizationTrustedUrlList=function(a){return w(a)?(b.imgSrcSanitizationTrustedUrlList(a),this):b.imgSrcSanitizationTrustedUrlList()};Object.defineProperty(this,"imgSrcSanitizationWhitelist",
-//# sourceMappingURL=angular.min.js.map
diff --git a/public/snippets/tvox/js/auth.service.js b/public/snippets/tvox/js/auth.service.js
deleted file mode 100644
index 093fd4d..0000000
--- a/public/snippets/tvox/js/auth.service.js
+++ /dev/null
@@ -1,599 +0,0 @@
-(function () {
-  'use strict';
-
-  angular.module('motion.auth',[]).factory('Auth', AuthService);
-
-  /** @ngInject */
-  function AuthService($mdDialog, $cookies, $q, $window, $document, api) {
-    var motionCurrentUser;
-
-    var service = {
-      getToken: getToken,
-      getCurrentUser: getCurrentUser,
-      getPermissions: getPermissions,
-      hasChildrenPermissions: hasChildrenPermissions,
-      hasModulePermissions: hasModulePermissions,
-      hasModulesPermissions: hasModulesPermissions,
-      hasRole: hasRole,
-      hasPermission: hasPermission,
-      hasResourcePermission: hasResourcePermission,
-      hasSectionPermissions: hasSectionPermissions,
-      hasSectionsPermissions: hasSectionsPermissions,
-      isAgent: isAgent,
-      isAdmin: isAdmin,
-      isLoggedIn: isLoggedIn,
-      isTelephone: isTelephone,
-      isUser: isUser,
-      login: login,
-      logout: logout,
-      parseCrudPermissions: parseCrudPermissions,
-      queueLogin: queueLogin,
-      reloadPermissions: reloadPermissions,
-      removeCookies: removeCookies,
-      retrieveUser: retrieveUser,
-      setCurrentUser: setCurrentUser,
-      getAuthenticationType: getAuthenticationType,
-      loginSSO: loginSSO
-    };
-
-    return service;
-
-    /**
-     * Gets the authorization token
-     * @return {Object} Authorization token
-     */
-    function getToken() {
-      return $cookies.get('motion.token');
-    }
-
-    /**
-     * Gets the currently logged in user
-     * @return {Object} The currently logged in user
-     */
-    function getCurrentUser() {
-      return motionCurrentUser;
-    }
-
-    /**
-     * Sets the currently logged in user
-     * @param {Object} user - The currently logged in user
-     */
-    function setCurrentUser(user) {
-      motionCurrentUser = _.merge(motionCurrentUser, user);
-    }
-
-    /**
-     * Adds an agent to the queues
-     * @param {Object} intrf - The agent interface
-     * @return {Object} Updated user
-     */
-    function queueLogin(intrf) {
-      return $q(function (resolve, reject) {
-        api.user
-          .login({
-            id: motionCurrentUser.id,
-            device: 'web',
-            intrf: intrf
-          })
-          .$promise.then(function (user) {
-            resolve(user);
-          })
-          .catch(function (err) {
-            reject(err);
-          });
-      });
-    }
-
-    /**
-     * Removes an agent from the queues
-     */
-    function queueLogout() {
-      return $q(function (resolve, reject) {
-        api.user
-          .logout({
-            id: motionCurrentUser.id,
-            device: 'web'
-          })
-          .$promise.then(function () {
-            resolve();
-          })
-          .catch(function (err) {
-            reject(err);
-          });
-      });
-    }
-
-    /**
-     * Sets the user's online status if the role is 'admin' or 'user'
-     * @return {Object} Updated user
-     */
-    function setOnlineStatus(status) {
-      return $q(function (resolve, reject) {
-        var data = {
-          online: status,
-          lastLoginAt: status ? moment().format('YYYY-MM-DD HH:mm:ss') : undefined
-        };
-        api.user
-          .update(
-            {
-              id: motionCurrentUser.id
-            },
-            data
-          )
-          .$promise.then(function (user) {
-            resolve(user);
-          })
-          .catch(function (err) {
-            reject(err);
-          });
-      });
-    }
-
-    /**
-     * Authenticate user and save token
-     * @param  {Object} user - The user which requires authentication
-     * @return {Promise}
-     */
-    function login(user) {
-      return $q(function (resolve, reject) {
-        api.auth
-          .local(user)
-          .$promise.then(function (res) {
-              console.log("RES", res.token);
-            $cookies.put('motion.token', res.token, {secure: true, samesite:'strict'});
-
-            return api.user.get({
-              id: res.id
-            }).$promise;
-          })
-          .then(function (user) {
-            motionCurrentUser = user;
-            motionCurrentUser.lastLoginAt = moment().format('YYYY-MM-DD HH:mm:ss');
-            setAuthenticationType('LOCAL_LOGIN');
-          })
-          .then(function () {
-            if (isAgent() && motionCurrentUser.showWebBar === 1 && motionCurrentUser.hotdesk) {
-              return $mdDialog.show({
-                controller: 'HotDeskDialogController',
-                controllerAs: 'vm',
-                templateUrl: 'app/auth/services/hotdesk/dialog.html',
-                parent: angular.element($document.body),
-                clickOutsideToClose: false,
-                resolve: {
-                  telephones: function (apiResolver) {
-                    return apiResolver.resolve('user@get', {
-                      fields: 'id,fullname,name,internal',
-                      role: 'telephone',
-                      nolimit: true
-                    });
-                  }
-                }
-              });
-            }
-          })
-          .then(function (intrf) {
-            if (isAgent() && motionCurrentUser.showWebBar !== 0) {
-              return queueLogin(intrf);
-            } else if (isAdmin() || isUser()) {
-              return setOnlineStatus(true);
-            } else {
-              return;
-            }
-          })
-          .then(function (updatedUser) {
-            motionCurrentUser = _.assign(motionCurrentUser, updatedUser);
-            resolve();
-          })
-          .catch(function (err) {
-            reject(err);
-          });
-      });
-    }
-
-    /**
-     * Removes authentication cookies and local storage data
-     */
-    function removeCookies() {
-      $cookies.remove('motion.token');
-      if (motionCurrentUser) {
-        $window.localStorage.removeItem('motion.user:' + motionCurrentUser.id);
-        $window.localStorage.removeItem('motion.authenticationtype');
-
-        motionCurrentUser = null;
-      }
-    }
-
-    /**
-     * Delete access token and user info
-     * @param {Boolean} logoutBySomeoneElse Flag to discriminate who initiated the logout
-     */
-    function logout(logoutBySomeoneElse) {
-      return $q(function (resolve, reject) {
-        if (logoutBySomeoneElse) {
-          removeCookies();
-          resolve();
-        } else {
-          $q.resolve()
-            .then(function () {
-              if (isAgent() && motionCurrentUser.showWebBar !== 0) {
-                return queueLogout();
-              } else if (isAdmin() || isUser()) {
-                return setOnlineStatus(false);
-              } else {
-                return;
-              }
-            })
-            .then(function () {
-              removeCookies();
-              resolve();
-            })
-            .catch(function (err) {
-              reject(err);
-            });
-        }
-      });
-    }
-
-    /**
-     * Checks if a user is logged by retrieving the authentication token
-     * @return {Boolean}
-     */
-    function isLoggedIn() {
-      return getToken() ? true : false;
-    }
-
-    /**
-     * Checks if an user is an 'agent'
-     * @return {Boolean}
-     */
-    function isAgent() {
-      return motionCurrentUser.role === 'agent';
-    }
-
-    /**
-     * Checks if an user is an 'admin'
-     * @return {Boolean}
-     */
-    function isAdmin() {
-      return motionCurrentUser.role === 'admin';
-    }
-
-    /**
-     * Checks if an user is an 'user'
-     * @return {Boolean}
-     */
-    function isUser() {
-      return motionCurrentUser.role === 'user';
-    }
-
-    /**
-     * Checks if an user is a 'telephone'
-     * @return {Boolean}
-     */
-    function isTelephone() {
-      return motionCurrentUser.role === 'telephone';
-    }
-
-    /**
-     * Retrieves the current logged in user
-     * @return {Boolean}
-     */
-    function retrieveUser() {
-      return $q(function (resolve, reject) {
-        api.user
-          .whoami()
-          .$promise.then(function (user) {
-            if (user.role === 'user') {
-              return getPermissions(user.userProfileId).then(function (permissions) {
-                user.permissions = permissions;
-                return user;
-              });
-            } else {
-              return user;
-            }
-          })
-          .then(function (user) {
-            motionCurrentUser = user;
-            resolve(motionCurrentUser);
-          })
-          .catch(function (err) {
-            reject(err);
-          });
-      });
-    }
-
-    /**
-     * Checks if a user has a specified role
-     * @param  {String} role - The role to check against
-     * @return {Boolean}
-     */
-    function hasRole(role) {
-      return motionCurrentUser ? motionCurrentUser.role === role : false;
-    }
-
-    /**
-     * Check if a user has a specified permissions
-     * @param  {String} id - The section id to verify
-     * @return {Boolean}
-     */
-    function hasPermission(id) {
-      return motionCurrentUser ? _.includes(motionCurrentUser.permissions, id) : false;
-    }
-
-    /**
-     * Get permissions from User Profile
-     * @param  {Integer} userProfileId - The id of the User Profile to
-     */
-    function getPermissions(userProfileId) {
-      var permissions = [];
-
-      return $q(function (resolve, reject) {
-        if (!userProfileId) {
-          resolve(permissions);
-        }
-
-        return api.userProfile
-          .getSections({
-            id: userProfileId
-          })
-          .$promise.then(function (sections) {
-            for (var i = 0; i < sections.length; i++) {
-              var item = sections[i];
-              permissions.push(item.sectionId);
-              if (item.subsections) {
-                permissions = _.concat(permissions, item.subsections);
-              }
-            }
-
-            return permissions;
-          })
-          .then(function (permissions) {
-            resolve(permissions);
-          })
-          .catch(function (err) {
-            reject('Error retrieving user profile permissions', err);
-          });
-      });
-    }
-
-    /**
-     * Determine if a section should be visible because of the visibility of one of its subsections
-     * @param {Array} ids The list of subsections ids
-     */
-    function hasChildrenPermissions(ids) {
-      if (!ids) return false;
-
-      return _.some(ids, function (id) {
-        return hasPermission(id);
-      });
-    }
-
-    /**
-     * Reload permissions for the current user on a page reload
-     *
-     */
-    function reloadPermissions() {
-      return $q(function (resolve, reject) {
-        getPermissions(motionCurrentUser.userProfileId)
-          .then(function (permissions) {
-            motionCurrentUser.permissions = permissions;
-            resolve();
-          })
-          .catch(function (err) {
-            reject(err);
-          });
-      });
-    }
-
-    /**
-     * Parse the crud permissions
-     * @param {String} crudPermissions The crud permissions as stored on the database (red : Read | Edit | Delete)
-     */
-    function parseCrudPermissions(crudPermissions) {
-      if (isAdmin()) {
-        return {
-          readOnly: false,
-          canEdit: true,
-          canDelete: true
-        };
-      } else {
-        if (!crudPermissions) {
-          return {
-            readOnly: true,
-            canEdit: false,
-            canDelete: false
-          };
-        } else {
-          return {
-            readOnly: _.includes(crudPermissions, 'r') && crudPermissions.length === 1 ? true : false,
-            canEdit: _.includes(crudPermissions, 'e') ? true : false,
-            canDelete: _.includes(crudPermissions, 'd') ? true : false
-          };
-        }
-      }
-    }
-
-    /**
-     * Check if the user has valid permission on a specific resource
-     * @param {Number} sectionId The id of the parent section
-     * @param {Number} resourceId The id of the resource to check
-     */
-    function hasResourcePermission(sectionId, resourceId) {
-      return $q(function (resolve, reject) {
-        return api.userProfileSection
-          .get({
-            userProfileId: motionCurrentUser.userProfileId,
-            sectionId: sectionId
-          })
-          .$promise.then(function (entities) {
-            var section = entities.rows[0];
-            // If AutoAssociation is enabled it means that all resources are available
-            if (section.autoAssociation) return resolve();
-            // Checking if the current section does not require single resource association
-            var navigationItem = msNavigationService.getActiveItem().node;
-            if (navigationItem.permissions && navigationItem.permissions.association === false) return resolve();
-            // Retrieving sections's associated resources
-            return api.userProfileResource
-              .get({
-                sectionId: section.id,
-                nolimit: true
-              })
-              .$promise.then(function (entities) {
-                var resources = entities.rows;
-                _.some(resources, ['resourceId', resourceId]) ? resolve() : reject();
-              });
-          })
-          .catch(function (err) {
-            reject('Error retrieving user profile permissions', err);
-          });
-      });
-    }
-
-    /**
-     * Check if the user has valid permission on a section
-     * @param {Integer} id The section id
-     */
-    function hasSectionPermissions(id) {
-      return $q(function (resolve, reject) {
-        var data = {};
-        return reloadPermissions()
-          .then(function () {
-            if (_.includes(motionCurrentUser.permissions, id)) {
-              data[id] = true;
-            }
-            resolve(data);
-          })
-          .catch(function (err) {
-            reject(err);
-          });
-      });
-    }
-
-    /**
-     * Check if the user has valid permission on all the sections specified
-     * @param {Array} sections The ids of the sections
-     * @return {Object} Object with each section as key
-     */
-    function hasSectionsPermissions(sections) {
-      return $q(function (resolve, reject) {
-        var data = {};
-
-        if (isAdmin()) {
-          sections.forEach(function (key) {
-            data[key] = true;
-          });
-          resolve(data);
-        } else {
-          return reloadPermissions()
-            .then(function () {
-              sections.forEach(function (id) {
-                if (_.includes(motionCurrentUser.permissions, id)) {
-                  data[id] = true;
-                }
-              });
-              resolve(data);
-            })
-            .catch(function (err) {
-              reject(err);
-            });
-        }
-      });
-    }
-
-    /**
-     * Check if the user has valid permissions on at least one section of a module
-     * @param {String} category The category name
-     */
-    function hasModulePermissions(category) {
-      return $q(function (resolve, reject) {
-        if (isAdmin()) {
-          resolve(true);
-        } else {
-          api.userProfileSection
-            .get({
-              userProfileId: motionCurrentUser.userProfileId
-            })
-            .$promise.then(function (entities) {
-              var sections = entities && entities.rows ? entities.rows : [];
-              if (!_.isEmpty(sections)) {
-                var enabledSections = _.filter(sections, function (section) {
-                  return section.enabled;
-                });
-                resolve(_.some(enabledSections, ['category', category]));
-              } else {
-                resolve(false);
-              }
-            })
-            .catch(function (err) {
-              reject(err);
-            });
-        }
-      });
-    }
-
-    /**
-     * Check if the user has valid permissions on at least one section for each module
-     * @param {Array} categories The categories' names
-     * @return {Object} Object with each module as key
-     */
-    function hasModulesPermissions(categories) {
-      return $q(function (resolve, reject) {
-        var data = {};
-
-        if (isAdmin()) {
-          categories.forEach(function (key) {
-            data[key] = true;
-          });
-          resolve(data);
-        } else {
-          api.userProfileSection
-            .get({
-              userProfileId: motionCurrentUser.userProfileId
-            })
-            .$promise.then(function (entities) {
-              var sections = entities && entities.rows ? entities.rows : [];
-              if (!_.isEmpty(sections)) {
-                var enabledCategories = _(sections)
-                  .filter(function (section) {
-                    return section.enabled && _.includes(categories, section.category);
-                  })
-                  .uniqBy(function (section) {
-                    return section.category;
-                  })
-                  .map(function (section) {
-                    return section.category;
-                  })
-                  .value();
-
-                enabledCategories.forEach(function (key) {
-                  data[key] = true;
-                });
-                resolve(data);
-              } else {
-                resolve({});
-              }
-            })
-            .catch(function (err) {
-              reject(err);
-            });
-        }
-      });
-    }
-
-    /**
-     * Return authentication type choose by user
-     */
-    function getAuthenticationType() {
-      return $window.localStorage['motion.authenticationtype'] || 'NONE';
-    }
-
-    function setAuthenticationType(authenticationType) {
-      $window.localStorage['motion.authenticationtype'] = authenticationType;
-    }
-
-    function loginSSO(provider) {
-      setAuthenticationType('SSO_LOGIN');
-      return '/api/auth/' + provider;
-    }
-  }
-})();
diff --git a/public/snippets/tvox/js/index.socket.js b/public/snippets/tvox/js/index.socket.js
deleted file mode 100644
index 9f5314c..0000000
--- a/public/snippets/tvox/js/index.socket.js
+++ /dev/null
@@ -1,71 +0,0 @@
-(function() {
-	'use strict';
-
-	angular.module('motion',[]).factory('socket', Socket);
-
-	function Socket($rootScope) {
-		var socket;
-		function connect() {
-            socket = io({
-				query: $rootScope.userId ? 'id=' + $rootScope.userId : undefined,
-				transports: [ 'websocket', 'polling' ]
-			});
-		}
-
-		return {
-			connect: connect,
-			on: function(eventName, callback) {
-				callback = callback || angular.noop;
-				if (!socket) {
-					connect();
-				}
-				socket.on(eventName, function() {
-					var args = arguments;
-					$rootScope.$apply(function() {
-						callback.apply(socket, args);
-					});
-				});
-			},
-			onWithoutApply: function(eventName, callback) {
-				callback = callback || angular.noop;
-				if (!socket) {
-					connect();
-				}
-				socket.on(eventName, function() {
-					callback.apply(socket, arguments);
-				});
-			},
-			emit: function(eventName, data, callback) {
-                console.log("CRIS socket e,int", eventName);
-				callback = callback || angular.noop;
-				if (!socket) {
-					connect();
-				}
-				socket.emit(eventName, data, function() {
-					var args = arguments;
-					$rootScope.$apply(function() {
-						callback.apply(socket, args);
-					});
-				});
-			},
-			removeAllListeners: function(eventName) {
-				if (!socket) {
-					connect();
-				}
-				socket.removeAllListeners(eventName);
-			},
-			removeListener: function(eventName, fn) {
-				if (!socket) {
-					connect();
-				}
-				socket.removeListener(eventName, fn);
-			},
-			disconnect: function() {
-				if (!socket) {
-					connect();
-				}
-				socket.disconnect();
-			}
-		};
-	}
-})();
diff --git a/public/snippets/tvox/js/lodash.min.js b/public/snippets/tvox/js/lodash.min.js
deleted file mode 100644
index 186f4c2..0000000
--- a/public/snippets/tvox/js/lodash.min.js
+++ /dev/null
@@ -1,17161 +0,0 @@
-/**
- * @license
- * Lodash <https://lodash.com/>
- * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
- * Released under MIT license <https://lodash.com/license>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
- ;(function() {
-
-    /** Used as a safe reference for `undefined` in pre-ES5 environments. */
-    var undefined;
-  
-    /** Used as the semantic version number. */
-    var VERSION = '4.17.20';
-  
-    /** Used as the size to enable large array optimizations. */
-    var LARGE_ARRAY_SIZE = 200;
-  
-    /** Error message constants. */
-    var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',
-        FUNC_ERROR_TEXT = 'Expected a function';
-  
-    /** Used to stand-in for `undefined` hash values. */
-    var HASH_UNDEFINED = '__lodash_hash_undefined__';
-  
-    /** Used as the maximum memoize cache size. */
-    var MAX_MEMOIZE_SIZE = 500;
-  
-    /** Used as the internal argument placeholder. */
-    var PLACEHOLDER = '__lodash_placeholder__';
-  
-    /** Used to compose bitmasks for cloning. */
-    var CLONE_DEEP_FLAG = 1,
-        CLONE_FLAT_FLAG = 2,
-        CLONE_SYMBOLS_FLAG = 4;
-  
-    /** Used to compose bitmasks for value comparisons. */
-    var COMPARE_PARTIAL_FLAG = 1,
-        COMPARE_UNORDERED_FLAG = 2;
-  
-    /** Used to compose bitmasks for function metadata. */
-    var WRAP_BIND_FLAG = 1,
-        WRAP_BIND_KEY_FLAG = 2,
-        WRAP_CURRY_BOUND_FLAG = 4,
-        WRAP_CURRY_FLAG = 8,
-        WRAP_CURRY_RIGHT_FLAG = 16,
-        WRAP_PARTIAL_FLAG = 32,
-        WRAP_PARTIAL_RIGHT_FLAG = 64,
-        WRAP_ARY_FLAG = 128,
-        WRAP_REARG_FLAG = 256,
-        WRAP_FLIP_FLAG = 512;
-  
-    /** Used as default options for `_.truncate`. */
-    var DEFAULT_TRUNC_LENGTH = 30,
-        DEFAULT_TRUNC_OMISSION = '...';
-  
-    /** Used to detect hot functions by number of calls within a span of milliseconds. */
-    var HOT_COUNT = 800,
-        HOT_SPAN = 16;
-  
-    /** Used to indicate the type of lazy iteratees. */
-    var LAZY_FILTER_FLAG = 1,
-        LAZY_MAP_FLAG = 2,
-        LAZY_WHILE_FLAG = 3;
-  
-    /** Used as references for various `Number` constants. */
-    var INFINITY = 1 / 0,
-        MAX_SAFE_INTEGER = 9007199254740991,
-        MAX_INTEGER = 1.7976931348623157e+308,
-        NAN = 0 / 0;
-  
-    /** Used as references for the maximum length and index of an array. */
-    var MAX_ARRAY_LENGTH = 4294967295,
-        MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,
-        HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
-  
-    /** Used to associate wrap methods with their bit flags. */
-    var wrapFlags = [
-      ['ary', WRAP_ARY_FLAG],
-      ['bind', WRAP_BIND_FLAG],
-      ['bindKey', WRAP_BIND_KEY_FLAG],
-      ['curry', WRAP_CURRY_FLAG],
-      ['curryRight', WRAP_CURRY_RIGHT_FLAG],
-      ['flip', WRAP_FLIP_FLAG],
-      ['partial', WRAP_PARTIAL_FLAG],
-      ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],
-      ['rearg', WRAP_REARG_FLAG]
-    ];
-  
-    /** `Object#toString` result references. */
-    var argsTag = '[object Arguments]',
-        arrayTag = '[object Array]',
-        asyncTag = '[object AsyncFunction]',
-        boolTag = '[object Boolean]',
-        dateTag = '[object Date]',
-        domExcTag = '[object DOMException]',
-        errorTag = '[object Error]',
-        funcTag = '[object Function]',
-        genTag = '[object GeneratorFunction]',
-        mapTag = '[object Map]',
-        numberTag = '[object Number]',
-        nullTag = '[object Null]',
-        objectTag = '[object Object]',
-        promiseTag = '[object Promise]',
-        proxyTag = '[object Proxy]',
-        regexpTag = '[object RegExp]',
-        setTag = '[object Set]',
-        stringTag = '[object String]',
-        symbolTag = '[object Symbol]',
-        undefinedTag = '[object Undefined]',
-        weakMapTag = '[object WeakMap]',
-        weakSetTag = '[object WeakSet]';
-  
-    var arrayBufferTag = '[object ArrayBuffer]',
-        dataViewTag = '[object DataView]',
-        float32Tag = '[object Float32Array]',
-        float64Tag = '[object Float64Array]',
-        int8Tag = '[object Int8Array]',
-        int16Tag = '[object Int16Array]',
-        int32Tag = '[object Int32Array]',
-        uint8Tag = '[object Uint8Array]',
-        uint8ClampedTag = '[object Uint8ClampedArray]',
-        uint16Tag = '[object Uint16Array]',
-        uint32Tag = '[object Uint32Array]';
-  
-    /** Used to match empty string literals in compiled template source. */
-    var reEmptyStringLeading = /\b__p \+= '';/g,
-        reEmptyStringMiddle = /\b(__p \+=) '' \+/g,
-        reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
-  
-    /** Used to match HTML entities and HTML characters. */
-    var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,
-        reUnescapedHtml = /[&<>"']/g,
-        reHasEscapedHtml = RegExp(reEscapedHtml.source),
-        reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
-  
-    /** Used to match template delimiters. */
-    var reEscape = /<%-([\s\S]+?)%>/g,
-        reEvaluate = /<%([\s\S]+?)%>/g,
-        reInterpolate = /<%=([\s\S]+?)%>/g;
-  
-    /** Used to match property names within property paths. */
-    var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
-        reIsPlainProp = /^\w*$/,
-        rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
-  
-    /**
-     * Used to match `RegExp`
-     * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
-     */
-    var reRegExpChar = /[\\^$.*+?()[\]{}|]/g,
-        reHasRegExpChar = RegExp(reRegExpChar.source);
-  
-    /** Used to match leading and trailing whitespace. */
-    var reTrim = /^\s+|\s+$/g,
-        reTrimStart = /^\s+/,
-        reTrimEnd = /\s+$/;
-  
-    /** Used to match wrap detail comments. */
-    var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
-        reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/,
-        reSplitDetails = /,? & /;
-  
-    /** Used to match words composed of alphanumeric characters. */
-    var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
-  
-    /** Used to match backslashes in property paths. */
-    var reEscapeChar = /\\(\\)?/g;
-  
-    /**
-     * Used to match
-     * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).
-     */
-    var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
-  
-    /** Used to match `RegExp` flags from their coerced string values. */
-    var reFlags = /\w*$/;
-  
-    /** Used to detect bad signed hexadecimal string values. */
-    var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
-  
-    /** Used to detect binary string values. */
-    var reIsBinary = /^0b[01]+$/i;
-  
-    /** Used to detect host constructors (Safari). */
-    var reIsHostCtor = /^\[object .+?Constructor\]$/;
-  
-    /** Used to detect octal string values. */
-    var reIsOctal = /^0o[0-7]+$/i;
-  
-    /** Used to detect unsigned integer values. */
-    var reIsUint = /^(?:0|[1-9]\d*)$/;
-  
-    /** Used to match Latin Unicode letters (excluding mathematical operators). */
-    var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
-  
-    /** Used to ensure capturing order of template delimiters. */
-    var reNoMatch = /($^)/;
-  
-    /** Used to match unescaped characters in compiled string literals. */
-    var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
-  
-    /** Used to compose unicode character classes. */
-    var rsAstralRange = '\\ud800-\\udfff',
-        rsComboMarksRange = '\\u0300-\\u036f',
-        reComboHalfMarksRange = '\\ufe20-\\ufe2f',
-        rsComboSymbolsRange = '\\u20d0-\\u20ff',
-        rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
-        rsDingbatRange = '\\u2700-\\u27bf',
-        rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff',
-        rsMathOpRange = '\\xac\\xb1\\xd7\\xf7',
-        rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf',
-        rsPunctuationRange = '\\u2000-\\u206f',
-        rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000',
-        rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde',
-        rsVarRange = '\\ufe0e\\ufe0f',
-        rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
-  
-    /** Used to compose unicode capture groups. */
-    var rsApos = "['\u2019]",
-        rsAstral = '[' + rsAstralRange + ']',
-        rsBreak = '[' + rsBreakRange + ']',
-        rsCombo = '[' + rsComboRange + ']',
-        rsDigits = '\\d+',
-        rsDingbat = '[' + rsDingbatRange + ']',
-        rsLower = '[' + rsLowerRange + ']',
-        rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',
-        rsFitz = '\\ud83c[\\udffb-\\udfff]',
-        rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
-        rsNonAstral = '[^' + rsAstralRange + ']',
-        rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
-        rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
-        rsUpper = '[' + rsUpperRange + ']',
-        rsZWJ = '\\u200d';
-  
-    /** Used to compose unicode regexes. */
-    var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',
-        rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',
-        rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',
-        rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',
-        reOptMod = rsModifier + '?',
-        rsOptVar = '[' + rsVarRange + ']?',
-        rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
-        rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])',
-        rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])',
-        rsSeq = rsOptVar + reOptMod + rsOptJoin,
-        rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,
-        rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
-  
-    /** Used to match apostrophes. */
-    var reApos = RegExp(rsApos, 'g');
-  
-    /**
-     * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and
-     * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).
-     */
-    var reComboMark = RegExp(rsCombo, 'g');
-  
-    /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
-    var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
-  
-    /** Used to match complex or compound words. */
-    var reUnicodeWord = RegExp([
-      rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',
-      rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',
-      rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,
-      rsUpper + '+' + rsOptContrUpper,
-      rsOrdUpper,
-      rsOrdLower,
-      rsDigits,
-      rsEmoji
-    ].join('|'), 'g');
-  
-    /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
-    var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');
-  
-    /** Used to detect strings that need a more robust regexp to match words. */
-    var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
-  
-    /** Used to assign default `context` object properties. */
-    var contextProps = [
-      'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',
-      'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',
-      'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',
-      'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',
-      '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'
-    ];
-  
-    /** Used to make template sourceURLs easier to identify. */
-    var templateCounter = -1;
-  
-    /** Used to identify `toStringTag` values of typed arrays. */
-    var typedArrayTags = {};
-    typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
-    typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
-    typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
-    typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
-    typedArrayTags[uint32Tag] = true;
-    typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
-    typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
-    typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
-    typedArrayTags[errorTag] = typedArrayTags[funcTag] =
-    typedArrayTags[mapTag] = typedArrayTags[numberTag] =
-    typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
-    typedArrayTags[setTag] = typedArrayTags[stringTag] =
-    typedArrayTags[weakMapTag] = false;
-  
-    /** Used to identify `toStringTag` values supported by `_.clone`. */
-    var cloneableTags = {};
-    cloneableTags[argsTag] = cloneableTags[arrayTag] =
-    cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =
-    cloneableTags[boolTag] = cloneableTags[dateTag] =
-    cloneableTags[float32Tag] = cloneableTags[float64Tag] =
-    cloneableTags[int8Tag] = cloneableTags[int16Tag] =
-    cloneableTags[int32Tag] = cloneableTags[mapTag] =
-    cloneableTags[numberTag] = cloneableTags[objectTag] =
-    cloneableTags[regexpTag] = cloneableTags[setTag] =
-    cloneableTags[stringTag] = cloneableTags[symbolTag] =
-    cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
-    cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
-    cloneableTags[errorTag] = cloneableTags[funcTag] =
-    cloneableTags[weakMapTag] = false;
-  
-    /** Used to map Latin Unicode letters to basic Latin letters. */
-    var deburredLetters = {
-      // Latin-1 Supplement block.
-      '\xc0': 'A',  '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A',
-      '\xe0': 'a',  '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a',
-      '\xc7': 'C',  '\xe7': 'c',
-      '\xd0': 'D',  '\xf0': 'd',
-      '\xc8': 'E',  '\xc9': 'E', '\xca': 'E', '\xcb': 'E',
-      '\xe8': 'e',  '\xe9': 'e', '\xea': 'e', '\xeb': 'e',
-      '\xcc': 'I',  '\xcd': 'I', '\xce': 'I', '\xcf': 'I',
-      '\xec': 'i',  '\xed': 'i', '\xee': 'i', '\xef': 'i',
-      '\xd1': 'N',  '\xf1': 'n',
-      '\xd2': 'O',  '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O',
-      '\xf2': 'o',  '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o',
-      '\xd9': 'U',  '\xda': 'U', '\xdb': 'U', '\xdc': 'U',
-      '\xf9': 'u',  '\xfa': 'u', '\xfb': 'u', '\xfc': 'u',
-      '\xdd': 'Y',  '\xfd': 'y', '\xff': 'y',
-      '\xc6': 'Ae', '\xe6': 'ae',
-      '\xde': 'Th', '\xfe': 'th',
-      '\xdf': 'ss',
-      // Latin Extended-A block.
-      '\u0100': 'A',  '\u0102': 'A', '\u0104': 'A',
-      '\u0101': 'a',  '\u0103': 'a', '\u0105': 'a',
-      '\u0106': 'C',  '\u0108': 'C', '\u010a': 'C', '\u010c': 'C',
-      '\u0107': 'c',  '\u0109': 'c', '\u010b': 'c', '\u010d': 'c',
-      '\u010e': 'D',  '\u0110': 'D', '\u010f': 'd', '\u0111': 'd',
-      '\u0112': 'E',  '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E',
-      '\u0113': 'e',  '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e',
-      '\u011c': 'G',  '\u011e': 'G', '\u0120': 'G', '\u0122': 'G',
-      '\u011d': 'g',  '\u011f': 'g', '\u0121': 'g', '\u0123': 'g',
-      '\u0124': 'H',  '\u0126': 'H', '\u0125': 'h', '\u0127': 'h',
-      '\u0128': 'I',  '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I',
-      '\u0129': 'i',  '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i',
-      '\u0134': 'J',  '\u0135': 'j',
-      '\u0136': 'K',  '\u0137': 'k', '\u0138': 'k',
-      '\u0139': 'L',  '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L',
-      '\u013a': 'l',  '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l',
-      '\u0143': 'N',  '\u0145': 'N', '\u0147': 'N', '\u014a': 'N',
-      '\u0144': 'n',  '\u0146': 'n', '\u0148': 'n', '\u014b': 'n',
-      '\u014c': 'O',  '\u014e': 'O', '\u0150': 'O',
-      '\u014d': 'o',  '\u014f': 'o', '\u0151': 'o',
-      '\u0154': 'R',  '\u0156': 'R', '\u0158': 'R',
-      '\u0155': 'r',  '\u0157': 'r', '\u0159': 'r',
-      '\u015a': 'S',  '\u015c': 'S', '\u015e': 'S', '\u0160': 'S',
-      '\u015b': 's',  '\u015d': 's', '\u015f': 's', '\u0161': 's',
-      '\u0162': 'T',  '\u0164': 'T', '\u0166': 'T',
-      '\u0163': 't',  '\u0165': 't', '\u0167': 't',
-      '\u0168': 'U',  '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U',
-      '\u0169': 'u',  '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u',
-      '\u0174': 'W',  '\u0175': 'w',
-      '\u0176': 'Y',  '\u0177': 'y', '\u0178': 'Y',
-      '\u0179': 'Z',  '\u017b': 'Z', '\u017d': 'Z',
-      '\u017a': 'z',  '\u017c': 'z', '\u017e': 'z',
-      '\u0132': 'IJ', '\u0133': 'ij',
-      '\u0152': 'Oe', '\u0153': 'oe',
-      '\u0149': "'n", '\u017f': 's'
-    };
-  
-    /** Used to map characters to HTML entities. */
-    var htmlEscapes = {
-      '&': '&amp;',
-      '<': '&lt;',
-      '>': '&gt;',
-      '"': '&quot;',
-      "'": '&#39;'
-    };
-  
-    /** Used to map HTML entities to characters. */
-    var htmlUnescapes = {
-      '&amp;': '&',
-      '&lt;': '<',
-      '&gt;': '>',
-      '&quot;': '"',
-      '&#39;': "'"
-    };
-  
-    /** Used to escape characters for inclusion in compiled string literals. */
-    var stringEscapes = {
-      '\\': '\\',
-      "'": "'",
-      '\n': 'n',
-      '\r': 'r',
-      '\u2028': 'u2028',
-      '\u2029': 'u2029'
-    };
-  
-    /** Built-in method references without a dependency on `root`. */
-    var freeParseFloat = parseFloat,
-        freeParseInt = parseInt;
-  
-    /** Detect free variable `global` from Node.js. */
-    var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
-  
-    /** Detect free variable `self`. */
-    var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
-  
-    /** Used as a reference to the global object. */
-    var root = freeGlobal || freeSelf || Function('return this')();
-  
-    /** Detect free variable `exports`. */
-    var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
-  
-    /** Detect free variable `module`. */
-    var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
-  
-    /** Detect the popular CommonJS extension `module.exports`. */
-    var moduleExports = freeModule && freeModule.exports === freeExports;
-  
-    /** Detect free variable `process` from Node.js. */
-    var freeProcess = moduleExports && freeGlobal.process;
-  
-    /** Used to access faster Node.js helpers. */
-    var nodeUtil = (function() {
-      try {
-        // Use `util.types` for Node.js 10+.
-        var types = freeModule && freeModule.require && freeModule.require('util').types;
-  
-        if (types) {
-          return types;
-        }
-  
-        // Legacy `process.binding('util')` for Node.js < 10.
-        return freeProcess && freeProcess.binding && freeProcess.binding('util');
-      } catch (e) {}
-    }());
-  
-    /* Node.js helper references. */
-    var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,
-        nodeIsDate = nodeUtil && nodeUtil.isDate,
-        nodeIsMap = nodeUtil && nodeUtil.isMap,
-        nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,
-        nodeIsSet = nodeUtil && nodeUtil.isSet,
-        nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
-  
-    /*--------------------------------------------------------------------------*/
-  
-    /**
-     * A faster alternative to `Function#apply`, this function invokes `func`
-     * with the `this` binding of `thisArg` and the arguments of `args`.
-     *
-     * @private
-     * @param {Function} func The function to invoke.
-     * @param {*} thisArg The `this` binding of `func`.
-     * @param {Array} args The arguments to invoke `func` with.
-     * @returns {*} Returns the result of `func`.
-     */
-    function apply(func, thisArg, args) {
-      switch (args.length) {
-        case 0: return func.call(thisArg);
-        case 1: return func.call(thisArg, args[0]);
-        case 2: return func.call(thisArg, args[0], args[1]);
-        case 3: return func.call(thisArg, args[0], args[1], args[2]);
-      }
-      return func.apply(thisArg, args);
-    }
-  
-    /**
-     * A specialized version of `baseAggregator` for arrays.
-     *
-     * @private
-     * @param {Array} [array] The array to iterate over.
-     * @param {Function} setter The function to set `accumulator` values.
-     * @param {Function} iteratee The iteratee to transform keys.
-     * @param {Object} accumulator The initial aggregated object.
-     * @returns {Function} Returns `accumulator`.
-     */
-    function arrayAggregator(array, setter, iteratee, accumulator) {
-      var index = -1,
-          length = array == null ? 0 : array.length;
-  
-      while (++index < length) {
-        var value = array[index];
-        setter(accumulator, value, iteratee(value), array);
-      }
-      return accumulator;
-    }
-  
-    /**
-     * A specialized version of `_.forEach` for arrays without support for
-     * iteratee shorthands.
-     *
-     * @private
-     * @param {Array} [array] The array to iterate over.
-     * @param {Function} iteratee The function invoked per iteration.
-     * @returns {Array} Returns `array`.
-     */
-    function arrayEach(array, iteratee) {
-      var index = -1,
-          length = array == null ? 0 : array.length;
-  
-      while (++index < length) {
-        if (iteratee(array[index], index, array) === false) {
-          break;
-        }
-      }
-      return array;
-    }
-  
-    /**
-     * A specialized version of `_.forEachRight` for arrays without support for
-     * iteratee shorthands.
-     *
-     * @private
-     * @param {Array} [array] The array to iterate over.
-     * @param {Function} iteratee The function invoked per iteration.
-     * @returns {Array} Returns `array`.
-     */
-    function arrayEachRight(array, iteratee) {
-      var length = array == null ? 0 : array.length;
-  
-      while (length--) {
-        if (iteratee(array[length], length, array) === false) {
-          break;
-        }
-      }
-      return array;
-    }
-  
-    /**
-     * A specialized version of `_.every` for arrays without support for
-     * iteratee shorthands.
-     *
-     * @private
-     * @param {Array} [array] The array to iterate over.
-     * @param {Function} predicate The function invoked per iteration.
-     * @returns {boolean} Returns `true` if all elements pass the predicate check,
-     *  else `false`.
-     */
-    function arrayEvery(array, predicate) {
-      var index = -1,
-          length = array == null ? 0 : array.length;
-  
-      while (++index < length) {
-        if (!predicate(array[index], index, array)) {
-          return false;
-        }
-      }
-      return true;
-    }
-  
-    /**
-     * A specialized version of `_.filter` for arrays without support for
-     * iteratee shorthands.
-     *
-     * @private
-     * @param {Array} [array] The array to iterate over.
-     * @param {Function} predicate The function invoked per iteration.
-     * @returns {Array} Returns the new filtered array.
-     */
-    function arrayFilter(array, predicate) {
-      var index = -1,
-          length = array == null ? 0 : array.length,
-          resIndex = 0,
-          result = [];
-  
-      while (++index < length) {
-        var value = array[index];
-        if (predicate(value, index, array)) {
-          result[resIndex++] = value;
-        }
-      }
-      return result;
-    }
-  
-    /**
-     * A specialized version of `_.includes` for arrays without support for
-     * specifying an index to search from.
-     *
-     * @private
-     * @param {Array} [array] The array to inspect.
-     * @param {*} target The value to search for.
-     * @returns {boolean} Returns `true` if `target` is found, else `false`.
-     */
-    function arrayIncludes(array, value) {
-      var length = array == null ? 0 : array.length;
-      return !!length && baseIndexOf(array, value, 0) > -1;
-    }
-  
-    /**
-     * This function is like `arrayIncludes` except that it accepts a comparator.
-     *
-     * @private
-     * @param {Array} [array] The array to inspect.
-     * @param {*} target The value to search for.
-     * @param {Function} comparator The comparator invoked per element.
-     * @returns {boolean} Returns `true` if `target` is found, else `false`.
-     */
-    function arrayIncludesWith(array, value, comparator) {
-      var index = -1,
-          length = array == null ? 0 : array.length;
-  
-      while (++index < length) {
-        if (comparator(value, array[index])) {
-          return true;
-        }
-      }
-      return false;
-    }
-  
-    /**
-     * A specialized version of `_.map` for arrays without support for iteratee
-     * shorthands.
-     *
-     * @private
-     * @param {Array} [array] The array to iterate over.
-     * @param {Function} iteratee The function invoked per iteration.
-     * @returns {Array} Returns the new mapped array.
-     */
-    function arrayMap(array, iteratee) {
-      var index = -1,
-          length = array == null ? 0 : array.length,
-          result = Array(length);
-  
-      while (++index < length) {
-        result[index] = iteratee(array[index], index, array);
-      }
-      return result;
-    }
-  
-    /**
-     * Appends the elements of `values` to `array`.
-     *
-     * @private
-     * @param {Array} array The array to modify.
-     * @param {Array} values The values to append.
-     * @returns {Array} Returns `array`.
-     */
-    function arrayPush(array, values) {
-      var index = -1,
-          length = values.length,
-          offset = array.length;
-  
-      while (++index < length) {
-        array[offset + index] = values[index];
-      }
-      return array;
-    }
-  
-    /**
-     * A specialized version of `_.reduce` for arrays without support for
-     * iteratee shorthands.
-     *
-     * @private
-     * @param {Array} [array] The array to iterate over.
-     * @param {Function} iteratee The function invoked per iteration.
-     * @param {*} [accumulator] The initial value.
-     * @param {boolean} [initAccum] Specify using the first element of `array` as
-     *  the initial value.
-     * @returns {*} Returns the accumulated value.
-     */
-    function arrayReduce(array, iteratee, accumulator, initAccum) {
-      var index = -1,
-          length = array == null ? 0 : array.length;
-  
-      if (initAccum && length) {
-        accumulator = array[++index];
-      }
-      while (++index < length) {
-        accumulator = iteratee(accumulator, array[index], index, array);
-      }
-      return accumulator;
-    }
-  
-    /**
-     * A specialized version of `_.reduceRight` for arrays without support for
-     * iteratee shorthands.
-     *
-     * @private
-     * @param {Array} [array] The array to iterate over.
-     * @param {Function} iteratee The function invoked per iteration.
-     * @param {*} [accumulator] The initial value.
-     * @param {boolean} [initAccum] Specify using the last element of `array` as
-     *  the initial value.
-     * @returns {*} Returns the accumulated value.
-     */
-    function arrayReduceRight(array, iteratee, accumulator, initAccum) {
-      var length = array == null ? 0 : array.length;
-      if (initAccum && length) {
-        accumulator = array[--length];
-      }
-      while (length--) {
-        accumulator = iteratee(accumulator, array[length], length, array);
-      }
-      return accumulator;
-    }
-  
-    /**
-     * A specialized version of `_.some` for arrays without support for iteratee
-     * shorthands.
-     *
-     * @private
-     * @param {Array} [array] The array to iterate over.
-     * @param {Function} predicate The function invoked per iteration.
-     * @returns {boolean} Returns `true` if any element passes the predicate check,
-     *  else `false`.
-     */
-    function arraySome(array, predicate) {
-      var index = -1,
-          length = array == null ? 0 : array.length;
-  
-      while (++index < length) {
-        if (predicate(array[index], index, array)) {
-          return true;
-        }
-      }
-      return false;
-    }
-  
-    /**
-     * Gets the size of an ASCII `string`.
-     *
-     * @private
-     * @param {string} string The string inspect.
-     * @returns {number} Returns the string size.
-     */
-    var asciiSize = baseProperty('length');
-  
-    /**
-     * Converts an ASCII `string` to an array.
-     *
-     * @private
-     * @param {string} string The string to convert.
-     * @returns {Array} Returns the converted array.
-     */
-    function asciiToArray(string) {
-      return string.split('');
-    }
-  
-    /**
-     * Splits an ASCII `string` into an array of its words.
-     *
-     * @private
-     * @param {string} The string to inspect.
-     * @returns {Array} Returns the words of `string`.
-     */
-    function asciiWords(string) {
-      return string.match(reAsciiWord) || [];
-    }
-  
-    /**
-     * The base implementation of methods like `_.findKey` and `_.findLastKey`,
-     * without support for iteratee shorthands, which iterates over `collection`
-     * using `eachFunc`.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to inspect.
-     * @param {Function} predicate The function invoked per iteration.
-     * @param {Function} eachFunc The function to iterate over `collection`.
-     * @returns {*} Returns the found element or its key, else `undefined`.
-     */
-    function baseFindKey(collection, predicate, eachFunc) {
-      var result;
-      eachFunc(collection, function(value, key, collection) {
-        if (predicate(value, key, collection)) {
-          result = key;
-          return false;
-        }
-      });
-      return result;
-    }
-  
-    /**
-     * The base implementation of `_.findIndex` and `_.findLastIndex` without
-     * support for iteratee shorthands.
-     *
-     * @private
-     * @param {Array} array The array to inspect.
-     * @param {Function} predicate The function invoked per iteration.
-     * @param {number} fromIndex The index to search from.
-     * @param {boolean} [fromRight] Specify iterating from right to left.
-     * @returns {number} Returns the index of the matched value, else `-1`.
-     */
-    function baseFindIndex(array, predicate, fromIndex, fromRight) {
-      var length = array.length,
-          index = fromIndex + (fromRight ? 1 : -1);
-  
-      while ((fromRight ? index-- : ++index < length)) {
-        if (predicate(array[index], index, array)) {
-          return index;
-        }
-      }
-      return -1;
-    }
-  
-    /**
-     * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
-     *
-     * @private
-     * @param {Array} array The array to inspect.
-     * @param {*} value The value to search for.
-     * @param {number} fromIndex The index to search from.
-     * @returns {number} Returns the index of the matched value, else `-1`.
-     */
-    function baseIndexOf(array, value, fromIndex) {
-      return value === value
-        ? strictIndexOf(array, value, fromIndex)
-        : baseFindIndex(array, baseIsNaN, fromIndex);
-    }
-  
-    /**
-     * This function is like `baseIndexOf` except that it accepts a comparator.
-     *
-     * @private
-     * @param {Array} array The array to inspect.
-     * @param {*} value The value to search for.
-     * @param {number} fromIndex The index to search from.
-     * @param {Function} comparator The comparator invoked per element.
-     * @returns {number} Returns the index of the matched value, else `-1`.
-     */
-    function baseIndexOfWith(array, value, fromIndex, comparator) {
-      var index = fromIndex - 1,
-          length = array.length;
-  
-      while (++index < length) {
-        if (comparator(array[index], value)) {
-          return index;
-        }
-      }
-      return -1;
-    }
-  
-    /**
-     * The base implementation of `_.isNaN` without support for number objects.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
-     */
-    function baseIsNaN(value) {
-      return value !== value;
-    }
-  
-    /**
-     * The base implementation of `_.mean` and `_.meanBy` without support for
-     * iteratee shorthands.
-     *
-     * @private
-     * @param {Array} array The array to iterate over.
-     * @param {Function} iteratee The function invoked per iteration.
-     * @returns {number} Returns the mean.
-     */
-    function baseMean(array, iteratee) {
-      var length = array == null ? 0 : array.length;
-      return length ? (baseSum(array, iteratee) / length) : NAN;
-    }
-  
-    /**
-     * The base implementation of `_.property` without support for deep paths.
-     *
-     * @private
-     * @param {string} key The key of the property to get.
-     * @returns {Function} Returns the new accessor function.
-     */
-    function baseProperty(key) {
-      return function(object) {
-        return object == null ? undefined : object[key];
-      };
-    }
-  
-    /**
-     * The base implementation of `_.propertyOf` without support for deep paths.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @returns {Function} Returns the new accessor function.
-     */
-    function basePropertyOf(object) {
-      return function(key) {
-        return object == null ? undefined : object[key];
-      };
-    }
-  
-    /**
-     * The base implementation of `_.reduce` and `_.reduceRight`, without support
-     * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} iteratee The function invoked per iteration.
-     * @param {*} accumulator The initial value.
-     * @param {boolean} initAccum Specify using the first or last element of
-     *  `collection` as the initial value.
-     * @param {Function} eachFunc The function to iterate over `collection`.
-     * @returns {*} Returns the accumulated value.
-     */
-    function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
-      eachFunc(collection, function(value, index, collection) {
-        accumulator = initAccum
-          ? (initAccum = false, value)
-          : iteratee(accumulator, value, index, collection);
-      });
-      return accumulator;
-    }
-  
-    /**
-     * The base implementation of `_.sortBy` which uses `comparer` to define the
-     * sort order of `array` and replaces criteria objects with their corresponding
-     * values.
-     *
-     * @private
-     * @param {Array} array The array to sort.
-     * @param {Function} comparer The function to define sort order.
-     * @returns {Array} Returns `array`.
-     */
-    function baseSortBy(array, comparer) {
-      var length = array.length;
-  
-      array.sort(comparer);
-      while (length--) {
-        array[length] = array[length].value;
-      }
-      return array;
-    }
-  
-    /**
-     * The base implementation of `_.sum` and `_.sumBy` without support for
-     * iteratee shorthands.
-     *
-     * @private
-     * @param {Array} array The array to iterate over.
-     * @param {Function} iteratee The function invoked per iteration.
-     * @returns {number} Returns the sum.
-     */
-    function baseSum(array, iteratee) {
-      var result,
-          index = -1,
-          length = array.length;
-  
-      while (++index < length) {
-        var current = iteratee(array[index]);
-        if (current !== undefined) {
-          result = result === undefined ? current : (result + current);
-        }
-      }
-      return result;
-    }
-  
-    /**
-     * The base implementation of `_.times` without support for iteratee shorthands
-     * or max array length checks.
-     *
-     * @private
-     * @param {number} n The number of times to invoke `iteratee`.
-     * @param {Function} iteratee The function invoked per iteration.
-     * @returns {Array} Returns the array of results.
-     */
-    function baseTimes(n, iteratee) {
-      var index = -1,
-          result = Array(n);
-  
-      while (++index < n) {
-        result[index] = iteratee(index);
-      }
-      return result;
-    }
-  
-    /**
-     * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array
-     * of key-value pairs for `object` corresponding to the property names of `props`.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @param {Array} props The property names to get values for.
-     * @returns {Object} Returns the key-value pairs.
-     */
-    function baseToPairs(object, props) {
-      return arrayMap(props, function(key) {
-        return [key, object[key]];
-      });
-    }
-  
-    /**
-     * The base implementation of `_.unary` without support for storing metadata.
-     *
-     * @private
-     * @param {Function} func The function to cap arguments for.
-     * @returns {Function} Returns the new capped function.
-     */
-    function baseUnary(func) {
-      return function(value) {
-        return func(value);
-      };
-    }
-  
-    /**
-     * The base implementation of `_.values` and `_.valuesIn` which creates an
-     * array of `object` property values corresponding to the property names
-     * of `props`.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @param {Array} props The property names to get values for.
-     * @returns {Object} Returns the array of property values.
-     */
-    function baseValues(object, props) {
-      return arrayMap(props, function(key) {
-        return object[key];
-      });
-    }
-  
-    /**
-     * Checks if a `cache` value for `key` exists.
-     *
-     * @private
-     * @param {Object} cache The cache to query.
-     * @param {string} key The key of the entry to check.
-     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
-     */
-    function cacheHas(cache, key) {
-      return cache.has(key);
-    }
-  
-    /**
-     * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol
-     * that is not found in the character symbols.
-     *
-     * @private
-     * @param {Array} strSymbols The string symbols to inspect.
-     * @param {Array} chrSymbols The character symbols to find.
-     * @returns {number} Returns the index of the first unmatched string symbol.
-     */
-    function charsStartIndex(strSymbols, chrSymbols) {
-      var index = -1,
-          length = strSymbols.length;
-  
-      while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
-      return index;
-    }
-  
-    /**
-     * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol
-     * that is not found in the character symbols.
-     *
-     * @private
-     * @param {Array} strSymbols The string symbols to inspect.
-     * @param {Array} chrSymbols The character symbols to find.
-     * @returns {number} Returns the index of the last unmatched string symbol.
-     */
-    function charsEndIndex(strSymbols, chrSymbols) {
-      var index = strSymbols.length;
-  
-      while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
-      return index;
-    }
-  
-    /**
-     * Gets the number of `placeholder` occurrences in `array`.
-     *
-     * @private
-     * @param {Array} array The array to inspect.
-     * @param {*} placeholder The placeholder to search for.
-     * @returns {number} Returns the placeholder count.
-     */
-    function countHolders(array, placeholder) {
-      var length = array.length,
-          result = 0;
-  
-      while (length--) {
-        if (array[length] === placeholder) {
-          ++result;
-        }
-      }
-      return result;
-    }
-  
-    /**
-     * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A
-     * letters to basic Latin letters.
-     *
-     * @private
-     * @param {string} letter The matched letter to deburr.
-     * @returns {string} Returns the deburred letter.
-     */
-    var deburrLetter = basePropertyOf(deburredLetters);
-  
-    /**
-     * Used by `_.escape` to convert characters to HTML entities.
-     *
-     * @private
-     * @param {string} chr The matched character to escape.
-     * @returns {string} Returns the escaped character.
-     */
-    var escapeHtmlChar = basePropertyOf(htmlEscapes);
-  
-    /**
-     * Used by `_.template` to escape characters for inclusion in compiled string literals.
-     *
-     * @private
-     * @param {string} chr The matched character to escape.
-     * @returns {string} Returns the escaped character.
-     */
-    function escapeStringChar(chr) {
-      return '\\' + stringEscapes[chr];
-    }
-  
-    /**
-     * Gets the value at `key` of `object`.
-     *
-     * @private
-     * @param {Object} [object] The object to query.
-     * @param {string} key The key of the property to get.
-     * @returns {*} Returns the property value.
-     */
-    function getValue(object, key) {
-      return object == null ? undefined : object[key];
-    }
-  
-    /**
-     * Checks if `string` contains Unicode symbols.
-     *
-     * @private
-     * @param {string} string The string to inspect.
-     * @returns {boolean} Returns `true` if a symbol is found, else `false`.
-     */
-    function hasUnicode(string) {
-      return reHasUnicode.test(string);
-    }
-  
-    /**
-     * Checks if `string` contains a word composed of Unicode symbols.
-     *
-     * @private
-     * @param {string} string The string to inspect.
-     * @returns {boolean} Returns `true` if a word is found, else `false`.
-     */
-    function hasUnicodeWord(string) {
-      return reHasUnicodeWord.test(string);
-    }
-  
-    /**
-     * Converts `iterator` to an array.
-     *
-     * @private
-     * @param {Object} iterator The iterator to convert.
-     * @returns {Array} Returns the converted array.
-     */
-    function iteratorToArray(iterator) {
-      var data,
-          result = [];
-  
-      while (!(data = iterator.next()).done) {
-        result.push(data.value);
-      }
-      return result;
-    }
-  
-    /**
-     * Converts `map` to its key-value pairs.
-     *
-     * @private
-     * @param {Object} map The map to convert.
-     * @returns {Array} Returns the key-value pairs.
-     */
-    function mapToArray(map) {
-      var index = -1,
-          result = Array(map.size);
-  
-      map.forEach(function(value, key) {
-        result[++index] = [key, value];
-      });
-      return result;
-    }
-  
-    /**
-     * Creates a unary function that invokes `func` with its argument transformed.
-     *
-     * @private
-     * @param {Function} func The function to wrap.
-     * @param {Function} transform The argument transform.
-     * @returns {Function} Returns the new function.
-     */
-    function overArg(func, transform) {
-      return function(arg) {
-        return func(transform(arg));
-      };
-    }
-  
-    /**
-     * Replaces all `placeholder` elements in `array` with an internal placeholder
-     * and returns an array of their indexes.
-     *
-     * @private
-     * @param {Array} array The array to modify.
-     * @param {*} placeholder The placeholder to replace.
-     * @returns {Array} Returns the new array of placeholder indexes.
-     */
-    function replaceHolders(array, placeholder) {
-      var index = -1,
-          length = array.length,
-          resIndex = 0,
-          result = [];
-  
-      while (++index < length) {
-        var value = array[index];
-        if (value === placeholder || value === PLACEHOLDER) {
-          array[index] = PLACEHOLDER;
-          result[resIndex++] = index;
-        }
-      }
-      return result;
-    }
-  
-    /**
-     * Converts `set` to an array of its values.
-     *
-     * @private
-     * @param {Object} set The set to convert.
-     * @returns {Array} Returns the values.
-     */
-    function setToArray(set) {
-      var index = -1,
-          result = Array(set.size);
-  
-      set.forEach(function(value) {
-        result[++index] = value;
-      });
-      return result;
-    }
-  
-    /**
-     * Converts `set` to its value-value pairs.
-     *
-     * @private
-     * @param {Object} set The set to convert.
-     * @returns {Array} Returns the value-value pairs.
-     */
-    function setToPairs(set) {
-      var index = -1,
-          result = Array(set.size);
-  
-      set.forEach(function(value) {
-        result[++index] = [value, value];
-      });
-      return result;
-    }
-  
-    /**
-     * A specialized version of `_.indexOf` which performs strict equality
-     * comparisons of values, i.e. `===`.
-     *
-     * @private
-     * @param {Array} array The array to inspect.
-     * @param {*} value The value to search for.
-     * @param {number} fromIndex The index to search from.
-     * @returns {number} Returns the index of the matched value, else `-1`.
-     */
-    function strictIndexOf(array, value, fromIndex) {
-      var index = fromIndex - 1,
-          length = array.length;
-  
-      while (++index < length) {
-        if (array[index] === value) {
-          return index;
-        }
-      }
-      return -1;
-    }
-  
-    /**
-     * A specialized version of `_.lastIndexOf` which performs strict equality
-     * comparisons of values, i.e. `===`.
-     *
-     * @private
-     * @param {Array} array The array to inspect.
-     * @param {*} value The value to search for.
-     * @param {number} fromIndex The index to search from.
-     * @returns {number} Returns the index of the matched value, else `-1`.
-     */
-    function strictLastIndexOf(array, value, fromIndex) {
-      var index = fromIndex + 1;
-      while (index--) {
-        if (array[index] === value) {
-          return index;
-        }
-      }
-      return index;
-    }
-  
-    /**
-     * Gets the number of symbols in `string`.
-     *
-     * @private
-     * @param {string} string The string to inspect.
-     * @returns {number} Returns the string size.
-     */
-    function stringSize(string) {
-      return hasUnicode(string)
-        ? unicodeSize(string)
-        : asciiSize(string);
-    }
-  
-    /**
-     * Converts `string` to an array.
-     *
-     * @private
-     * @param {string} string The string to convert.
-     * @returns {Array} Returns the converted array.
-     */
-    function stringToArray(string) {
-      return hasUnicode(string)
-        ? unicodeToArray(string)
-        : asciiToArray(string);
-    }
-  
-    /**
-     * Used by `_.unescape` to convert HTML entities to characters.
-     *
-     * @private
-     * @param {string} chr The matched character to unescape.
-     * @returns {string} Returns the unescaped character.
-     */
-    var unescapeHtmlChar = basePropertyOf(htmlUnescapes);
-  
-    /**
-     * Gets the size of a Unicode `string`.
-     *
-     * @private
-     * @param {string} string The string inspect.
-     * @returns {number} Returns the string size.
-     */
-    function unicodeSize(string) {
-      var result = reUnicode.lastIndex = 0;
-      while (reUnicode.test(string)) {
-        ++result;
-      }
-      return result;
-    }
-  
-    /**
-     * Converts a Unicode `string` to an array.
-     *
-     * @private
-     * @param {string} string The string to convert.
-     * @returns {Array} Returns the converted array.
-     */
-    function unicodeToArray(string) {
-      return string.match(reUnicode) || [];
-    }
-  
-    /**
-     * Splits a Unicode `string` into an array of its words.
-     *
-     * @private
-     * @param {string} The string to inspect.
-     * @returns {Array} Returns the words of `string`.
-     */
-    function unicodeWords(string) {
-      return string.match(reUnicodeWord) || [];
-    }
-  
-    /*--------------------------------------------------------------------------*/
-  
-    /**
-     * Create a new pristine `lodash` function using the `context` object.
-     *
-     * @static
-     * @memberOf _
-     * @since 1.1.0
-     * @category Util
-     * @param {Object} [context=root] The context object.
-     * @returns {Function} Returns a new `lodash` function.
-     * @example
-     *
-     * _.mixin({ 'foo': _.constant('foo') });
-     *
-     * var lodash = _.runInContext();
-     * lodash.mixin({ 'bar': lodash.constant('bar') });
-     *
-     * _.isFunction(_.foo);
-     * // => true
-     * _.isFunction(_.bar);
-     * // => false
-     *
-     * lodash.isFunction(lodash.foo);
-     * // => false
-     * lodash.isFunction(lodash.bar);
-     * // => true
-     *
-     * // Create a suped-up `defer` in Node.js.
-     * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;
-     */
-    var runInContext = (function runInContext(context) {
-      context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));
-  
-      /** Built-in constructor references. */
-      var Array = context.Array,
-          Date = context.Date,
-          Error = context.Error,
-          Function = context.Function,
-          Math = context.Math,
-          Object = context.Object,
-          RegExp = context.RegExp,
-          String = context.String,
-          TypeError = context.TypeError;
-  
-      /** Used for built-in method references. */
-      var arrayProto = Array.prototype,
-          funcProto = Function.prototype,
-          objectProto = Object.prototype;
-  
-      /** Used to detect overreaching core-js shims. */
-      var coreJsData = context['__core-js_shared__'];
-  
-      /** Used to resolve the decompiled source of functions. */
-      var funcToString = funcProto.toString;
-  
-      /** Used to check objects for own properties. */
-      var hasOwnProperty = objectProto.hasOwnProperty;
-  
-      /** Used to generate unique IDs. */
-      var idCounter = 0;
-  
-      /** Used to detect methods masquerading as native. */
-      var maskSrcKey = (function() {
-        var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
-        return uid ? ('Symbol(src)_1.' + uid) : '';
-      }());
-  
-      /**
-       * Used to resolve the
-       * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
-       * of values.
-       */
-      var nativeObjectToString = objectProto.toString;
-  
-      /** Used to infer the `Object` constructor. */
-      var objectCtorString = funcToString.call(Object);
-  
-      /** Used to restore the original `_` reference in `_.noConflict`. */
-      var oldDash = root._;
-  
-      /** Used to detect if a method is native. */
-      var reIsNative = RegExp('^' +
-        funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
-        .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
-      );
-  
-      /** Built-in value references. */
-      var Buffer = moduleExports ? context.Buffer : undefined,
-          Symbol = context.Symbol,
-          Uint8Array = context.Uint8Array,
-          allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,
-          getPrototype = overArg(Object.getPrototypeOf, Object),
-          objectCreate = Object.create,
-          propertyIsEnumerable = objectProto.propertyIsEnumerable,
-          splice = arrayProto.splice,
-          spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,
-          symIterator = Symbol ? Symbol.iterator : undefined,
-          symToStringTag = Symbol ? Symbol.toStringTag : undefined;
-  
-      var defineProperty = (function() {
-        try {
-          var func = getNative(Object, 'defineProperty');
-          func({}, '', {});
-          return func;
-        } catch (e) {}
-      }());
-  
-      /** Mocked built-ins. */
-      var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,
-          ctxNow = Date && Date.now !== root.Date.now && Date.now,
-          ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;
-  
-      /* Built-in method references for those with the same name as other `lodash` methods. */
-      var nativeCeil = Math.ceil,
-          nativeFloor = Math.floor,
-          nativeGetSymbols = Object.getOwnPropertySymbols,
-          nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
-          nativeIsFinite = context.isFinite,
-          nativeJoin = arrayProto.join,
-          nativeKeys = overArg(Object.keys, Object),
-          nativeMax = Math.max,
-          nativeMin = Math.min,
-          nativeNow = Date.now,
-          nativeParseInt = context.parseInt,
-          nativeRandom = Math.random,
-          nativeReverse = arrayProto.reverse;
-  
-      /* Built-in method references that are verified to be native. */
-      var DataView = getNative(context, 'DataView'),
-          Map = getNative(context, 'Map'),
-          Promise = getNative(context, 'Promise'),
-          Set = getNative(context, 'Set'),
-          WeakMap = getNative(context, 'WeakMap'),
-          nativeCreate = getNative(Object, 'create');
-  
-      /** Used to store function metadata. */
-      var metaMap = WeakMap && new WeakMap;
-  
-      /** Used to lookup unminified function names. */
-      var realNames = {};
-  
-      /** Used to detect maps, sets, and weakmaps. */
-      var dataViewCtorString = toSource(DataView),
-          mapCtorString = toSource(Map),
-          promiseCtorString = toSource(Promise),
-          setCtorString = toSource(Set),
-          weakMapCtorString = toSource(WeakMap);
-  
-      /** Used to convert symbols to primitives and strings. */
-      var symbolProto = Symbol ? Symbol.prototype : undefined,
-          symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,
-          symbolToString = symbolProto ? symbolProto.toString : undefined;
-  
-      /*------------------------------------------------------------------------*/
-  
-      /**
-       * Creates a `lodash` object which wraps `value` to enable implicit method
-       * chain sequences. Methods that operate on and return arrays, collections,
-       * and functions can be chained together. Methods that retrieve a single value
-       * or may return a primitive value will automatically end the chain sequence
-       * and return the unwrapped value. Otherwise, the value must be unwrapped
-       * with `_#value`.
-       *
-       * Explicit chain sequences, which must be unwrapped with `_#value`, may be
-       * enabled using `_.chain`.
-       *
-       * The execution of chained methods is lazy, that is, it's deferred until
-       * `_#value` is implicitly or explicitly called.
-       *
-       * Lazy evaluation allows several methods to support shortcut fusion.
-       * Shortcut fusion is an optimization to merge iteratee calls; this avoids
-       * the creation of intermediate arrays and can greatly reduce the number of
-       * iteratee executions. Sections of a chain sequence qualify for shortcut
-       * fusion if the section is applied to an array and iteratees accept only
-       * one argument. The heuristic for whether a section qualifies for shortcut
-       * fusion is subject to change.
-       *
-       * Chaining is supported in custom builds as long as the `_#value` method is
-       * directly or indirectly included in the build.
-       *
-       * In addition to lodash methods, wrappers have `Array` and `String` methods.
-       *
-       * The wrapper `Array` methods are:
-       * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
-       *
-       * The wrapper `String` methods are:
-       * `replace` and `split`
-       *
-       * The wrapper methods that support shortcut fusion are:
-       * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
-       * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
-       * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
-       *
-       * The chainable wrapper methods are:
-       * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
-       * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
-       * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
-       * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
-       * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
-       * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
-       * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
-       * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
-       * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
-       * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
-       * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
-       * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
-       * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
-       * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
-       * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
-       * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
-       * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
-       * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
-       * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
-       * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
-       * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
-       * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
-       * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
-       * `zipObject`, `zipObjectDeep`, and `zipWith`
-       *
-       * The wrapper methods that are **not** chainable by default are:
-       * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
-       * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
-       * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
-       * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
-       * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
-       * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
-       * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
-       * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
-       * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
-       * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
-       * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
-       * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
-       * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
-       * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
-       * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
-       * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
-       * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
-       * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
-       * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
-       * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
-       * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
-       * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
-       * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
-       * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
-       * `upperFirst`, `value`, and `words`
-       *
-       * @name _
-       * @constructor
-       * @category Seq
-       * @param {*} value The value to wrap in a `lodash` instance.
-       * @returns {Object} Returns the new `lodash` wrapper instance.
-       * @example
-       *
-       * function square(n) {
-       *   return n * n;
-       * }
-       *
-       * var wrapped = _([1, 2, 3]);
-       *
-       * // Returns an unwrapped value.
-       * wrapped.reduce(_.add);
-       * // => 6
-       *
-       * // Returns a wrapped value.
-       * var squares = wrapped.map(square);
-       *
-       * _.isArray(squares);
-       * // => false
-       *
-       * _.isArray(squares.value());
-       * // => true
-       */
-      function lodash(value) {
-        if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
-          if (value instanceof LodashWrapper) {
-            return value;
-          }
-          if (hasOwnProperty.call(value, '__wrapped__')) {
-            return wrapperClone(value);
-          }
-        }
-        return new LodashWrapper(value);
-      }
-  
-      /**
-       * The base implementation of `_.create` without support for assigning
-       * properties to the created object.
-       *
-       * @private
-       * @param {Object} proto The object to inherit from.
-       * @returns {Object} Returns the new object.
-       */
-      var baseCreate = (function() {
-        function object() {}
-        return function(proto) {
-          if (!isObject(proto)) {
-            return {};
-          }
-          if (objectCreate) {
-            return objectCreate(proto);
-          }
-          object.prototype = proto;
-          var result = new object;
-          object.prototype = undefined;
-          return result;
-        };
-      }());
-  
-      /**
-       * The function whose prototype chain sequence wrappers inherit from.
-       *
-       * @private
-       */
-      function baseLodash() {
-        // No operation performed.
-      }
-  
-      /**
-       * The base constructor for creating `lodash` wrapper objects.
-       *
-       * @private
-       * @param {*} value The value to wrap.
-       * @param {boolean} [chainAll] Enable explicit method chain sequences.
-       */
-      function LodashWrapper(value, chainAll) {
-        this.__wrapped__ = value;
-        this.__actions__ = [];
-        this.__chain__ = !!chainAll;
-        this.__index__ = 0;
-        this.__values__ = undefined;
-      }
-  
-      /**
-       * By default, the template delimiters used by lodash are like those in
-       * embedded Ruby (ERB) as well as ES2015 template strings. Change the
-       * following template settings to use alternative delimiters.
-       *
-       * @static
-       * @memberOf _
-       * @type {Object}
-       */
-      lodash.templateSettings = {
-  
-        /**
-         * Used to detect `data` property values to be HTML-escaped.
-         *
-         * @memberOf _.templateSettings
-         * @type {RegExp}
-         */
-        'escape': reEscape,
-  
-        /**
-         * Used to detect code to be evaluated.
-         *
-         * @memberOf _.templateSettings
-         * @type {RegExp}
-         */
-        'evaluate': reEvaluate,
-  
-        /**
-         * Used to detect `data` property values to inject.
-         *
-         * @memberOf _.templateSettings
-         * @type {RegExp}
-         */
-        'interpolate': reInterpolate,
-  
-        /**
-         * Used to reference the data object in the template text.
-         *
-         * @memberOf _.templateSettings
-         * @type {string}
-         */
-        'variable': '',
-  
-        /**
-         * Used to import variables into the compiled template.
-         *
-         * @memberOf _.templateSettings
-         * @type {Object}
-         */
-        'imports': {
-  
-          /**
-           * A reference to the `lodash` function.
-           *
-           * @memberOf _.templateSettings.imports
-           * @type {Function}
-           */
-          '_': lodash
-        }
-      };
-  
-      // Ensure wrappers are instances of `baseLodash`.
-      lodash.prototype = baseLodash.prototype;
-      lodash.prototype.constructor = lodash;
-  
-      LodashWrapper.prototype = baseCreate(baseLodash.prototype);
-      LodashWrapper.prototype.constructor = LodashWrapper;
-  
-      /*------------------------------------------------------------------------*/
-  
-      /**
-       * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
-       *
-       * @private
-       * @constructor
-       * @param {*} value The value to wrap.
-       */
-      function LazyWrapper(value) {
-        this.__wrapped__ = value;
-        this.__actions__ = [];
-        this.__dir__ = 1;
-        this.__filtered__ = false;
-        this.__iteratees__ = [];
-        this.__takeCount__ = MAX_ARRAY_LENGTH;
-        this.__views__ = [];
-      }
-  
-      /**
-       * Creates a clone of the lazy wrapper object.
-       *
-       * @private
-       * @name clone
-       * @memberOf LazyWrapper
-       * @returns {Object} Returns the cloned `LazyWrapper` object.
-       */
-      function lazyClone() {
-        var result = new LazyWrapper(this.__wrapped__);
-        result.__actions__ = copyArray(this.__actions__);
-        result.__dir__ = this.__dir__;
-        result.__filtered__ = this.__filtered__;
-        result.__iteratees__ = copyArray(this.__iteratees__);
-        result.__takeCount__ = this.__takeCount__;
-        result.__views__ = copyArray(this.__views__);
-        return result;
-      }
-  
-      /**
-       * Reverses the direction of lazy iteration.
-       *
-       * @private
-       * @name reverse
-       * @memberOf LazyWrapper
-       * @returns {Object} Returns the new reversed `LazyWrapper` object.
-       */
-      function lazyReverse() {
-        if (this.__filtered__) {
-          var result = new LazyWrapper(this);
-          result.__dir__ = -1;
-          result.__filtered__ = true;
-        } else {
-          result = this.clone();
-          result.__dir__ *= -1;
-        }
-        return result;
-      }
-  
-      /**
-       * Extracts the unwrapped value from its lazy wrapper.
-       *
-       * @private
-       * @name value
-       * @memberOf LazyWrapper
-       * @returns {*} Returns the unwrapped value.
-       */
-      function lazyValue() {
-        var array = this.__wrapped__.value(),
-            dir = this.__dir__,
-            isArr = isArray(array),
-            isRight = dir < 0,
-            arrLength = isArr ? array.length : 0,
-            view = getView(0, arrLength, this.__views__),
-            start = view.start,
-            end = view.end,
-            length = end - start,
-            index = isRight ? end : (start - 1),
-            iteratees = this.__iteratees__,
-            iterLength = iteratees.length,
-            resIndex = 0,
-            takeCount = nativeMin(length, this.__takeCount__);
-  
-        if (!isArr || (!isRight && arrLength == length && takeCount == length)) {
-          return baseWrapperValue(array, this.__actions__);
-        }
-        var result = [];
-  
-        outer:
-        while (length-- && resIndex < takeCount) {
-          index += dir;
-  
-          var iterIndex = -1,
-              value = array[index];
-  
-          while (++iterIndex < iterLength) {
-            var data = iteratees[iterIndex],
-                iteratee = data.iteratee,
-                type = data.type,
-                computed = iteratee(value);
-  
-            if (type == LAZY_MAP_FLAG) {
-              value = computed;
-            } else if (!computed) {
-              if (type == LAZY_FILTER_FLAG) {
-                continue outer;
-              } else {
-                break outer;
-              }
-            }
-          }
-          result[resIndex++] = value;
-        }
-        return result;
-      }
-  
-      // Ensure `LazyWrapper` is an instance of `baseLodash`.
-      LazyWrapper.prototype = baseCreate(baseLodash.prototype);
-      LazyWrapper.prototype.constructor = LazyWrapper;
-  
-      /*------------------------------------------------------------------------*/
-  
-      /**
-       * Creates a hash object.
-       *
-       * @private
-       * @constructor
-       * @param {Array} [entries] The key-value pairs to cache.
-       */
-      function Hash(entries) {
-        var index = -1,
-            length = entries == null ? 0 : entries.length;
-  
-        this.clear();
-        while (++index < length) {
-          var entry = entries[index];
-          this.set(entry[0], entry[1]);
-        }
-      }
-  
-      /**
-       * Removes all key-value entries from the hash.
-       *
-       * @private
-       * @name clear
-       * @memberOf Hash
-       */
-      function hashClear() {
-        this.__data__ = nativeCreate ? nativeCreate(null) : {};
-        this.size = 0;
-      }
-  
-      /**
-       * Removes `key` and its value from the hash.
-       *
-       * @private
-       * @name delete
-       * @memberOf Hash
-       * @param {Object} hash The hash to modify.
-       * @param {string} key The key of the value to remove.
-       * @returns {boolean} Returns `true` if the entry was removed, else `false`.
-       */
-      function hashDelete(key) {
-        var result = this.has(key) && delete this.__data__[key];
-        this.size -= result ? 1 : 0;
-        return result;
-      }
-  
-      /**
-       * Gets the hash value for `key`.
-       *
-       * @private
-       * @name get
-       * @memberOf Hash
-       * @param {string} key The key of the value to get.
-       * @returns {*} Returns the entry value.
-       */
-      function hashGet(key) {
-        var data = this.__data__;
-        if (nativeCreate) {
-          var result = data[key];
-          return result === HASH_UNDEFINED ? undefined : result;
-        }
-        return hasOwnProperty.call(data, key) ? data[key] : undefined;
-      }
-  
-      /**
-       * Checks if a hash value for `key` exists.
-       *
-       * @private
-       * @name has
-       * @memberOf Hash
-       * @param {string} key The key of the entry to check.
-       * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
-       */
-      function hashHas(key) {
-        var data = this.__data__;
-        return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
-      }
-  
-      /**
-       * Sets the hash `key` to `value`.
-       *
-       * @private
-       * @name set
-       * @memberOf Hash
-       * @param {string} key The key of the value to set.
-       * @param {*} value The value to set.
-       * @returns {Object} Returns the hash instance.
-       */
-      function hashSet(key, value) {
-        var data = this.__data__;
-        this.size += this.has(key) ? 0 : 1;
-        data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
-        return this;
-      }
-  
-      // Add methods to `Hash`.
-      Hash.prototype.clear = hashClear;
-      Hash.prototype['delete'] = hashDelete;
-      Hash.prototype.get = hashGet;
-      Hash.prototype.has = hashHas;
-      Hash.prototype.set = hashSet;
-  
-      /*------------------------------------------------------------------------*/
-  
-      /**
-       * Creates an list cache object.
-       *
-       * @private
-       * @constructor
-       * @param {Array} [entries] The key-value pairs to cache.
-       */
-      function ListCache(entries) {
-        var index = -1,
-            length = entries == null ? 0 : entries.length;
-  
-        this.clear();
-        while (++index < length) {
-          var entry = entries[index];
-          this.set(entry[0], entry[1]);
-        }
-      }
-  
-      /**
-       * Removes all key-value entries from the list cache.
-       *
-       * @private
-       * @name clear
-       * @memberOf ListCache
-       */
-      function listCacheClear() {
-        this.__data__ = [];
-        this.size = 0;
-      }
-  
-      /**
-       * Removes `key` and its value from the list cache.
-       *
-       * @private
-       * @name delete
-       * @memberOf ListCache
-       * @param {string} key The key of the value to remove.
-       * @returns {boolean} Returns `true` if the entry was removed, else `false`.
-       */
-      function listCacheDelete(key) {
-        var data = this.__data__,
-            index = assocIndexOf(data, key);
-  
-        if (index < 0) {
-          return false;
-        }
-        var lastIndex = data.length - 1;
-        if (index == lastIndex) {
-          data.pop();
-        } else {
-          splice.call(data, index, 1);
-        }
-        --this.size;
-        return true;
-      }
-  
-      /**
-       * Gets the list cache value for `key`.
-       *
-       * @private
-       * @name get
-       * @memberOf ListCache
-       * @param {string} key The key of the value to get.
-       * @returns {*} Returns the entry value.
-       */
-      function listCacheGet(key) {
-        var data = this.__data__,
-            index = assocIndexOf(data, key);
-  
-        return index < 0 ? undefined : data[index][1];
-      }
-  
-      /**
-       * Checks if a list cache value for `key` exists.
-       *
-       * @private
-       * @name has
-       * @memberOf ListCache
-       * @param {string} key The key of the entry to check.
-       * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
-       */
-      function listCacheHas(key) {
-        return assocIndexOf(this.__data__, key) > -1;
-      }
-  
-      /**
-       * Sets the list cache `key` to `value`.
-       *
-       * @private
-       * @name set
-       * @memberOf ListCache
-       * @param {string} key The key of the value to set.
-       * @param {*} value The value to set.
-       * @returns {Object} Returns the list cache instance.
-       */
-      function listCacheSet(key, value) {
-        var data = this.__data__,
-            index = assocIndexOf(data, key);
-  
-        if (index < 0) {
-          ++this.size;
-          data.push([key, value]);
-        } else {
-          data[index][1] = value;
-        }
-        return this;
-      }
-  
-      // Add methods to `ListCache`.
-      ListCache.prototype.clear = listCacheClear;
-      ListCache.prototype['delete'] = listCacheDelete;
-      ListCache.prototype.get = listCacheGet;
-      ListCache.prototype.has = listCacheHas;
-      ListCache.prototype.set = listCacheSet;
-  
-      /*------------------------------------------------------------------------*/
-  
-      /**
-       * Creates a map cache object to store key-value pairs.
-       *
-       * @private
-       * @constructor
-       * @param {Array} [entries] The key-value pairs to cache.
-       */
-      function MapCache(entries) {
-        var index = -1,
-            length = entries == null ? 0 : entries.length;
-  
-        this.clear();
-        while (++index < length) {
-          var entry = entries[index];
-          this.set(entry[0], entry[1]);
-        }
-      }
-  
-      /**
-       * Removes all key-value entries from the map.
-       *
-       * @private
-       * @name clear
-       * @memberOf MapCache
-       */
-      function mapCacheClear() {
-        this.size = 0;
-        this.__data__ = {
-          'hash': new Hash,
-          'map': new (Map || ListCache),
-          'string': new Hash
-        };
-      }
-  
-      /**
-       * Removes `key` and its value from the map.
-       *
-       * @private
-       * @name delete
-       * @memberOf MapCache
-       * @param {string} key The key of the value to remove.
-       * @returns {boolean} Returns `true` if the entry was removed, else `false`.
-       */
-      function mapCacheDelete(key) {
-        var result = getMapData(this, key)['delete'](key);
-        this.size -= result ? 1 : 0;
-        return result;
-      }
-  
-      /**
-       * Gets the map value for `key`.
-       *
-       * @private
-       * @name get
-       * @memberOf MapCache
-       * @param {string} key The key of the value to get.
-       * @returns {*} Returns the entry value.
-       */
-      function mapCacheGet(key) {
-        return getMapData(this, key).get(key);
-      }
-  
-      /**
-       * Checks if a map value for `key` exists.
-       *
-       * @private
-       * @name has
-       * @memberOf MapCache
-       * @param {string} key The key of the entry to check.
-       * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
-       */
-      function mapCacheHas(key) {
-        return getMapData(this, key).has(key);
-      }
-  
-      /**
-       * Sets the map `key` to `value`.
-       *
-       * @private
-       * @name set
-       * @memberOf MapCache
-       * @param {string} key The key of the value to set.
-       * @param {*} value The value to set.
-       * @returns {Object} Returns the map cache instance.
-       */
-      function mapCacheSet(key, value) {
-        var data = getMapData(this, key),
-            size = data.size;
-  
-        data.set(key, value);
-        this.size += data.size == size ? 0 : 1;
-        return this;
-      }
-  
-      // Add methods to `MapCache`.
-      MapCache.prototype.clear = mapCacheClear;
-      MapCache.prototype['delete'] = mapCacheDelete;
-      MapCache.prototype.get = mapCacheGet;
-      MapCache.prototype.has = mapCacheHas;
-      MapCache.prototype.set = mapCacheSet;
-  
-      /*------------------------------------------------------------------------*/
-  
-      /**
-       *
-       * Creates an array cache object to store unique values.
-       *
-       * @private
-       * @constructor
-       * @param {Array} [values] The values to cache.
-       */
-      function SetCache(values) {
-        var index = -1,
-            length = values == null ? 0 : values.length;
-  
-        this.__data__ = new MapCache;
-        while (++index < length) {
-          this.add(values[index]);
-        }
-      }
-  
-      /**
-       * Adds `value` to the array cache.
-       *
-       * @private
-       * @name add
-       * @memberOf SetCache
-       * @alias push
-       * @param {*} value The value to cache.
-       * @returns {Object} Returns the cache instance.
-       */
-      function setCacheAdd(value) {
-        this.__data__.set(value, HASH_UNDEFINED);
-        return this;
-      }
-  
-      /**
-       * Checks if `value` is in the array cache.
-       *
-       * @private
-       * @name has
-       * @memberOf SetCache
-       * @param {*} value The value to search for.
-       * @returns {number} Returns `true` if `value` is found, else `false`.
-       */
-      function setCacheHas(value) {
-        return this.__data__.has(value);
-      }
-  
-      // Add methods to `SetCache`.
-      SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
-      SetCache.prototype.has = setCacheHas;
-  
-      /*------------------------------------------------------------------------*/
-  
-      /**
-       * Creates a stack cache object to store key-value pairs.
-       *
-       * @private
-       * @constructor
-       * @param {Array} [entries] The key-value pairs to cache.
-       */
-      function Stack(entries) {
-        var data = this.__data__ = new ListCache(entries);
-        this.size = data.size;
-      }
-  
-      /**
-       * Removes all key-value entries from the stack.
-       *
-       * @private
-       * @name clear
-       * @memberOf Stack
-       */
-      function stackClear() {
-        this.__data__ = new ListCache;
-        this.size = 0;
-      }
-  
-      /**
-       * Removes `key` and its value from the stack.
-       *
-       * @private
-       * @name delete
-       * @memberOf Stack
-       * @param {string} key The key of the value to remove.
-       * @returns {boolean} Returns `true` if the entry was removed, else `false`.
-       */
-      function stackDelete(key) {
-        var data = this.__data__,
-            result = data['delete'](key);
-  
-        this.size = data.size;
-        return result;
-      }
-  
-      /**
-       * Gets the stack value for `key`.
-       *
-       * @private
-       * @name get
-       * @memberOf Stack
-       * @param {string} key The key of the value to get.
-       * @returns {*} Returns the entry value.
-       */
-      function stackGet(key) {
-        return this.__data__.get(key);
-      }
-  
-      /**
-       * Checks if a stack value for `key` exists.
-       *
-       * @private
-       * @name has
-       * @memberOf Stack
-       * @param {string} key The key of the entry to check.
-       * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
-       */
-      function stackHas(key) {
-        return this.__data__.has(key);
-      }
-  
-      /**
-       * Sets the stack `key` to `value`.
-       *
-       * @private
-       * @name set
-       * @memberOf Stack
-       * @param {string} key The key of the value to set.
-       * @param {*} value The value to set.
-       * @returns {Object} Returns the stack cache instance.
-       */
-      function stackSet(key, value) {
-        var data = this.__data__;
-        if (data instanceof ListCache) {
-          var pairs = data.__data__;
-          if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
-            pairs.push([key, value]);
-            this.size = ++data.size;
-            return this;
-          }
-          data = this.__data__ = new MapCache(pairs);
-        }
-        data.set(key, value);
-        this.size = data.size;
-        return this;
-      }
-  
-      // Add methods to `Stack`.
-      Stack.prototype.clear = stackClear;
-      Stack.prototype['delete'] = stackDelete;
-      Stack.prototype.get = stackGet;
-      Stack.prototype.has = stackHas;
-      Stack.prototype.set = stackSet;
-  
-      /*------------------------------------------------------------------------*/
-  
-      /**
-       * Creates an array of the enumerable property names of the array-like `value`.
-       *
-       * @private
-       * @param {*} value The value to query.
-       * @param {boolean} inherited Specify returning inherited property names.
-       * @returns {Array} Returns the array of property names.
-       */
-      function arrayLikeKeys(value, inherited) {
-        var isArr = isArray(value),
-            isArg = !isArr && isArguments(value),
-            isBuff = !isArr && !isArg && isBuffer(value),
-            isType = !isArr && !isArg && !isBuff && isTypedArray(value),
-            skipIndexes = isArr || isArg || isBuff || isType,
-            result = skipIndexes ? baseTimes(value.length, String) : [],
-            length = result.length;
-  
-        for (var key in value) {
-          if ((inherited || hasOwnProperty.call(value, key)) &&
-              !(skipIndexes && (
-                 // Safari 9 has enumerable `arguments.length` in strict mode.
-                 key == 'length' ||
-                 // Node.js 0.10 has enumerable non-index properties on buffers.
-                 (isBuff && (key == 'offset' || key == 'parent')) ||
-                 // PhantomJS 2 has enumerable non-index properties on typed arrays.
-                 (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
-                 // Skip index properties.
-                 isIndex(key, length)
-              ))) {
-            result.push(key);
-          }
-        }
-        return result;
-      }
-  
-      /**
-       * A specialized version of `_.sample` for arrays.
-       *
-       * @private
-       * @param {Array} array The array to sample.
-       * @returns {*} Returns the random element.
-       */
-      function arraySample(array) {
-        var length = array.length;
-        return length ? array[baseRandom(0, length - 1)] : undefined;
-      }
-  
-      /**
-       * A specialized version of `_.sampleSize` for arrays.
-       *
-       * @private
-       * @param {Array} array The array to sample.
-       * @param {number} n The number of elements to sample.
-       * @returns {Array} Returns the random elements.
-       */
-      function arraySampleSize(array, n) {
-        return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));
-      }
-  
-      /**
-       * A specialized version of `_.shuffle` for arrays.
-       *
-       * @private
-       * @param {Array} array The array to shuffle.
-       * @returns {Array} Returns the new shuffled array.
-       */
-      function arrayShuffle(array) {
-        return shuffleSelf(copyArray(array));
-      }
-  
-      /**
-       * This function is like `assignValue` except that it doesn't assign
-       * `undefined` values.
-       *
-       * @private
-       * @param {Object} object The object to modify.
-       * @param {string} key The key of the property to assign.
-       * @param {*} value The value to assign.
-       */
-      function assignMergeValue(object, key, value) {
-        if ((value !== undefined && !eq(object[key], value)) ||
-            (value === undefined && !(key in object))) {
-          baseAssignValue(object, key, value);
-        }
-      }
-  
-      /**
-       * Assigns `value` to `key` of `object` if the existing value is not equivalent
-       * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-       * for equality comparisons.
-       *
-       * @private
-       * @param {Object} object The object to modify.
-       * @param {string} key The key of the property to assign.
-       * @param {*} value The value to assign.
-       */
-      function assignValue(object, key, value) {
-        var objValue = object[key];
-        if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
-            (value === undefined && !(key in object))) {
-          baseAssignValue(object, key, value);
-        }
-      }
-  
-      /**
-       * Gets the index at which the `key` is found in `array` of key-value pairs.
-       *
-       * @private
-       * @param {Array} array The array to inspect.
-       * @param {*} key The key to search for.
-       * @returns {number} Returns the index of the matched value, else `-1`.
-       */
-      function assocIndexOf(array, key) {
-        var length = array.length;
-        while (length--) {
-          if (eq(array[length][0], key)) {
-            return length;
-          }
-        }
-        return -1;
-      }
-  
-      /**
-       * Aggregates elements of `collection` on `accumulator` with keys transformed
-       * by `iteratee` and values set by `setter`.
-       *
-       * @private
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function} setter The function to set `accumulator` values.
-       * @param {Function} iteratee The iteratee to transform keys.
-       * @param {Object} accumulator The initial aggregated object.
-       * @returns {Function} Returns `accumulator`.
-       */
-      function baseAggregator(collection, setter, iteratee, accumulator) {
-        baseEach(collection, function(value, key, collection) {
-          setter(accumulator, value, iteratee(value), collection);
-        });
-        return accumulator;
-      }
-  
-      /**
-       * The base implementation of `_.assign` without support for multiple sources
-       * or `customizer` functions.
-       *
-       * @private
-       * @param {Object} object The destination object.
-       * @param {Object} source The source object.
-       * @returns {Object} Returns `object`.
-       */
-      function baseAssign(object, source) {
-        return object && copyObject(source, keys(source), object);
-      }
-  
-      /**
-       * The base implementation of `_.assignIn` without support for multiple sources
-       * or `customizer` functions.
-       *
-       * @private
-       * @param {Object} object The destination object.
-       * @param {Object} source The source object.
-       * @returns {Object} Returns `object`.
-       */
-      function baseAssignIn(object, source) {
-        return object && copyObject(source, keysIn(source), object);
-      }
-  
-      /**
-       * The base implementation of `assignValue` and `assignMergeValue` without
-       * value checks.
-       *
-       * @private
-       * @param {Object} object The object to modify.
-       * @param {string} key The key of the property to assign.
-       * @param {*} value The value to assign.
-       */
-      function baseAssignValue(object, key, value) {
-        if (key == '__proto__' && defineProperty) {
-          defineProperty(object, key, {
-            'configurable': true,
-            'enumerable': true,
-            'value': value,
-            'writable': true
-          });
-        } else {
-          object[key] = value;
-        }
-      }
-  
-      /**
-       * The base implementation of `_.at` without support for individual paths.
-       *
-       * @private
-       * @param {Object} object The object to iterate over.
-       * @param {string[]} paths The property paths to pick.
-       * @returns {Array} Returns the picked elements.
-       */
-      function baseAt(object, paths) {
-        var index = -1,
-            length = paths.length,
-            result = Array(length),
-            skip = object == null;
-  
-        while (++index < length) {
-          result[index] = skip ? undefined : get(object, paths[index]);
-        }
-        return result;
-      }
-  
-      /**
-       * The base implementation of `_.clamp` which doesn't coerce arguments.
-       *
-       * @private
-       * @param {number} number The number to clamp.
-       * @param {number} [lower] The lower bound.
-       * @param {number} upper The upper bound.
-       * @returns {number} Returns the clamped number.
-       */
-      function baseClamp(number, lower, upper) {
-        if (number === number) {
-          if (upper !== undefined) {
-            number = number <= upper ? number : upper;
-          }
-          if (lower !== undefined) {
-            number = number >= lower ? number : lower;
-          }
-        }
-        return number;
-      }
-  
-      /**
-       * The base implementation of `_.clone` and `_.cloneDeep` which tracks
-       * traversed objects.
-       *
-       * @private
-       * @param {*} value The value to clone.
-       * @param {boolean} bitmask The bitmask flags.
-       *  1 - Deep clone
-       *  2 - Flatten inherited properties
-       *  4 - Clone symbols
-       * @param {Function} [customizer] The function to customize cloning.
-       * @param {string} [key] The key of `value`.
-       * @param {Object} [object] The parent object of `value`.
-       * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
-       * @returns {*} Returns the cloned value.
-       */
-      function baseClone(value, bitmask, customizer, key, object, stack) {
-        var result,
-            isDeep = bitmask & CLONE_DEEP_FLAG,
-            isFlat = bitmask & CLONE_FLAT_FLAG,
-            isFull = bitmask & CLONE_SYMBOLS_FLAG;
-  
-        if (customizer) {
-          result = object ? customizer(value, key, object, stack) : customizer(value);
-        }
-        if (result !== undefined) {
-          return result;
-        }
-        if (!isObject(value)) {
-          return value;
-        }
-        var isArr = isArray(value);
-        if (isArr) {
-          result = initCloneArray(value);
-          if (!isDeep) {
-            return copyArray(value, result);
-          }
-        } else {
-          var tag = getTag(value),
-              isFunc = tag == funcTag || tag == genTag;
-  
-          if (isBuffer(value)) {
-            return cloneBuffer(value, isDeep);
-          }
-          if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
-            result = (isFlat || isFunc) ? {} : initCloneObject(value);
-            if (!isDeep) {
-              return isFlat
-                ? copySymbolsIn(value, baseAssignIn(result, value))
-                : copySymbols(value, baseAssign(result, value));
-            }
-          } else {
-            if (!cloneableTags[tag]) {
-              return object ? value : {};
-            }
-            result = initCloneByTag(value, tag, isDeep);
-          }
-        }
-        // Check for circular references and return its corresponding clone.
-        stack || (stack = new Stack);
-        var stacked = stack.get(value);
-        if (stacked) {
-          return stacked;
-        }
-        stack.set(value, result);
-  
-        if (isSet(value)) {
-          value.forEach(function(subValue) {
-            result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
-          });
-        } else if (isMap(value)) {
-          value.forEach(function(subValue, key) {
-            result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
-          });
-        }
-  
-        var keysFunc = isFull
-          ? (isFlat ? getAllKeysIn : getAllKeys)
-          : (isFlat ? keysIn : keys);
-  
-        var props = isArr ? undefined : keysFunc(value);
-        arrayEach(props || value, function(subValue, key) {
-          if (props) {
-            key = subValue;
-            subValue = value[key];
-          }
-          // Recursively populate clone (susceptible to call stack limits).
-          assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));
-        });
-        return result;
-      }
-  
-      /**
-       * The base implementation of `_.conforms` which doesn't clone `source`.
-       *
-       * @private
-       * @param {Object} source The object of property predicates to conform to.
-       * @returns {Function} Returns the new spec function.
-       */
-      function baseConforms(source) {
-        var props = keys(source);
-        return function(object) {
-          return baseConformsTo(object, source, props);
-        };
-      }
-  
-      /**
-       * The base implementation of `_.conformsTo` which accepts `props` to check.
-       *
-       * @private
-       * @param {Object} object The object to inspect.
-       * @param {Object} source The object of property predicates to conform to.
-       * @returns {boolean} Returns `true` if `object` conforms, else `false`.
-       */
-      function baseConformsTo(object, source, props) {
-        var length = props.length;
-        if (object == null) {
-          return !length;
-        }
-        object = Object(object);
-        while (length--) {
-          var key = props[length],
-              predicate = source[key],
-              value = object[key];
-  
-          if ((value === undefined && !(key in object)) || !predicate(value)) {
-            return false;
-          }
-        }
-        return true;
-      }
-  
-      /**
-       * The base implementation of `_.delay` and `_.defer` which accepts `args`
-       * to provide to `func`.
-       *
-       * @private
-       * @param {Function} func The function to delay.
-       * @param {number} wait The number of milliseconds to delay invocation.
-       * @param {Array} args The arguments to provide to `func`.
-       * @returns {number|Object} Returns the timer id or timeout object.
-       */
-      function baseDelay(func, wait, args) {
-        if (typeof func != 'function') {
-          throw new TypeError(FUNC_ERROR_TEXT);
-        }
-        return setTimeout(function() { func.apply(undefined, args); }, wait);
-      }
-  
-      /**
-       * The base implementation of methods like `_.difference` without support
-       * for excluding multiple arrays or iteratee shorthands.
-       *
-       * @private
-       * @param {Array} array The array to inspect.
-       * @param {Array} values The values to exclude.
-       * @param {Function} [iteratee] The iteratee invoked per element.
-       * @param {Function} [comparator] The comparator invoked per element.
-       * @returns {Array} Returns the new array of filtered values.
-       */
-      function baseDifference(array, values, iteratee, comparator) {
-        var index = -1,
-            includes = arrayIncludes,
-            isCommon = true,
-            length = array.length,
-            result = [],
-            valuesLength = values.length;
-  
-        if (!length) {
-          return result;
-        }
-        if (iteratee) {
-          values = arrayMap(values, baseUnary(iteratee));
-        }
-        if (comparator) {
-          includes = arrayIncludesWith;
-          isCommon = false;
-        }
-        else if (values.length >= LARGE_ARRAY_SIZE) {
-          includes = cacheHas;
-          isCommon = false;
-          values = new SetCache(values);
-        }
-        outer:
-        while (++index < length) {
-          var value = array[index],
-              computed = iteratee == null ? value : iteratee(value);
-  
-          value = (comparator || value !== 0) ? value : 0;
-          if (isCommon && computed === computed) {
-            var valuesIndex = valuesLength;
-            while (valuesIndex--) {
-              if (values[valuesIndex] === computed) {
-                continue outer;
-              }
-            }
-            result.push(value);
-          }
-          else if (!includes(values, computed, comparator)) {
-            result.push(value);
-          }
-        }
-        return result;
-      }
-  
-      /**
-       * The base implementation of `_.forEach` without support for iteratee shorthands.
-       *
-       * @private
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function} iteratee The function invoked per iteration.
-       * @returns {Array|Object} Returns `collection`.
-       */
-      var baseEach = createBaseEach(baseForOwn);
-  
-      /**
-       * The base implementation of `_.forEachRight` without support for iteratee shorthands.
-       *
-       * @private
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function} iteratee The function invoked per iteration.
-       * @returns {Array|Object} Returns `collection`.
-       */
-      var baseEachRight = createBaseEach(baseForOwnRight, true);
-  
-      /**
-       * The base implementation of `_.every` without support for iteratee shorthands.
-       *
-       * @private
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function} predicate The function invoked per iteration.
-       * @returns {boolean} Returns `true` if all elements pass the predicate check,
-       *  else `false`
-       */
-      function baseEvery(collection, predicate) {
-        var result = true;
-        baseEach(collection, function(value, index, collection) {
-          result = !!predicate(value, index, collection);
-          return result;
-        });
-        return result;
-      }
-  
-      /**
-       * The base implementation of methods like `_.max` and `_.min` which accepts a
-       * `comparator` to determine the extremum value.
-       *
-       * @private
-       * @param {Array} array The array to iterate over.
-       * @param {Function} iteratee The iteratee invoked per iteration.
-       * @param {Function} comparator The comparator used to compare values.
-       * @returns {*} Returns the extremum value.
-       */
-      function baseExtremum(array, iteratee, comparator) {
-        var index = -1,
-            length = array.length;
-  
-        while (++index < length) {
-          var value = array[index],
-              current = iteratee(value);
-  
-          if (current != null && (computed === undefined
-                ? (current === current && !isSymbol(current))
-                : comparator(current, computed)
-              )) {
-            var computed = current,
-                result = value;
-          }
-        }
-        return result;
-      }
-  
-      /**
-       * The base implementation of `_.fill` without an iteratee call guard.
-       *
-       * @private
-       * @param {Array} array The array to fill.
-       * @param {*} value The value to fill `array` with.
-       * @param {number} [start=0] The start position.
-       * @param {number} [end=array.length] The end position.
-       * @returns {Array} Returns `array`.
-       */
-      function baseFill(array, value, start, end) {
-        var length = array.length;
-  
-        start = toInteger(start);
-        if (start < 0) {
-          start = -start > length ? 0 : (length + start);
-        }
-        end = (end === undefined || end > length) ? length : toInteger(end);
-        if (end < 0) {
-          end += length;
-        }
-        end = start > end ? 0 : toLength(end);
-        while (start < end) {
-          array[start++] = value;
-        }
-        return array;
-      }
-  
-      /**
-       * The base implementation of `_.filter` without support for iteratee shorthands.
-       *
-       * @private
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function} predicate The function invoked per iteration.
-       * @returns {Array} Returns the new filtered array.
-       */
-      function baseFilter(collection, predicate) {
-        var result = [];
-        baseEach(collection, function(value, index, collection) {
-          if (predicate(value, index, collection)) {
-            result.push(value);
-          }
-        });
-        return result;
-      }
-  
-      /**
-       * The base implementation of `_.flatten` with support for restricting flattening.
-       *
-       * @private
-       * @param {Array} array The array to flatten.
-       * @param {number} depth The maximum recursion depth.
-       * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
-       * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
-       * @param {Array} [result=[]] The initial result value.
-       * @returns {Array} Returns the new flattened array.
-       */
-      function baseFlatten(array, depth, predicate, isStrict, result) {
-        var index = -1,
-            length = array.length;
-  
-        predicate || (predicate = isFlattenable);
-        result || (result = []);
-  
-        while (++index < length) {
-          var value = array[index];
-          if (depth > 0 && predicate(value)) {
-            if (depth > 1) {
-              // Recursively flatten arrays (susceptible to call stack limits).
-              baseFlatten(value, depth - 1, predicate, isStrict, result);
-            } else {
-              arrayPush(result, value);
-            }
-          } else if (!isStrict) {
-            result[result.length] = value;
-          }
-        }
-        return result;
-      }
-  
-      /**
-       * The base implementation of `baseForOwn` which iterates over `object`
-       * properties returned by `keysFunc` and invokes `iteratee` for each property.
-       * Iteratee functions may exit iteration early by explicitly returning `false`.
-       *
-       * @private
-       * @param {Object} object The object to iterate over.
-       * @param {Function} iteratee The function invoked per iteration.
-       * @param {Function} keysFunc The function to get the keys of `object`.
-       * @returns {Object} Returns `object`.
-       */
-      var baseFor = createBaseFor();
-  
-      /**
-       * This function is like `baseFor` except that it iterates over properties
-       * in the opposite order.
-       *
-       * @private
-       * @param {Object} object The object to iterate over.
-       * @param {Function} iteratee The function invoked per iteration.
-       * @param {Function} keysFunc The function to get the keys of `object`.
-       * @returns {Object} Returns `object`.
-       */
-      var baseForRight = createBaseFor(true);
-  
-      /**
-       * The base implementation of `_.forOwn` without support for iteratee shorthands.
-       *
-       * @private
-       * @param {Object} object The object to iterate over.
-       * @param {Function} iteratee The function invoked per iteration.
-       * @returns {Object} Returns `object`.
-       */
-      function baseForOwn(object, iteratee) {
-        return object && baseFor(object, iteratee, keys);
-      }
-  
-      /**
-       * The base implementation of `_.forOwnRight` without support for iteratee shorthands.
-       *
-       * @private
-       * @param {Object} object The object to iterate over.
-       * @param {Function} iteratee The function invoked per iteration.
-       * @returns {Object} Returns `object`.
-       */
-      function baseForOwnRight(object, iteratee) {
-        return object && baseForRight(object, iteratee, keys);
-      }
-  
-      /**
-       * The base implementation of `_.functions` which creates an array of
-       * `object` function property names filtered from `props`.
-       *
-       * @private
-       * @param {Object} object The object to inspect.
-       * @param {Array} props The property names to filter.
-       * @returns {Array} Returns the function names.
-       */
-      function baseFunctions(object, props) {
-        return arrayFilter(props, function(key) {
-          return isFunction(object[key]);
-        });
-      }
-  
-      /**
-       * The base implementation of `_.get` without support for default values.
-       *
-       * @private
-       * @param {Object} object The object to query.
-       * @param {Array|string} path The path of the property to get.
-       * @returns {*} Returns the resolved value.
-       */
-      function baseGet(object, path) {
-        path = castPath(path, object);
-  
-        var index = 0,
-            length = path.length;
-  
-        while (object != null && index < length) {
-          object = object[toKey(path[index++])];
-        }
-        return (index && index == length) ? object : undefined;
-      }
-  
-      /**
-       * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
-       * `keysFunc` and `symbolsFunc` to get the enumerable property names and
-       * symbols of `object`.
-       *
-       * @private
-       * @param {Object} object The object to query.
-       * @param {Function} keysFunc The function to get the keys of `object`.
-       * @param {Function} symbolsFunc The function to get the symbols of `object`.
-       * @returns {Array} Returns the array of property names and symbols.
-       */
-      function baseGetAllKeys(object, keysFunc, symbolsFunc) {
-        var result = keysFunc(object);
-        return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
-      }
-  
-      /**
-       * The base implementation of `getTag` without fallbacks for buggy environments.
-       *
-       * @private
-       * @param {*} value The value to query.
-       * @returns {string} Returns the `toStringTag`.
-       */
-      function baseGetTag(value) {
-        if (value == null) {
-          return value === undefined ? undefinedTag : nullTag;
-        }
-        return (symToStringTag && symToStringTag in Object(value))
-          ? getRawTag(value)
-          : objectToString(value);
-      }
-  
-      /**
-       * The base implementation of `_.gt` which doesn't coerce arguments.
-       *
-       * @private
-       * @param {*} value The value to compare.
-       * @param {*} other The other value to compare.
-       * @returns {boolean} Returns `true` if `value` is greater than `other`,
-       *  else `false`.
-       */
-      function baseGt(value, other) {
-        return value > other;
-      }
-  
-      /**
-       * The base implementation of `_.has` without support for deep paths.
-       *
-       * @private
-       * @param {Object} [object] The object to query.
-       * @param {Array|string} key The key to check.
-       * @returns {boolean} Returns `true` if `key` exists, else `false`.
-       */
-      function baseHas(object, key) {
-        return object != null && hasOwnProperty.call(object, key);
-      }
-  
-      /**
-       * The base implementation of `_.hasIn` without support for deep paths.
-       *
-       * @private
-       * @param {Object} [object] The object to query.
-       * @param {Array|string} key The key to check.
-       * @returns {boolean} Returns `true` if `key` exists, else `false`.
-       */
-      function baseHasIn(object, key) {
-        return object != null && key in Object(object);
-      }
-  
-      /**
-       * The base implementation of `_.inRange` which doesn't coerce arguments.
-       *
-       * @private
-       * @param {number} number The number to check.
-       * @param {number} start The start of the range.
-       * @param {number} end The end of the range.
-       * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
-       */
-      function baseInRange(number, start, end) {
-        return number >= nativeMin(start, end) && number < nativeMax(start, end);
-      }
-  
-      /**
-       * The base implementation of methods like `_.intersection`, without support
-       * for iteratee shorthands, that accepts an array of arrays to inspect.
-       *
-       * @private
-       * @param {Array} arrays The arrays to inspect.
-       * @param {Function} [iteratee] The iteratee invoked per element.
-       * @param {Function} [comparator] The comparator invoked per element.
-       * @returns {Array} Returns the new array of shared values.
-       */
-      function baseIntersection(arrays, iteratee, comparator) {
-        var includes = comparator ? arrayIncludesWith : arrayIncludes,
-            length = arrays[0].length,
-            othLength = arrays.length,
-            othIndex = othLength,
-            caches = Array(othLength),
-            maxLength = Infinity,
-            result = [];
-  
-        while (othIndex--) {
-          var array = arrays[othIndex];
-          if (othIndex && iteratee) {
-            array = arrayMap(array, baseUnary(iteratee));
-          }
-          maxLength = nativeMin(array.length, maxLength);
-          caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))
-            ? new SetCache(othIndex && array)
-            : undefined;
-        }
-        array = arrays[0];
-  
-        var index = -1,
-            seen = caches[0];
-  
-        outer:
-        while (++index < length && result.length < maxLength) {
-          var value = array[index],
-              computed = iteratee ? iteratee(value) : value;
-  
-          value = (comparator || value !== 0) ? value : 0;
-          if (!(seen
-                ? cacheHas(seen, computed)
-                : includes(result, computed, comparator)
-              )) {
-            othIndex = othLength;
-            while (--othIndex) {
-              var cache = caches[othIndex];
-              if (!(cache
-                    ? cacheHas(cache, computed)
-                    : includes(arrays[othIndex], computed, comparator))
-                  ) {
-                continue outer;
-              }
-            }
-            if (seen) {
-              seen.push(computed);
-            }
-            result.push(value);
-          }
-        }
-        return result;
-      }
-  
-      /**
-       * The base implementation of `_.invert` and `_.invertBy` which inverts
-       * `object` with values transformed by `iteratee` and set by `setter`.
-       *
-       * @private
-       * @param {Object} object The object to iterate over.
-       * @param {Function} setter The function to set `accumulator` values.
-       * @param {Function} iteratee The iteratee to transform values.
-       * @param {Object} accumulator The initial inverted object.
-       * @returns {Function} Returns `accumulator`.
-       */
-      function baseInverter(object, setter, iteratee, accumulator) {
-        baseForOwn(object, function(value, key, object) {
-          setter(accumulator, iteratee(value), key, object);
-        });
-        return accumulator;
-      }
-  
-      /**
-       * The base implementation of `_.invoke` without support for individual
-       * method arguments.
-       *
-       * @private
-       * @param {Object} object The object to query.
-       * @param {Array|string} path The path of the method to invoke.
-       * @param {Array} args The arguments to invoke the method with.
-       * @returns {*} Returns the result of the invoked method.
-       */
-      function baseInvoke(object, path, args) {
-        path = castPath(path, object);
-        object = parent(object, path);
-        var func = object == null ? object : object[toKey(last(path))];
-        return func == null ? undefined : apply(func, object, args);
-      }
-  
-      /**
-       * The base implementation of `_.isArguments`.
-       *
-       * @private
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is an `arguments` object,
-       */
-      function baseIsArguments(value) {
-        return isObjectLike(value) && baseGetTag(value) == argsTag;
-      }
-  
-      /**
-       * The base implementation of `_.isArrayBuffer` without Node.js optimizations.
-       *
-       * @private
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
-       */
-      function baseIsArrayBuffer(value) {
-        return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;
-      }
-  
-      /**
-       * The base implementation of `_.isDate` without Node.js optimizations.
-       *
-       * @private
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
-       */
-      function baseIsDate(value) {
-        return isObjectLike(value) && baseGetTag(value) == dateTag;
-      }
-  
-      /**
-       * The base implementation of `_.isEqual` which supports partial comparisons
-       * and tracks traversed objects.
-       *
-       * @private
-       * @param {*} value The value to compare.
-       * @param {*} other The other value to compare.
-       * @param {boolean} bitmask The bitmask flags.
-       *  1 - Unordered comparison
-       *  2 - Partial comparison
-       * @param {Function} [customizer] The function to customize comparisons.
-       * @param {Object} [stack] Tracks traversed `value` and `other` objects.
-       * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
-       */
-      function baseIsEqual(value, other, bitmask, customizer, stack) {
-        if (value === other) {
-          return true;
-        }
-        if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
-          return value !== value && other !== other;
-        }
-        return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
-      }
-  
-      /**
-       * A specialized version of `baseIsEqual` for arrays and objects which performs
-       * deep comparisons and tracks traversed objects enabling objects with circular
-       * references to be compared.
-       *
-       * @private
-       * @param {Object} object The object to compare.
-       * @param {Object} other The other object to compare.
-       * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
-       * @param {Function} customizer The function to customize comparisons.
-       * @param {Function} equalFunc The function to determine equivalents of values.
-       * @param {Object} [stack] Tracks traversed `object` and `other` objects.
-       * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
-       */
-      function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
-        var objIsArr = isArray(object),
-            othIsArr = isArray(other),
-            objTag = objIsArr ? arrayTag : getTag(object),
-            othTag = othIsArr ? arrayTag : getTag(other);
-  
-        objTag = objTag == argsTag ? objectTag : objTag;
-        othTag = othTag == argsTag ? objectTag : othTag;
-  
-        var objIsObj = objTag == objectTag,
-            othIsObj = othTag == objectTag,
-            isSameTag = objTag == othTag;
-  
-        if (isSameTag && isBuffer(object)) {
-          if (!isBuffer(other)) {
-            return false;
-          }
-          objIsArr = true;
-          objIsObj = false;
-        }
-        if (isSameTag && !objIsObj) {
-          stack || (stack = new Stack);
-          return (objIsArr || isTypedArray(object))
-            ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
-            : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
-        }
-        if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
-          var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
-              othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
-  
-          if (objIsWrapped || othIsWrapped) {
-            var objUnwrapped = objIsWrapped ? object.value() : object,
-                othUnwrapped = othIsWrapped ? other.value() : other;
-  
-            stack || (stack = new Stack);
-            return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
-          }
-        }
-        if (!isSameTag) {
-          return false;
-        }
-        stack || (stack = new Stack);
-        return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
-      }
-  
-      /**
-       * The base implementation of `_.isMap` without Node.js optimizations.
-       *
-       * @private
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a map, else `false`.
-       */
-      function baseIsMap(value) {
-        return isObjectLike(value) && getTag(value) == mapTag;
-      }
-  
-      /**
-       * The base implementation of `_.isMatch` without support for iteratee shorthands.
-       *
-       * @private
-       * @param {Object} object The object to inspect.
-       * @param {Object} source The object of property values to match.
-       * @param {Array} matchData The property names, values, and compare flags to match.
-       * @param {Function} [customizer] The function to customize comparisons.
-       * @returns {boolean} Returns `true` if `object` is a match, else `false`.
-       */
-      function baseIsMatch(object, source, matchData, customizer) {
-        var index = matchData.length,
-            length = index,
-            noCustomizer = !customizer;
-  
-        if (object == null) {
-          return !length;
-        }
-        object = Object(object);
-        while (index--) {
-          var data = matchData[index];
-          if ((noCustomizer && data[2])
-                ? data[1] !== object[data[0]]
-                : !(data[0] in object)
-              ) {
-            return false;
-          }
-        }
-        while (++index < length) {
-          data = matchData[index];
-          var key = data[0],
-              objValue = object[key],
-              srcValue = data[1];
-  
-          if (noCustomizer && data[2]) {
-            if (objValue === undefined && !(key in object)) {
-              return false;
-            }
-          } else {
-            var stack = new Stack;
-            if (customizer) {
-              var result = customizer(objValue, srcValue, key, object, source, stack);
-            }
-            if (!(result === undefined
-                  ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
-                  : result
-                )) {
-              return false;
-            }
-          }
-        }
-        return true;
-      }
-  
-      /**
-       * The base implementation of `_.isNative` without bad shim checks.
-       *
-       * @private
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a native function,
-       *  else `false`.
-       */
-      function baseIsNative(value) {
-        if (!isObject(value) || isMasked(value)) {
-          return false;
-        }
-        var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
-        return pattern.test(toSource(value));
-      }
-  
-      /**
-       * The base implementation of `_.isRegExp` without Node.js optimizations.
-       *
-       * @private
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
-       */
-      function baseIsRegExp(value) {
-        return isObjectLike(value) && baseGetTag(value) == regexpTag;
-      }
-  
-      /**
-       * The base implementation of `_.isSet` without Node.js optimizations.
-       *
-       * @private
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a set, else `false`.
-       */
-      function baseIsSet(value) {
-        return isObjectLike(value) && getTag(value) == setTag;
-      }
-  
-      /**
-       * The base implementation of `_.isTypedArray` without Node.js optimizations.
-       *
-       * @private
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
-       */
-      function baseIsTypedArray(value) {
-        return isObjectLike(value) &&
-          isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
-      }
-  
-      /**
-       * The base implementation of `_.iteratee`.
-       *
-       * @private
-       * @param {*} [value=_.identity] The value to convert to an iteratee.
-       * @returns {Function} Returns the iteratee.
-       */
-      function baseIteratee(value) {
-        // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
-        // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
-        if (typeof value == 'function') {
-          return value;
-        }
-        if (value == null) {
-          return identity;
-        }
-        if (typeof value == 'object') {
-          return isArray(value)
-            ? baseMatchesProperty(value[0], value[1])
-            : baseMatches(value);
-        }
-        return property(value);
-      }
-  
-      /**
-       * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
-       *
-       * @private
-       * @param {Object} object The object to query.
-       * @returns {Array} Returns the array of property names.
-       */
-      function baseKeys(object) {
-        if (!isPrototype(object)) {
-          return nativeKeys(object);
-        }
-        var result = [];
-        for (var key in Object(object)) {
-          if (hasOwnProperty.call(object, key) && key != 'constructor') {
-            result.push(key);
-          }
-        }
-        return result;
-      }
-  
-      /**
-       * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
-       *
-       * @private
-       * @param {Object} object The object to query.
-       * @returns {Array} Returns the array of property names.
-       */
-      function baseKeysIn(object) {
-        if (!isObject(object)) {
-          return nativeKeysIn(object);
-        }
-        var isProto = isPrototype(object),
-            result = [];
-  
-        for (var key in object) {
-          if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
-            result.push(key);
-          }
-        }
-        return result;
-      }
-  
-      /**
-       * The base implementation of `_.lt` which doesn't coerce arguments.
-       *
-       * @private
-       * @param {*} value The value to compare.
-       * @param {*} other The other value to compare.
-       * @returns {boolean} Returns `true` if `value` is less than `other`,
-       *  else `false`.
-       */
-      function baseLt(value, other) {
-        return value < other;
-      }
-  
-      /**
-       * The base implementation of `_.map` without support for iteratee shorthands.
-       *
-       * @private
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function} iteratee The function invoked per iteration.
-       * @returns {Array} Returns the new mapped array.
-       */
-      function baseMap(collection, iteratee) {
-        var index = -1,
-            result = isArrayLike(collection) ? Array(collection.length) : [];
-  
-        baseEach(collection, function(value, key, collection) {
-          result[++index] = iteratee(value, key, collection);
-        });
-        return result;
-      }
-  
-      /**
-       * The base implementation of `_.matches` which doesn't clone `source`.
-       *
-       * @private
-       * @param {Object} source The object of property values to match.
-       * @returns {Function} Returns the new spec function.
-       */
-      function baseMatches(source) {
-        var matchData = getMatchData(source);
-        if (matchData.length == 1 && matchData[0][2]) {
-          return matchesStrictComparable(matchData[0][0], matchData[0][1]);
-        }
-        return function(object) {
-          return object === source || baseIsMatch(object, source, matchData);
-        };
-      }
-  
-      /**
-       * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
-       *
-       * @private
-       * @param {string} path The path of the property to get.
-       * @param {*} srcValue The value to match.
-       * @returns {Function} Returns the new spec function.
-       */
-      function baseMatchesProperty(path, srcValue) {
-        if (isKey(path) && isStrictComparable(srcValue)) {
-          return matchesStrictComparable(toKey(path), srcValue);
-        }
-        return function(object) {
-          var objValue = get(object, path);
-          return (objValue === undefined && objValue === srcValue)
-            ? hasIn(object, path)
-            : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
-        };
-      }
-  
-      /**
-       * The base implementation of `_.merge` without support for multiple sources.
-       *
-       * @private
-       * @param {Object} object The destination object.
-       * @param {Object} source The source object.
-       * @param {number} srcIndex The index of `source`.
-       * @param {Function} [customizer] The function to customize merged values.
-       * @param {Object} [stack] Tracks traversed source values and their merged
-       *  counterparts.
-       */
-      function baseMerge(object, source, srcIndex, customizer, stack) {
-        if (object === source) {
-          return;
-        }
-        baseFor(source, function(srcValue, key) {
-          stack || (stack = new Stack);
-          if (isObject(srcValue)) {
-            baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
-          }
-          else {
-            var newValue = customizer
-              ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)
-              : undefined;
-  
-            if (newValue === undefined) {
-              newValue = srcValue;
-            }
-            assignMergeValue(object, key, newValue);
-          }
-        }, keysIn);
-      }
-  
-      /**
-       * A specialized version of `baseMerge` for arrays and objects which performs
-       * deep merges and tracks traversed objects enabling objects with circular
-       * references to be merged.
-       *
-       * @private
-       * @param {Object} object The destination object.
-       * @param {Object} source The source object.
-       * @param {string} key The key of the value to merge.
-       * @param {number} srcIndex The index of `source`.
-       * @param {Function} mergeFunc The function to merge values.
-       * @param {Function} [customizer] The function to customize assigned values.
-       * @param {Object} [stack] Tracks traversed source values and their merged
-       *  counterparts.
-       */
-      function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
-        var objValue = safeGet(object, key),
-            srcValue = safeGet(source, key),
-            stacked = stack.get(srcValue);
-  
-        if (stacked) {
-          assignMergeValue(object, key, stacked);
-          return;
-        }
-        var newValue = customizer
-          ? customizer(objValue, srcValue, (key + ''), object, source, stack)
-          : undefined;
-  
-        var isCommon = newValue === undefined;
-  
-        if (isCommon) {
-          var isArr = isArray(srcValue),
-              isBuff = !isArr && isBuffer(srcValue),
-              isTyped = !isArr && !isBuff && isTypedArray(srcValue);
-  
-          newValue = srcValue;
-          if (isArr || isBuff || isTyped) {
-            if (isArray(objValue)) {
-              newValue = objValue;
-            }
-            else if (isArrayLikeObject(objValue)) {
-              newValue = copyArray(objValue);
-            }
-            else if (isBuff) {
-              isCommon = false;
-              newValue = cloneBuffer(srcValue, true);
-            }
-            else if (isTyped) {
-              isCommon = false;
-              newValue = cloneTypedArray(srcValue, true);
-            }
-            else {
-              newValue = [];
-            }
-          }
-          else if (isPlainObject(srcValue) || isArguments(srcValue)) {
-            newValue = objValue;
-            if (isArguments(objValue)) {
-              newValue = toPlainObject(objValue);
-            }
-            else if (!isObject(objValue) || isFunction(objValue)) {
-              newValue = initCloneObject(srcValue);
-            }
-          }
-          else {
-            isCommon = false;
-          }
-        }
-        if (isCommon) {
-          // Recursively merge objects and arrays (susceptible to call stack limits).
-          stack.set(srcValue, newValue);
-          mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
-          stack['delete'](srcValue);
-        }
-        assignMergeValue(object, key, newValue);
-      }
-  
-      /**
-       * The base implementation of `_.nth` which doesn't coerce arguments.
-       *
-       * @private
-       * @param {Array} array The array to query.
-       * @param {number} n The index of the element to return.
-       * @returns {*} Returns the nth element of `array`.
-       */
-      function baseNth(array, n) {
-        var length = array.length;
-        if (!length) {
-          return;
-        }
-        n += n < 0 ? length : 0;
-        return isIndex(n, length) ? array[n] : undefined;
-      }
-  
-      /**
-       * The base implementation of `_.orderBy` without param guards.
-       *
-       * @private
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
-       * @param {string[]} orders The sort orders of `iteratees`.
-       * @returns {Array} Returns the new sorted array.
-       */
-      function baseOrderBy(collection, iteratees, orders) {
-        if (iteratees.length) {
-          iteratees = arrayMap(iteratees, function(iteratee) {
-            if (isArray(iteratee)) {
-              return function(value) {
-                return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);
-              }
-            }
-            return iteratee;
-          });
-        } else {
-          iteratees = [identity];
-        }
-  
-        var index = -1;
-        iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
-  
-        var result = baseMap(collection, function(value, key, collection) {
-          var criteria = arrayMap(iteratees, function(iteratee) {
-            return iteratee(value);
-          });
-          return { 'criteria': criteria, 'index': ++index, 'value': value };
-        });
-  
-        return baseSortBy(result, function(object, other) {
-          return compareMultiple(object, other, orders);
-        });
-      }
-  
-      /**
-       * The base implementation of `_.pick` without support for individual
-       * property identifiers.
-       *
-       * @private
-       * @param {Object} object The source object.
-       * @param {string[]} paths The property paths to pick.
-       * @returns {Object} Returns the new object.
-       */
-      function basePick(object, paths) {
-        return basePickBy(object, paths, function(value, path) {
-          return hasIn(object, path);
-        });
-      }
-  
-      /**
-       * The base implementation of  `_.pickBy` without support for iteratee shorthands.
-       *
-       * @private
-       * @param {Object} object The source object.
-       * @param {string[]} paths The property paths to pick.
-       * @param {Function} predicate The function invoked per property.
-       * @returns {Object} Returns the new object.
-       */
-      function basePickBy(object, paths, predicate) {
-        var index = -1,
-            length = paths.length,
-            result = {};
-  
-        while (++index < length) {
-          var path = paths[index],
-              value = baseGet(object, path);
-  
-          if (predicate(value, path)) {
-            baseSet(result, castPath(path, object), value);
-          }
-        }
-        return result;
-      }
-  
-      /**
-       * A specialized version of `baseProperty` which supports deep paths.
-       *
-       * @private
-       * @param {Array|string} path The path of the property to get.
-       * @returns {Function} Returns the new accessor function.
-       */
-      function basePropertyDeep(path) {
-        return function(object) {
-          return baseGet(object, path);
-        };
-      }
-  
-      /**
-       * The base implementation of `_.pullAllBy` without support for iteratee
-       * shorthands.
-       *
-       * @private
-       * @param {Array} array The array to modify.
-       * @param {Array} values The values to remove.
-       * @param {Function} [iteratee] The iteratee invoked per element.
-       * @param {Function} [comparator] The comparator invoked per element.
-       * @returns {Array} Returns `array`.
-       */
-      function basePullAll(array, values, iteratee, comparator) {
-        var indexOf = comparator ? baseIndexOfWith : baseIndexOf,
-            index = -1,
-            length = values.length,
-            seen = array;
-  
-        if (array === values) {
-          values = copyArray(values);
-        }
-        if (iteratee) {
-          seen = arrayMap(array, baseUnary(iteratee));
-        }
-        while (++index < length) {
-          var fromIndex = 0,
-              value = values[index],
-              computed = iteratee ? iteratee(value) : value;
-  
-          while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {
-            if (seen !== array) {
-              splice.call(seen, fromIndex, 1);
-            }
-            splice.call(array, fromIndex, 1);
-          }
-        }
-        return array;
-      }
-  
-      /**
-       * The base implementation of `_.pullAt` without support for individual
-       * indexes or capturing the removed elements.
-       *
-       * @private
-       * @param {Array} array The array to modify.
-       * @param {number[]} indexes The indexes of elements to remove.
-       * @returns {Array} Returns `array`.
-       */
-      function basePullAt(array, indexes) {
-        var length = array ? indexes.length : 0,
-            lastIndex = length - 1;
-  
-        while (length--) {
-          var index = indexes[length];
-          if (length == lastIndex || index !== previous) {
-            var previous = index;
-            if (isIndex(index)) {
-              splice.call(array, index, 1);
-            } else {
-              baseUnset(array, index);
-            }
-          }
-        }
-        return array;
-      }
-  
-      /**
-       * The base implementation of `_.random` without support for returning
-       * floating-point numbers.
-       *
-       * @private
-       * @param {number} lower The lower bound.
-       * @param {number} upper The upper bound.
-       * @returns {number} Returns the random number.
-       */
-      function baseRandom(lower, upper) {
-        return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
-      }
-  
-      /**
-       * The base implementation of `_.range` and `_.rangeRight` which doesn't
-       * coerce arguments.
-       *
-       * @private
-       * @param {number} start The start of the range.
-       * @param {number} end The end of the range.
-       * @param {number} step The value to increment or decrement by.
-       * @param {boolean} [fromRight] Specify iterating from right to left.
-       * @returns {Array} Returns the range of numbers.
-       */
-      function baseRange(start, end, step, fromRight) {
-        var index = -1,
-            length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),
-            result = Array(length);
-  
-        while (length--) {
-          result[fromRight ? length : ++index] = start;
-          start += step;
-        }
-        return result;
-      }
-  
-      /**
-       * The base implementation of `_.repeat` which doesn't coerce arguments.
-       *
-       * @private
-       * @param {string} string The string to repeat.
-       * @param {number} n The number of times to repeat the string.
-       * @returns {string} Returns the repeated string.
-       */
-      function baseRepeat(string, n) {
-        var result = '';
-        if (!string || n < 1 || n > MAX_SAFE_INTEGER) {
-          return result;
-        }
-        // Leverage the exponentiation by squaring algorithm for a faster repeat.
-        // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.
-        do {
-          if (n % 2) {
-            result += string;
-          }
-          n = nativeFloor(n / 2);
-          if (n) {
-            string += string;
-          }
-        } while (n);
-  
-        return result;
-      }
-  
-      /**
-       * The base implementation of `_.rest` which doesn't validate or coerce arguments.
-       *
-       * @private
-       * @param {Function} func The function to apply a rest parameter to.
-       * @param {number} [start=func.length-1] The start position of the rest parameter.
-       * @returns {Function} Returns the new function.
-       */
-      function baseRest(func, start) {
-        return setToString(overRest(func, start, identity), func + '');
-      }
-  
-      /**
-       * The base implementation of `_.sample`.
-       *
-       * @private
-       * @param {Array|Object} collection The collection to sample.
-       * @returns {*} Returns the random element.
-       */
-      function baseSample(collection) {
-        return arraySample(values(collection));
-      }
-  
-      /**
-       * The base implementation of `_.sampleSize` without param guards.
-       *
-       * @private
-       * @param {Array|Object} collection The collection to sample.
-       * @param {number} n The number of elements to sample.
-       * @returns {Array} Returns the random elements.
-       */
-      function baseSampleSize(collection, n) {
-        var array = values(collection);
-        return shuffleSelf(array, baseClamp(n, 0, array.length));
-      }
-  
-      /**
-       * The base implementation of `_.set`.
-       *
-       * @private
-       * @param {Object} object The object to modify.
-       * @param {Array|string} path The path of the property to set.
-       * @param {*} value The value to set.
-       * @param {Function} [customizer] The function to customize path creation.
-       * @returns {Object} Returns `object`.
-       */
-      function baseSet(object, path, value, customizer) {
-        if (!isObject(object)) {
-          return object;
-        }
-        path = castPath(path, object);
-  
-        var index = -1,
-            length = path.length,
-            lastIndex = length - 1,
-            nested = object;
-  
-        while (nested != null && ++index < length) {
-          var key = toKey(path[index]),
-              newValue = value;
-  
-          if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
-            return object;
-          }
-  
-          if (index != lastIndex) {
-            var objValue = nested[key];
-            newValue = customizer ? customizer(objValue, key, nested) : undefined;
-            if (newValue === undefined) {
-              newValue = isObject(objValue)
-                ? objValue
-                : (isIndex(path[index + 1]) ? [] : {});
-            }
-          }
-          assignValue(nested, key, newValue);
-          nested = nested[key];
-        }
-        return object;
-      }
-  
-      /**
-       * The base implementation of `setData` without support for hot loop shorting.
-       *
-       * @private
-       * @param {Function} func The function to associate metadata with.
-       * @param {*} data The metadata.
-       * @returns {Function} Returns `func`.
-       */
-      var baseSetData = !metaMap ? identity : function(func, data) {
-        metaMap.set(func, data);
-        return func;
-      };
-  
-      /**
-       * The base implementation of `setToString` without support for hot loop shorting.
-       *
-       * @private
-       * @param {Function} func The function to modify.
-       * @param {Function} string The `toString` result.
-       * @returns {Function} Returns `func`.
-       */
-      var baseSetToString = !defineProperty ? identity : function(func, string) {
-        return defineProperty(func, 'toString', {
-          'configurable': true,
-          'enumerable': false,
-          'value': constant(string),
-          'writable': true
-        });
-      };
-  
-      /**
-       * The base implementation of `_.shuffle`.
-       *
-       * @private
-       * @param {Array|Object} collection The collection to shuffle.
-       * @returns {Array} Returns the new shuffled array.
-       */
-      function baseShuffle(collection) {
-        return shuffleSelf(values(collection));
-      }
-  
-      /**
-       * The base implementation of `_.slice` without an iteratee call guard.
-       *
-       * @private
-       * @param {Array} array The array to slice.
-       * @param {number} [start=0] The start position.
-       * @param {number} [end=array.length] The end position.
-       * @returns {Array} Returns the slice of `array`.
-       */
-      function baseSlice(array, start, end) {
-        var index = -1,
-            length = array.length;
-  
-        if (start < 0) {
-          start = -start > length ? 0 : (length + start);
-        }
-        end = end > length ? length : end;
-        if (end < 0) {
-          end += length;
-        }
-        length = start > end ? 0 : ((end - start) >>> 0);
-        start >>>= 0;
-  
-        var result = Array(length);
-        while (++index < length) {
-          result[index] = array[index + start];
-        }
-        return result;
-      }
-  
-      /**
-       * The base implementation of `_.some` without support for iteratee shorthands.
-       *
-       * @private
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function} predicate The function invoked per iteration.
-       * @returns {boolean} Returns `true` if any element passes the predicate check,
-       *  else `false`.
-       */
-      function baseSome(collection, predicate) {
-        var result;
-  
-        baseEach(collection, function(value, index, collection) {
-          result = predicate(value, index, collection);
-          return !result;
-        });
-        return !!result;
-      }
-  
-      /**
-       * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which
-       * performs a binary search of `array` to determine the index at which `value`
-       * should be inserted into `array` in order to maintain its sort order.
-       *
-       * @private
-       * @param {Array} array The sorted array to inspect.
-       * @param {*} value The value to evaluate.
-       * @param {boolean} [retHighest] Specify returning the highest qualified index.
-       * @returns {number} Returns the index at which `value` should be inserted
-       *  into `array`.
-       */
-      function baseSortedIndex(array, value, retHighest) {
-        var low = 0,
-            high = array == null ? low : array.length;
-  
-        if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
-          while (low < high) {
-            var mid = (low + high) >>> 1,
-                computed = array[mid];
-  
-            if (computed !== null && !isSymbol(computed) &&
-                (retHighest ? (computed <= value) : (computed < value))) {
-              low = mid + 1;
-            } else {
-              high = mid;
-            }
-          }
-          return high;
-        }
-        return baseSortedIndexBy(array, value, identity, retHighest);
-      }
-  
-      /**
-       * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`
-       * which invokes `iteratee` for `value` and each element of `array` to compute
-       * their sort ranking. The iteratee is invoked with one argument; (value).
-       *
-       * @private
-       * @param {Array} array The sorted array to inspect.
-       * @param {*} value The value to evaluate.
-       * @param {Function} iteratee The iteratee invoked per element.
-       * @param {boolean} [retHighest] Specify returning the highest qualified index.
-       * @returns {number} Returns the index at which `value` should be inserted
-       *  into `array`.
-       */
-      function baseSortedIndexBy(array, value, iteratee, retHighest) {
-        var low = 0,
-            high = array == null ? 0 : array.length;
-        if (high === 0) {
-          return 0;
-        }
-  
-        value = iteratee(value);
-        var valIsNaN = value !== value,
-            valIsNull = value === null,
-            valIsSymbol = isSymbol(value),
-            valIsUndefined = value === undefined;
-  
-        while (low < high) {
-          var mid = nativeFloor((low + high) / 2),
-              computed = iteratee(array[mid]),
-              othIsDefined = computed !== undefined,
-              othIsNull = computed === null,
-              othIsReflexive = computed === computed,
-              othIsSymbol = isSymbol(computed);
-  
-          if (valIsNaN) {
-            var setLow = retHighest || othIsReflexive;
-          } else if (valIsUndefined) {
-            setLow = othIsReflexive && (retHighest || othIsDefined);
-          } else if (valIsNull) {
-            setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
-          } else if (valIsSymbol) {
-            setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
-          } else if (othIsNull || othIsSymbol) {
-            setLow = false;
-          } else {
-            setLow = retHighest ? (computed <= value) : (computed < value);
-          }
-          if (setLow) {
-            low = mid + 1;
-          } else {
-            high = mid;
-          }
-        }
-        return nativeMin(high, MAX_ARRAY_INDEX);
-      }
-  
-      /**
-       * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without
-       * support for iteratee shorthands.
-       *
-       * @private
-       * @param {Array} array The array to inspect.
-       * @param {Function} [iteratee] The iteratee invoked per element.
-       * @returns {Array} Returns the new duplicate free array.
-       */
-      function baseSortedUniq(array, iteratee) {
-        var index = -1,
-            length = array.length,
-            resIndex = 0,
-            result = [];
-  
-        while (++index < length) {
-          var value = array[index],
-              computed = iteratee ? iteratee(value) : value;
-  
-          if (!index || !eq(computed, seen)) {
-            var seen = computed;
-            result[resIndex++] = value === 0 ? 0 : value;
-          }
-        }
-        return result;
-      }
-  
-      /**
-       * The base implementation of `_.toNumber` which doesn't ensure correct
-       * conversions of binary, hexadecimal, or octal string values.
-       *
-       * @private
-       * @param {*} value The value to process.
-       * @returns {number} Returns the number.
-       */
-      function baseToNumber(value) {
-        if (typeof value == 'number') {
-          return value;
-        }
-        if (isSymbol(value)) {
-          return NAN;
-        }
-        return +value;
-      }
-  
-      /**
-       * The base implementation of `_.toString` which doesn't convert nullish
-       * values to empty strings.
-       *
-       * @private
-       * @param {*} value The value to process.
-       * @returns {string} Returns the string.
-       */
-      function baseToString(value) {
-        // Exit early for strings to avoid a performance hit in some environments.
-        if (typeof value == 'string') {
-          return value;
-        }
-        if (isArray(value)) {
-          // Recursively convert values (susceptible to call stack limits).
-          return arrayMap(value, baseToString) + '';
-        }
-        if (isSymbol(value)) {
-          return symbolToString ? symbolToString.call(value) : '';
-        }
-        var result = (value + '');
-        return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
-      }
-  
-      /**
-       * The base implementation of `_.uniqBy` without support for iteratee shorthands.
-       *
-       * @private
-       * @param {Array} array The array to inspect.
-       * @param {Function} [iteratee] The iteratee invoked per element.
-       * @param {Function} [comparator] The comparator invoked per element.
-       * @returns {Array} Returns the new duplicate free array.
-       */
-      function baseUniq(array, iteratee, comparator) {
-        var index = -1,
-            includes = arrayIncludes,
-            length = array.length,
-            isCommon = true,
-            result = [],
-            seen = result;
-  
-        if (comparator) {
-          isCommon = false;
-          includes = arrayIncludesWith;
-        }
-        else if (length >= LARGE_ARRAY_SIZE) {
-          var set = iteratee ? null : createSet(array);
-          if (set) {
-            return setToArray(set);
-          }
-          isCommon = false;
-          includes = cacheHas;
-          seen = new SetCache;
-        }
-        else {
-          seen = iteratee ? [] : result;
-        }
-        outer:
-        while (++index < length) {
-          var value = array[index],
-              computed = iteratee ? iteratee(value) : value;
-  
-          value = (comparator || value !== 0) ? value : 0;
-          if (isCommon && computed === computed) {
-            var seenIndex = seen.length;
-            while (seenIndex--) {
-              if (seen[seenIndex] === computed) {
-                continue outer;
-              }
-            }
-            if (iteratee) {
-              seen.push(computed);
-            }
-            result.push(value);
-          }
-          else if (!includes(seen, computed, comparator)) {
-            if (seen !== result) {
-              seen.push(computed);
-            }
-            result.push(value);
-          }
-        }
-        return result;
-      }
-  
-      /**
-       * The base implementation of `_.unset`.
-       *
-       * @private
-       * @param {Object} object The object to modify.
-       * @param {Array|string} path The property path to unset.
-       * @returns {boolean} Returns `true` if the property is deleted, else `false`.
-       */
-      function baseUnset(object, path) {
-        path = castPath(path, object);
-        object = parent(object, path);
-        return object == null || delete object[toKey(last(path))];
-      }
-  
-      /**
-       * The base implementation of `_.update`.
-       *
-       * @private
-       * @param {Object} object The object to modify.
-       * @param {Array|string} path The path of the property to update.
-       * @param {Function} updater The function to produce the updated value.
-       * @param {Function} [customizer] The function to customize path creation.
-       * @returns {Object} Returns `object`.
-       */
-      function baseUpdate(object, path, updater, customizer) {
-        return baseSet(object, path, updater(baseGet(object, path)), customizer);
-      }
-  
-      /**
-       * The base implementation of methods like `_.dropWhile` and `_.takeWhile`
-       * without support for iteratee shorthands.
-       *
-       * @private
-       * @param {Array} array The array to query.
-       * @param {Function} predicate The function invoked per iteration.
-       * @param {boolean} [isDrop] Specify dropping elements instead of taking them.
-       * @param {boolean} [fromRight] Specify iterating from right to left.
-       * @returns {Array} Returns the slice of `array`.
-       */
-      function baseWhile(array, predicate, isDrop, fromRight) {
-        var length = array.length,
-            index = fromRight ? length : -1;
-  
-        while ((fromRight ? index-- : ++index < length) &&
-          predicate(array[index], index, array)) {}
-  
-        return isDrop
-          ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))
-          : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));
-      }
-  
-      /**
-       * The base implementation of `wrapperValue` which returns the result of
-       * performing a sequence of actions on the unwrapped `value`, where each
-       * successive action is supplied the return value of the previous.
-       *
-       * @private
-       * @param {*} value The unwrapped value.
-       * @param {Array} actions Actions to perform to resolve the unwrapped value.
-       * @returns {*} Returns the resolved value.
-       */
-      function baseWrapperValue(value, actions) {
-        var result = value;
-        if (result instanceof LazyWrapper) {
-          result = result.value();
-        }
-        return arrayReduce(actions, function(result, action) {
-          return action.func.apply(action.thisArg, arrayPush([result], action.args));
-        }, result);
-      }
-  
-      /**
-       * The base implementation of methods like `_.xor`, without support for
-       * iteratee shorthands, that accepts an array of arrays to inspect.
-       *
-       * @private
-       * @param {Array} arrays The arrays to inspect.
-       * @param {Function} [iteratee] The iteratee invoked per element.
-       * @param {Function} [comparator] The comparator invoked per element.
-       * @returns {Array} Returns the new array of values.
-       */
-      function baseXor(arrays, iteratee, comparator) {
-        var length = arrays.length;
-        if (length < 2) {
-          return length ? baseUniq(arrays[0]) : [];
-        }
-        var index = -1,
-            result = Array(length);
-  
-        while (++index < length) {
-          var array = arrays[index],
-              othIndex = -1;
-  
-          while (++othIndex < length) {
-            if (othIndex != index) {
-              result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);
-            }
-          }
-        }
-        return baseUniq(baseFlatten(result, 1), iteratee, comparator);
-      }
-  
-      /**
-       * This base implementation of `_.zipObject` which assigns values using `assignFunc`.
-       *
-       * @private
-       * @param {Array} props The property identifiers.
-       * @param {Array} values The property values.
-       * @param {Function} assignFunc The function to assign values.
-       * @returns {Object} Returns the new object.
-       */
-      function baseZipObject(props, values, assignFunc) {
-        var index = -1,
-            length = props.length,
-            valsLength = values.length,
-            result = {};
-  
-        while (++index < length) {
-          var value = index < valsLength ? values[index] : undefined;
-          assignFunc(result, props[index], value);
-        }
-        return result;
-      }
-  
-      /**
-       * Casts `value` to an empty array if it's not an array like object.
-       *
-       * @private
-       * @param {*} value The value to inspect.
-       * @returns {Array|Object} Returns the cast array-like object.
-       */
-      function castArrayLikeObject(value) {
-        return isArrayLikeObject(value) ? value : [];
-      }
-  
-      /**
-       * Casts `value` to `identity` if it's not a function.
-       *
-       * @private
-       * @param {*} value The value to inspect.
-       * @returns {Function} Returns cast function.
-       */
-      function castFunction(value) {
-        return typeof value == 'function' ? value : identity;
-      }
-  
-      /**
-       * Casts `value` to a path array if it's not one.
-       *
-       * @private
-       * @param {*} value The value to inspect.
-       * @param {Object} [object] The object to query keys on.
-       * @returns {Array} Returns the cast property path array.
-       */
-      function castPath(value, object) {
-        if (isArray(value)) {
-          return value;
-        }
-        return isKey(value, object) ? [value] : stringToPath(toString(value));
-      }
-  
-      /**
-       * A `baseRest` alias which can be replaced with `identity` by module
-       * replacement plugins.
-       *
-       * @private
-       * @type {Function}
-       * @param {Function} func The function to apply a rest parameter to.
-       * @returns {Function} Returns the new function.
-       */
-      var castRest = baseRest;
-  
-      /**
-       * Casts `array` to a slice if it's needed.
-       *
-       * @private
-       * @param {Array} array The array to inspect.
-       * @param {number} start The start position.
-       * @param {number} [end=array.length] The end position.
-       * @returns {Array} Returns the cast slice.
-       */
-      function castSlice(array, start, end) {
-        var length = array.length;
-        end = end === undefined ? length : end;
-        return (!start && end >= length) ? array : baseSlice(array, start, end);
-      }
-  
-      /**
-       * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).
-       *
-       * @private
-       * @param {number|Object} id The timer id or timeout object of the timer to clear.
-       */
-      var clearTimeout = ctxClearTimeout || function(id) {
-        return root.clearTimeout(id);
-      };
-  
-      /**
-       * Creates a clone of  `buffer`.
-       *
-       * @private
-       * @param {Buffer} buffer The buffer to clone.
-       * @param {boolean} [isDeep] Specify a deep clone.
-       * @returns {Buffer} Returns the cloned buffer.
-       */
-      function cloneBuffer(buffer, isDeep) {
-        if (isDeep) {
-          return buffer.slice();
-        }
-        var length = buffer.length,
-            result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
-  
-        buffer.copy(result);
-        return result;
-      }
-  
-      /**
-       * Creates a clone of `arrayBuffer`.
-       *
-       * @private
-       * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
-       * @returns {ArrayBuffer} Returns the cloned array buffer.
-       */
-      function cloneArrayBuffer(arrayBuffer) {
-        var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
-        new Uint8Array(result).set(new Uint8Array(arrayBuffer));
-        return result;
-      }
-  
-      /**
-       * Creates a clone of `dataView`.
-       *
-       * @private
-       * @param {Object} dataView The data view to clone.
-       * @param {boolean} [isDeep] Specify a deep clone.
-       * @returns {Object} Returns the cloned data view.
-       */
-      function cloneDataView(dataView, isDeep) {
-        var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
-        return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
-      }
-  
-      /**
-       * Creates a clone of `regexp`.
-       *
-       * @private
-       * @param {Object} regexp The regexp to clone.
-       * @returns {Object} Returns the cloned regexp.
-       */
-      function cloneRegExp(regexp) {
-        var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
-        result.lastIndex = regexp.lastIndex;
-        return result;
-      }
-  
-      /**
-       * Creates a clone of the `symbol` object.
-       *
-       * @private
-       * @param {Object} symbol The symbol object to clone.
-       * @returns {Object} Returns the cloned symbol object.
-       */
-      function cloneSymbol(symbol) {
-        return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
-      }
-  
-      /**
-       * Creates a clone of `typedArray`.
-       *
-       * @private
-       * @param {Object} typedArray The typed array to clone.
-       * @param {boolean} [isDeep] Specify a deep clone.
-       * @returns {Object} Returns the cloned typed array.
-       */
-      function cloneTypedArray(typedArray, isDeep) {
-        var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
-        return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
-      }
-  
-      /**
-       * Compares values to sort them in ascending order.
-       *
-       * @private
-       * @param {*} value The value to compare.
-       * @param {*} other The other value to compare.
-       * @returns {number} Returns the sort order indicator for `value`.
-       */
-      function compareAscending(value, other) {
-        if (value !== other) {
-          var valIsDefined = value !== undefined,
-              valIsNull = value === null,
-              valIsReflexive = value === value,
-              valIsSymbol = isSymbol(value);
-  
-          var othIsDefined = other !== undefined,
-              othIsNull = other === null,
-              othIsReflexive = other === other,
-              othIsSymbol = isSymbol(other);
-  
-          if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
-              (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
-              (valIsNull && othIsDefined && othIsReflexive) ||
-              (!valIsDefined && othIsReflexive) ||
-              !valIsReflexive) {
-            return 1;
-          }
-          if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
-              (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
-              (othIsNull && valIsDefined && valIsReflexive) ||
-              (!othIsDefined && valIsReflexive) ||
-              !othIsReflexive) {
-            return -1;
-          }
-        }
-        return 0;
-      }
-  
-      /**
-       * Used by `_.orderBy` to compare multiple properties of a value to another
-       * and stable sort them.
-       *
-       * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,
-       * specify an order of "desc" for descending or "asc" for ascending sort order
-       * of corresponding values.
-       *
-       * @private
-       * @param {Object} object The object to compare.
-       * @param {Object} other The other object to compare.
-       * @param {boolean[]|string[]} orders The order to sort by for each property.
-       * @returns {number} Returns the sort order indicator for `object`.
-       */
-      function compareMultiple(object, other, orders) {
-        var index = -1,
-            objCriteria = object.criteria,
-            othCriteria = other.criteria,
-            length = objCriteria.length,
-            ordersLength = orders.length;
-  
-        while (++index < length) {
-          var result = compareAscending(objCriteria[index], othCriteria[index]);
-          if (result) {
-            if (index >= ordersLength) {
-              return result;
-            }
-            var order = orders[index];
-            return result * (order == 'desc' ? -1 : 1);
-          }
-        }
-        // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
-        // that causes it, under certain circumstances, to provide the same value for
-        // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
-        // for more details.
-        //
-        // This also ensures a stable sort in V8 and other engines.
-        // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.
-        return object.index - other.index;
-      }
-  
-      /**
-       * Creates an array that is the composition of partially applied arguments,
-       * placeholders, and provided arguments into a single array of arguments.
-       *
-       * @private
-       * @param {Array} args The provided arguments.
-       * @param {Array} partials The arguments to prepend to those provided.
-       * @param {Array} holders The `partials` placeholder indexes.
-       * @params {boolean} [isCurried] Specify composing for a curried function.
-       * @returns {Array} Returns the new array of composed arguments.
-       */
-      function composeArgs(args, partials, holders, isCurried) {
-        var argsIndex = -1,
-            argsLength = args.length,
-            holdersLength = holders.length,
-            leftIndex = -1,
-            leftLength = partials.length,
-            rangeLength = nativeMax(argsLength - holdersLength, 0),
-            result = Array(leftLength + rangeLength),
-            isUncurried = !isCurried;
-  
-        while (++leftIndex < leftLength) {
-          result[leftIndex] = partials[leftIndex];
-        }
-        while (++argsIndex < holdersLength) {
-          if (isUncurried || argsIndex < argsLength) {
-            result[holders[argsIndex]] = args[argsIndex];
-          }
-        }
-        while (rangeLength--) {
-          result[leftIndex++] = args[argsIndex++];
-        }
-        return result;
-      }
-  
-      /**
-       * This function is like `composeArgs` except that the arguments composition
-       * is tailored for `_.partialRight`.
-       *
-       * @private
-       * @param {Array} args The provided arguments.
-       * @param {Array} partials The arguments to append to those provided.
-       * @param {Array} holders The `partials` placeholder indexes.
-       * @params {boolean} [isCurried] Specify composing for a curried function.
-       * @returns {Array} Returns the new array of composed arguments.
-       */
-      function composeArgsRight(args, partials, holders, isCurried) {
-        var argsIndex = -1,
-            argsLength = args.length,
-            holdersIndex = -1,
-            holdersLength = holders.length,
-            rightIndex = -1,
-            rightLength = partials.length,
-            rangeLength = nativeMax(argsLength - holdersLength, 0),
-            result = Array(rangeLength + rightLength),
-            isUncurried = !isCurried;
-  
-        while (++argsIndex < rangeLength) {
-          result[argsIndex] = args[argsIndex];
-        }
-        var offset = argsIndex;
-        while (++rightIndex < rightLength) {
-          result[offset + rightIndex] = partials[rightIndex];
-        }
-        while (++holdersIndex < holdersLength) {
-          if (isUncurried || argsIndex < argsLength) {
-            result[offset + holders[holdersIndex]] = args[argsIndex++];
-          }
-        }
-        return result;
-      }
-  
-      /**
-       * Copies the values of `source` to `array`.
-       *
-       * @private
-       * @param {Array} source The array to copy values from.
-       * @param {Array} [array=[]] The array to copy values to.
-       * @returns {Array} Returns `array`.
-       */
-      function copyArray(source, array) {
-        var index = -1,
-            length = source.length;
-  
-        array || (array = Array(length));
-        while (++index < length) {
-          array[index] = source[index];
-        }
-        return array;
-      }
-  
-      /**
-       * Copies properties of `source` to `object`.
-       *
-       * @private
-       * @param {Object} source The object to copy properties from.
-       * @param {Array} props The property identifiers to copy.
-       * @param {Object} [object={}] The object to copy properties to.
-       * @param {Function} [customizer] The function to customize copied values.
-       * @returns {Object} Returns `object`.
-       */
-      function copyObject(source, props, object, customizer) {
-        var isNew = !object;
-        object || (object = {});
-  
-        var index = -1,
-            length = props.length;
-  
-        while (++index < length) {
-          var key = props[index];
-  
-          var newValue = customizer
-            ? customizer(object[key], source[key], key, object, source)
-            : undefined;
-  
-          if (newValue === undefined) {
-            newValue = source[key];
-          }
-          if (isNew) {
-            baseAssignValue(object, key, newValue);
-          } else {
-            assignValue(object, key, newValue);
-          }
-        }
-        return object;
-      }
-  
-      /**
-       * Copies own symbols of `source` to `object`.
-       *
-       * @private
-       * @param {Object} source The object to copy symbols from.
-       * @param {Object} [object={}] The object to copy symbols to.
-       * @returns {Object} Returns `object`.
-       */
-      function copySymbols(source, object) {
-        return copyObject(source, getSymbols(source), object);
-      }
-  
-      /**
-       * Copies own and inherited symbols of `source` to `object`.
-       *
-       * @private
-       * @param {Object} source The object to copy symbols from.
-       * @param {Object} [object={}] The object to copy symbols to.
-       * @returns {Object} Returns `object`.
-       */
-      function copySymbolsIn(source, object) {
-        return copyObject(source, getSymbolsIn(source), object);
-      }
-  
-      /**
-       * Creates a function like `_.groupBy`.
-       *
-       * @private
-       * @param {Function} setter The function to set accumulator values.
-       * @param {Function} [initializer] The accumulator object initializer.
-       * @returns {Function} Returns the new aggregator function.
-       */
-      function createAggregator(setter, initializer) {
-        return function(collection, iteratee) {
-          var func = isArray(collection) ? arrayAggregator : baseAggregator,
-              accumulator = initializer ? initializer() : {};
-  
-          return func(collection, setter, getIteratee(iteratee, 2), accumulator);
-        };
-      }
-  
-      /**
-       * Creates a function like `_.assign`.
-       *
-       * @private
-       * @param {Function} assigner The function to assign values.
-       * @returns {Function} Returns the new assigner function.
-       */
-      function createAssigner(assigner) {
-        return baseRest(function(object, sources) {
-          var index = -1,
-              length = sources.length,
-              customizer = length > 1 ? sources[length - 1] : undefined,
-              guard = length > 2 ? sources[2] : undefined;
-  
-          customizer = (assigner.length > 3 && typeof customizer == 'function')
-            ? (length--, customizer)
-            : undefined;
-  
-          if (guard && isIterateeCall(sources[0], sources[1], guard)) {
-            customizer = length < 3 ? undefined : customizer;
-            length = 1;
-          }
-          object = Object(object);
-          while (++index < length) {
-            var source = sources[index];
-            if (source) {
-              assigner(object, source, index, customizer);
-            }
-          }
-          return object;
-        });
-      }
-  
-      /**
-       * Creates a `baseEach` or `baseEachRight` function.
-       *
-       * @private
-       * @param {Function} eachFunc The function to iterate over a collection.
-       * @param {boolean} [fromRight] Specify iterating from right to left.
-       * @returns {Function} Returns the new base function.
-       */
-      function createBaseEach(eachFunc, fromRight) {
-        return function(collection, iteratee) {
-          if (collection == null) {
-            return collection;
-          }
-          if (!isArrayLike(collection)) {
-            return eachFunc(collection, iteratee);
-          }
-          var length = collection.length,
-              index = fromRight ? length : -1,
-              iterable = Object(collection);
-  
-          while ((fromRight ? index-- : ++index < length)) {
-            if (iteratee(iterable[index], index, iterable) === false) {
-              break;
-            }
-          }
-          return collection;
-        };
-      }
-  
-      /**
-       * Creates a base function for methods like `_.forIn` and `_.forOwn`.
-       *
-       * @private
-       * @param {boolean} [fromRight] Specify iterating from right to left.
-       * @returns {Function} Returns the new base function.
-       */
-      function createBaseFor(fromRight) {
-        return function(object, iteratee, keysFunc) {
-          var index = -1,
-              iterable = Object(object),
-              props = keysFunc(object),
-              length = props.length;
-  
-          while (length--) {
-            var key = props[fromRight ? length : ++index];
-            if (iteratee(iterable[key], key, iterable) === false) {
-              break;
-            }
-          }
-          return object;
-        };
-      }
-  
-      /**
-       * Creates a function that wraps `func` to invoke it with the optional `this`
-       * binding of `thisArg`.
-       *
-       * @private
-       * @param {Function} func The function to wrap.
-       * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
-       * @param {*} [thisArg] The `this` binding of `func`.
-       * @returns {Function} Returns the new wrapped function.
-       */
-      function createBind(func, bitmask, thisArg) {
-        var isBind = bitmask & WRAP_BIND_FLAG,
-            Ctor = createCtor(func);
-  
-        function wrapper() {
-          var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
-          return fn.apply(isBind ? thisArg : this, arguments);
-        }
-        return wrapper;
-      }
-  
-      /**
-       * Creates a function like `_.lowerFirst`.
-       *
-       * @private
-       * @param {string} methodName The name of the `String` case method to use.
-       * @returns {Function} Returns the new case function.
-       */
-      function createCaseFirst(methodName) {
-        return function(string) {
-          string = toString(string);
-  
-          var strSymbols = hasUnicode(string)
-            ? stringToArray(string)
-            : undefined;
-  
-          var chr = strSymbols
-            ? strSymbols[0]
-            : string.charAt(0);
-  
-          var trailing = strSymbols
-            ? castSlice(strSymbols, 1).join('')
-            : string.slice(1);
-  
-          return chr[methodName]() + trailing;
-        };
-      }
-  
-      /**
-       * Creates a function like `_.camelCase`.
-       *
-       * @private
-       * @param {Function} callback The function to combine each word.
-       * @returns {Function} Returns the new compounder function.
-       */
-      function createCompounder(callback) {
-        return function(string) {
-          return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');
-        };
-      }
-  
-      /**
-       * Creates a function that produces an instance of `Ctor` regardless of
-       * whether it was invoked as part of a `new` expression or by `call` or `apply`.
-       *
-       * @private
-       * @param {Function} Ctor The constructor to wrap.
-       * @returns {Function} Returns the new wrapped function.
-       */
-      function createCtor(Ctor) {
-        return function() {
-          // Use a `switch` statement to work with class constructors. See
-          // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
-          // for more details.
-          var args = arguments;
-          switch (args.length) {
-            case 0: return new Ctor;
-            case 1: return new Ctor(args[0]);
-            case 2: return new Ctor(args[0], args[1]);
-            case 3: return new Ctor(args[0], args[1], args[2]);
-            case 4: return new Ctor(args[0], args[1], args[2], args[3]);
-            case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);
-            case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
-            case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
-          }
-          var thisBinding = baseCreate(Ctor.prototype),
-              result = Ctor.apply(thisBinding, args);
-  
-          // Mimic the constructor's `return` behavior.
-          // See https://es5.github.io/#x13.2.2 for more details.
-          return isObject(result) ? result : thisBinding;
-        };
-      }
-  
-      /**
-       * Creates a function that wraps `func` to enable currying.
-       *
-       * @private
-       * @param {Function} func The function to wrap.
-       * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
-       * @param {number} arity The arity of `func`.
-       * @returns {Function} Returns the new wrapped function.
-       */
-      function createCurry(func, bitmask, arity) {
-        var Ctor = createCtor(func);
-  
-        function wrapper() {
-          var length = arguments.length,
-              args = Array(length),
-              index = length,
-              placeholder = getHolder(wrapper);
-  
-          while (index--) {
-            args[index] = arguments[index];
-          }
-          var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)
-            ? []
-            : replaceHolders(args, placeholder);
-  
-          length -= holders.length;
-          if (length < arity) {
-            return createRecurry(
-              func, bitmask, createHybrid, wrapper.placeholder, undefined,
-              args, holders, undefined, undefined, arity - length);
-          }
-          var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
-          return apply(fn, this, args);
-        }
-        return wrapper;
-      }
-  
-      /**
-       * Creates a `_.find` or `_.findLast` function.
-       *
-       * @private
-       * @param {Function} findIndexFunc The function to find the collection index.
-       * @returns {Function} Returns the new find function.
-       */
-      function createFind(findIndexFunc) {
-        return function(collection, predicate, fromIndex) {
-          var iterable = Object(collection);
-          if (!isArrayLike(collection)) {
-            var iteratee = getIteratee(predicate, 3);
-            collection = keys(collection);
-            predicate = function(key) { return iteratee(iterable[key], key, iterable); };
-          }
-          var index = findIndexFunc(collection, predicate, fromIndex);
-          return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
-        };
-      }
-  
-      /**
-       * Creates a `_.flow` or `_.flowRight` function.
-       *
-       * @private
-       * @param {boolean} [fromRight] Specify iterating from right to left.
-       * @returns {Function} Returns the new flow function.
-       */
-      function createFlow(fromRight) {
-        return flatRest(function(funcs) {
-          var length = funcs.length,
-              index = length,
-              prereq = LodashWrapper.prototype.thru;
-  
-          if (fromRight) {
-            funcs.reverse();
-          }
-          while (index--) {
-            var func = funcs[index];
-            if (typeof func != 'function') {
-              throw new TypeError(FUNC_ERROR_TEXT);
-            }
-            if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
-              var wrapper = new LodashWrapper([], true);
-            }
-          }
-          index = wrapper ? index : length;
-          while (++index < length) {
-            func = funcs[index];
-  
-            var funcName = getFuncName(func),
-                data = funcName == 'wrapper' ? getData(func) : undefined;
-  
-            if (data && isLaziable(data[0]) &&
-                  data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
-                  !data[4].length && data[9] == 1
-                ) {
-              wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
-            } else {
-              wrapper = (func.length == 1 && isLaziable(func))
-                ? wrapper[funcName]()
-                : wrapper.thru(func);
-            }
-          }
-          return function() {
-            var args = arguments,
-                value = args[0];
-  
-            if (wrapper && args.length == 1 && isArray(value)) {
-              return wrapper.plant(value).value();
-            }
-            var index = 0,
-                result = length ? funcs[index].apply(this, args) : value;
-  
-            while (++index < length) {
-              result = funcs[index].call(this, result);
-            }
-            return result;
-          };
-        });
-      }
-  
-      /**
-       * Creates a function that wraps `func` to invoke it with optional `this`
-       * binding of `thisArg`, partial application, and currying.
-       *
-       * @private
-       * @param {Function|string} func The function or method name to wrap.
-       * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
-       * @param {*} [thisArg] The `this` binding of `func`.
-       * @param {Array} [partials] The arguments to prepend to those provided to
-       *  the new function.
-       * @param {Array} [holders] The `partials` placeholder indexes.
-       * @param {Array} [partialsRight] The arguments to append to those provided
-       *  to the new function.
-       * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.
-       * @param {Array} [argPos] The argument positions of the new function.
-       * @param {number} [ary] The arity cap of `func`.
-       * @param {number} [arity] The arity of `func`.
-       * @returns {Function} Returns the new wrapped function.
-       */
-      function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
-        var isAry = bitmask & WRAP_ARY_FLAG,
-            isBind = bitmask & WRAP_BIND_FLAG,
-            isBindKey = bitmask & WRAP_BIND_KEY_FLAG,
-            isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),
-            isFlip = bitmask & WRAP_FLIP_FLAG,
-            Ctor = isBindKey ? undefined : createCtor(func);
-  
-        function wrapper() {
-          var length = arguments.length,
-              args = Array(length),
-              index = length;
-  
-          while (index--) {
-            args[index] = arguments[index];
-          }
-          if (isCurried) {
-            var placeholder = getHolder(wrapper),
-                holdersCount = countHolders(args, placeholder);
-          }
-          if (partials) {
-            args = composeArgs(args, partials, holders, isCurried);
-          }
-          if (partialsRight) {
-            args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
-          }
-          length -= holdersCount;
-          if (isCurried && length < arity) {
-            var newHolders = replaceHolders(args, placeholder);
-            return createRecurry(
-              func, bitmask, createHybrid, wrapper.placeholder, thisArg,
-              args, newHolders, argPos, ary, arity - length
-            );
-          }
-          var thisBinding = isBind ? thisArg : this,
-              fn = isBindKey ? thisBinding[func] : func;
-  
-          length = args.length;
-          if (argPos) {
-            args = reorder(args, argPos);
-          } else if (isFlip && length > 1) {
-            args.reverse();
-          }
-          if (isAry && ary < length) {
-            args.length = ary;
-          }
-          if (this && this !== root && this instanceof wrapper) {
-            fn = Ctor || createCtor(fn);
-          }
-          return fn.apply(thisBinding, args);
-        }
-        return wrapper;
-      }
-  
-      /**
-       * Creates a function like `_.invertBy`.
-       *
-       * @private
-       * @param {Function} setter The function to set accumulator values.
-       * @param {Function} toIteratee The function to resolve iteratees.
-       * @returns {Function} Returns the new inverter function.
-       */
-      function createInverter(setter, toIteratee) {
-        return function(object, iteratee) {
-          return baseInverter(object, setter, toIteratee(iteratee), {});
-        };
-      }
-  
-      /**
-       * Creates a function that performs a mathematical operation on two values.
-       *
-       * @private
-       * @param {Function} operator The function to perform the operation.
-       * @param {number} [defaultValue] The value used for `undefined` arguments.
-       * @returns {Function} Returns the new mathematical operation function.
-       */
-      function createMathOperation(operator, defaultValue) {
-        return function(value, other) {
-          var result;
-          if (value === undefined && other === undefined) {
-            return defaultValue;
-          }
-          if (value !== undefined) {
-            result = value;
-          }
-          if (other !== undefined) {
-            if (result === undefined) {
-              return other;
-            }
-            if (typeof value == 'string' || typeof other == 'string') {
-              value = baseToString(value);
-              other = baseToString(other);
-            } else {
-              value = baseToNumber(value);
-              other = baseToNumber(other);
-            }
-            result = operator(value, other);
-          }
-          return result;
-        };
-      }
-  
-      /**
-       * Creates a function like `_.over`.
-       *
-       * @private
-       * @param {Function} arrayFunc The function to iterate over iteratees.
-       * @returns {Function} Returns the new over function.
-       */
-      function createOver(arrayFunc) {
-        return flatRest(function(iteratees) {
-          iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
-          return baseRest(function(args) {
-            var thisArg = this;
-            return arrayFunc(iteratees, function(iteratee) {
-              return apply(iteratee, thisArg, args);
-            });
-          });
-        });
-      }
-  
-      /**
-       * Creates the padding for `string` based on `length`. The `chars` string
-       * is truncated if the number of characters exceeds `length`.
-       *
-       * @private
-       * @param {number} length The padding length.
-       * @param {string} [chars=' '] The string used as padding.
-       * @returns {string} Returns the padding for `string`.
-       */
-      function createPadding(length, chars) {
-        chars = chars === undefined ? ' ' : baseToString(chars);
-  
-        var charsLength = chars.length;
-        if (charsLength < 2) {
-          return charsLength ? baseRepeat(chars, length) : chars;
-        }
-        var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));
-        return hasUnicode(chars)
-          ? castSlice(stringToArray(result), 0, length).join('')
-          : result.slice(0, length);
-      }
-  
-      /**
-       * Creates a function that wraps `func` to invoke it with the `this` binding
-       * of `thisArg` and `partials` prepended to the arguments it receives.
-       *
-       * @private
-       * @param {Function} func The function to wrap.
-       * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
-       * @param {*} thisArg The `this` binding of `func`.
-       * @param {Array} partials The arguments to prepend to those provided to
-       *  the new function.
-       * @returns {Function} Returns the new wrapped function.
-       */
-      function createPartial(func, bitmask, thisArg, partials) {
-        var isBind = bitmask & WRAP_BIND_FLAG,
-            Ctor = createCtor(func);
-  
-        function wrapper() {
-          var argsIndex = -1,
-              argsLength = arguments.length,
-              leftIndex = -1,
-              leftLength = partials.length,
-              args = Array(leftLength + argsLength),
-              fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
-  
-          while (++leftIndex < leftLength) {
-            args[leftIndex] = partials[leftIndex];
-          }
-          while (argsLength--) {
-            args[leftIndex++] = arguments[++argsIndex];
-          }
-          return apply(fn, isBind ? thisArg : this, args);
-        }
-        return wrapper;
-      }
-  
-      /**
-       * Creates a `_.range` or `_.rangeRight` function.
-       *
-       * @private
-       * @param {boolean} [fromRight] Specify iterating from right to left.
-       * @returns {Function} Returns the new range function.
-       */
-      function createRange(fromRight) {
-        return function(start, end, step) {
-          if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {
-            end = step = undefined;
-          }
-          // Ensure the sign of `-0` is preserved.
-          start = toFinite(start);
-          if (end === undefined) {
-            end = start;
-            start = 0;
-          } else {
-            end = toFinite(end);
-          }
-          step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);
-          return baseRange(start, end, step, fromRight);
-        };
-      }
-  
-      /**
-       * Creates a function that performs a relational operation on two values.
-       *
-       * @private
-       * @param {Function} operator The function to perform the operation.
-       * @returns {Function} Returns the new relational operation function.
-       */
-      function createRelationalOperation(operator) {
-        return function(value, other) {
-          if (!(typeof value == 'string' && typeof other == 'string')) {
-            value = toNumber(value);
-            other = toNumber(other);
-          }
-          return operator(value, other);
-        };
-      }
-  
-      /**
-       * Creates a function that wraps `func` to continue currying.
-       *
-       * @private
-       * @param {Function} func The function to wrap.
-       * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
-       * @param {Function} wrapFunc The function to create the `func` wrapper.
-       * @param {*} placeholder The placeholder value.
-       * @param {*} [thisArg] The `this` binding of `func`.
-       * @param {Array} [partials] The arguments to prepend to those provided to
-       *  the new function.
-       * @param {Array} [holders] The `partials` placeholder indexes.
-       * @param {Array} [argPos] The argument positions of the new function.
-       * @param {number} [ary] The arity cap of `func`.
-       * @param {number} [arity] The arity of `func`.
-       * @returns {Function} Returns the new wrapped function.
-       */
-      function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {
-        var isCurry = bitmask & WRAP_CURRY_FLAG,
-            newHolders = isCurry ? holders : undefined,
-            newHoldersRight = isCurry ? undefined : holders,
-            newPartials = isCurry ? partials : undefined,
-            newPartialsRight = isCurry ? undefined : partials;
-  
-        bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);
-        bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
-  
-        if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
-          bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
-        }
-        var newData = [
-          func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,
-          newHoldersRight, argPos, ary, arity
-        ];
-  
-        var result = wrapFunc.apply(undefined, newData);
-        if (isLaziable(func)) {
-          setData(result, newData);
-        }
-        result.placeholder = placeholder;
-        return setWrapToString(result, func, bitmask);
-      }
-  
-      /**
-       * Creates a function like `_.round`.
-       *
-       * @private
-       * @param {string} methodName The name of the `Math` method to use when rounding.
-       * @returns {Function} Returns the new round function.
-       */
-      function createRound(methodName) {
-        var func = Math[methodName];
-        return function(number, precision) {
-          number = toNumber(number);
-          precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
-          if (precision && nativeIsFinite(number)) {
-            // Shift with exponential notation to avoid floating-point issues.
-            // See [MDN](https://mdn.io/round#Examples) for more details.
-            var pair = (toString(number) + 'e').split('e'),
-                value = func(pair[0] + 'e' + (+pair[1] + precision));
-  
-            pair = (toString(value) + 'e').split('e');
-            return +(pair[0] + 'e' + (+pair[1] - precision));
-          }
-          return func(number);
-        };
-      }
-  
-      /**
-       * Creates a set object of `values`.
-       *
-       * @private
-       * @param {Array} values The values to add to the set.
-       * @returns {Object} Returns the new set.
-       */
-      var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
-        return new Set(values);
-      };
-  
-      /**
-       * Creates a `_.toPairs` or `_.toPairsIn` function.
-       *
-       * @private
-       * @param {Function} keysFunc The function to get the keys of a given object.
-       * @returns {Function} Returns the new pairs function.
-       */
-      function createToPairs(keysFunc) {
-        return function(object) {
-          var tag = getTag(object);
-          if (tag == mapTag) {
-            return mapToArray(object);
-          }
-          if (tag == setTag) {
-            return setToPairs(object);
-          }
-          return baseToPairs(object, keysFunc(object));
-        };
-      }
-  
-      /**
-       * Creates a function that either curries or invokes `func` with optional
-       * `this` binding and partially applied arguments.
-       *
-       * @private
-       * @param {Function|string} func The function or method name to wrap.
-       * @param {number} bitmask The bitmask flags.
-       *    1 - `_.bind`
-       *    2 - `_.bindKey`
-       *    4 - `_.curry` or `_.curryRight` of a bound function
-       *    8 - `_.curry`
-       *   16 - `_.curryRight`
-       *   32 - `_.partial`
-       *   64 - `_.partialRight`
-       *  128 - `_.rearg`
-       *  256 - `_.ary`
-       *  512 - `_.flip`
-       * @param {*} [thisArg] The `this` binding of `func`.
-       * @param {Array} [partials] The arguments to be partially applied.
-       * @param {Array} [holders] The `partials` placeholder indexes.
-       * @param {Array} [argPos] The argument positions of the new function.
-       * @param {number} [ary] The arity cap of `func`.
-       * @param {number} [arity] The arity of `func`.
-       * @returns {Function} Returns the new wrapped function.
-       */
-      function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
-        var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
-        if (!isBindKey && typeof func != 'function') {
-          throw new TypeError(FUNC_ERROR_TEXT);
-        }
-        var length = partials ? partials.length : 0;
-        if (!length) {
-          bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
-          partials = holders = undefined;
-        }
-        ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);
-        arity = arity === undefined ? arity : toInteger(arity);
-        length -= holders ? holders.length : 0;
-  
-        if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
-          var partialsRight = partials,
-              holdersRight = holders;
-  
-          partials = holders = undefined;
-        }
-        var data = isBindKey ? undefined : getData(func);
-  
-        var newData = [
-          func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,
-          argPos, ary, arity
-        ];
-  
-        if (data) {
-          mergeData(newData, data);
-        }
-        func = newData[0];
-        bitmask = newData[1];
-        thisArg = newData[2];
-        partials = newData[3];
-        holders = newData[4];
-        arity = newData[9] = newData[9] === undefined
-          ? (isBindKey ? 0 : func.length)
-          : nativeMax(newData[9] - length, 0);
-  
-        if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
-          bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
-        }
-        if (!bitmask || bitmask == WRAP_BIND_FLAG) {
-          var result = createBind(func, bitmask, thisArg);
-        } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
-          result = createCurry(func, bitmask, arity);
-        } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
-          result = createPartial(func, bitmask, thisArg, partials);
-        } else {
-          result = createHybrid.apply(undefined, newData);
-        }
-        var setter = data ? baseSetData : setData;
-        return setWrapToString(setter(result, newData), func, bitmask);
-      }
-  
-      /**
-       * Used by `_.defaults` to customize its `_.assignIn` use to assign properties
-       * of source objects to the destination object for all destination properties
-       * that resolve to `undefined`.
-       *
-       * @private
-       * @param {*} objValue The destination value.
-       * @param {*} srcValue The source value.
-       * @param {string} key The key of the property to assign.
-       * @param {Object} object The parent object of `objValue`.
-       * @returns {*} Returns the value to assign.
-       */
-      function customDefaultsAssignIn(objValue, srcValue, key, object) {
-        if (objValue === undefined ||
-            (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {
-          return srcValue;
-        }
-        return objValue;
-      }
-  
-      /**
-       * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source
-       * objects into destination objects that are passed thru.
-       *
-       * @private
-       * @param {*} objValue The destination value.
-       * @param {*} srcValue The source value.
-       * @param {string} key The key of the property to merge.
-       * @param {Object} object The parent object of `objValue`.
-       * @param {Object} source The parent object of `srcValue`.
-       * @param {Object} [stack] Tracks traversed source values and their merged
-       *  counterparts.
-       * @returns {*} Returns the value to assign.
-       */
-      function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
-        if (isObject(objValue) && isObject(srcValue)) {
-          // Recursively merge objects and arrays (susceptible to call stack limits).
-          stack.set(srcValue, objValue);
-          baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);
-          stack['delete'](srcValue);
-        }
-        return objValue;
-      }
-  
-      /**
-       * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain
-       * objects.
-       *
-       * @private
-       * @param {*} value The value to inspect.
-       * @param {string} key The key of the property to inspect.
-       * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.
-       */
-      function customOmitClone(value) {
-        return isPlainObject(value) ? undefined : value;
-      }
-  
-      /**
-       * A specialized version of `baseIsEqualDeep` for arrays with support for
-       * partial deep comparisons.
-       *
-       * @private
-       * @param {Array} array The array to compare.
-       * @param {Array} other The other array to compare.
-       * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
-       * @param {Function} customizer The function to customize comparisons.
-       * @param {Function} equalFunc The function to determine equivalents of values.
-       * @param {Object} stack Tracks traversed `array` and `other` objects.
-       * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
-       */
-      function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
-        var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
-            arrLength = array.length,
-            othLength = other.length;
-  
-        if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
-          return false;
-        }
-        // Check that cyclic values are equal.
-        var arrStacked = stack.get(array);
-        var othStacked = stack.get(other);
-        if (arrStacked && othStacked) {
-          return arrStacked == other && othStacked == array;
-        }
-        var index = -1,
-            result = true,
-            seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
-  
-        stack.set(array, other);
-        stack.set(other, array);
-  
-        // Ignore non-index properties.
-        while (++index < arrLength) {
-          var arrValue = array[index],
-              othValue = other[index];
-  
-          if (customizer) {
-            var compared = isPartial
-              ? customizer(othValue, arrValue, index, other, array, stack)
-              : customizer(arrValue, othValue, index, array, other, stack);
-          }
-          if (compared !== undefined) {
-            if (compared) {
-              continue;
-            }
-            result = false;
-            break;
-          }
-          // Recursively compare arrays (susceptible to call stack limits).
-          if (seen) {
-            if (!arraySome(other, function(othValue, othIndex) {
-                  if (!cacheHas(seen, othIndex) &&
-                      (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
-                    return seen.push(othIndex);
-                  }
-                })) {
-              result = false;
-              break;
-            }
-          } else if (!(
-                arrValue === othValue ||
-                  equalFunc(arrValue, othValue, bitmask, customizer, stack)
-              )) {
-            result = false;
-            break;
-          }
-        }
-        stack['delete'](array);
-        stack['delete'](other);
-        return result;
-      }
-  
-      /**
-       * A specialized version of `baseIsEqualDeep` for comparing objects of
-       * the same `toStringTag`.
-       *
-       * **Note:** This function only supports comparing values with tags of
-       * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
-       *
-       * @private
-       * @param {Object} object The object to compare.
-       * @param {Object} other The other object to compare.
-       * @param {string} tag The `toStringTag` of the objects to compare.
-       * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
-       * @param {Function} customizer The function to customize comparisons.
-       * @param {Function} equalFunc The function to determine equivalents of values.
-       * @param {Object} stack Tracks traversed `object` and `other` objects.
-       * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
-       */
-      function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
-        switch (tag) {
-          case dataViewTag:
-            if ((object.byteLength != other.byteLength) ||
-                (object.byteOffset != other.byteOffset)) {
-              return false;
-            }
-            object = object.buffer;
-            other = other.buffer;
-  
-          case arrayBufferTag:
-            if ((object.byteLength != other.byteLength) ||
-                !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
-              return false;
-            }
-            return true;
-  
-          case boolTag:
-          case dateTag:
-          case numberTag:
-            // Coerce booleans to `1` or `0` and dates to milliseconds.
-            // Invalid dates are coerced to `NaN`.
-            return eq(+object, +other);
-  
-          case errorTag:
-            return object.name == other.name && object.message == other.message;
-  
-          case regexpTag:
-          case stringTag:
-            // Coerce regexes to strings and treat strings, primitives and objects,
-            // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
-            // for more details.
-            return object == (other + '');
-  
-          case mapTag:
-            var convert = mapToArray;
-  
-          case setTag:
-            var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
-            convert || (convert = setToArray);
-  
-            if (object.size != other.size && !isPartial) {
-              return false;
-            }
-            // Assume cyclic values are equal.
-            var stacked = stack.get(object);
-            if (stacked) {
-              return stacked == other;
-            }
-            bitmask |= COMPARE_UNORDERED_FLAG;
-  
-            // Recursively compare objects (susceptible to call stack limits).
-            stack.set(object, other);
-            var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
-            stack['delete'](object);
-            return result;
-  
-          case symbolTag:
-            if (symbolValueOf) {
-              return symbolValueOf.call(object) == symbolValueOf.call(other);
-            }
-        }
-        return false;
-      }
-  
-      /**
-       * A specialized version of `baseIsEqualDeep` for objects with support for
-       * partial deep comparisons.
-       *
-       * @private
-       * @param {Object} object The object to compare.
-       * @param {Object} other The other object to compare.
-       * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
-       * @param {Function} customizer The function to customize comparisons.
-       * @param {Function} equalFunc The function to determine equivalents of values.
-       * @param {Object} stack Tracks traversed `object` and `other` objects.
-       * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
-       */
-      function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
-        var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
-            objProps = getAllKeys(object),
-            objLength = objProps.length,
-            othProps = getAllKeys(other),
-            othLength = othProps.length;
-  
-        if (objLength != othLength && !isPartial) {
-          return false;
-        }
-        var index = objLength;
-        while (index--) {
-          var key = objProps[index];
-          if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
-            return false;
-          }
-        }
-        // Check that cyclic values are equal.
-        var objStacked = stack.get(object);
-        var othStacked = stack.get(other);
-        if (objStacked && othStacked) {
-          return objStacked == other && othStacked == object;
-        }
-        var result = true;
-        stack.set(object, other);
-        stack.set(other, object);
-  
-        var skipCtor = isPartial;
-        while (++index < objLength) {
-          key = objProps[index];
-          var objValue = object[key],
-              othValue = other[key];
-  
-          if (customizer) {
-            var compared = isPartial
-              ? customizer(othValue, objValue, key, other, object, stack)
-              : customizer(objValue, othValue, key, object, other, stack);
-          }
-          // Recursively compare objects (susceptible to call stack limits).
-          if (!(compared === undefined
-                ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
-                : compared
-              )) {
-            result = false;
-            break;
-          }
-          skipCtor || (skipCtor = key == 'constructor');
-        }
-        if (result && !skipCtor) {
-          var objCtor = object.constructor,
-              othCtor = other.constructor;
-  
-          // Non `Object` object instances with different constructors are not equal.
-          if (objCtor != othCtor &&
-              ('constructor' in object && 'constructor' in other) &&
-              !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
-                typeof othCtor == 'function' && othCtor instanceof othCtor)) {
-            result = false;
-          }
-        }
-        stack['delete'](object);
-        stack['delete'](other);
-        return result;
-      }
-  
-      /**
-       * A specialized version of `baseRest` which flattens the rest array.
-       *
-       * @private
-       * @param {Function} func The function to apply a rest parameter to.
-       * @returns {Function} Returns the new function.
-       */
-      function flatRest(func) {
-        return setToString(overRest(func, undefined, flatten), func + '');
-      }
-  
-      /**
-       * Creates an array of own enumerable property names and symbols of `object`.
-       *
-       * @private
-       * @param {Object} object The object to query.
-       * @returns {Array} Returns the array of property names and symbols.
-       */
-      function getAllKeys(object) {
-        return baseGetAllKeys(object, keys, getSymbols);
-      }
-  
-      /**
-       * Creates an array of own and inherited enumerable property names and
-       * symbols of `object`.
-       *
-       * @private
-       * @param {Object} object The object to query.
-       * @returns {Array} Returns the array of property names and symbols.
-       */
-      function getAllKeysIn(object) {
-        return baseGetAllKeys(object, keysIn, getSymbolsIn);
-      }
-  
-      /**
-       * Gets metadata for `func`.
-       *
-       * @private
-       * @param {Function} func The function to query.
-       * @returns {*} Returns the metadata for `func`.
-       */
-      var getData = !metaMap ? noop : function(func) {
-        return metaMap.get(func);
-      };
-  
-      /**
-       * Gets the name of `func`.
-       *
-       * @private
-       * @param {Function} func The function to query.
-       * @returns {string} Returns the function name.
-       */
-      function getFuncName(func) {
-        var result = (func.name + ''),
-            array = realNames[result],
-            length = hasOwnProperty.call(realNames, result) ? array.length : 0;
-  
-        while (length--) {
-          var data = array[length],
-              otherFunc = data.func;
-          if (otherFunc == null || otherFunc == func) {
-            return data.name;
-          }
-        }
-        return result;
-      }
-  
-      /**
-       * Gets the argument placeholder value for `func`.
-       *
-       * @private
-       * @param {Function} func The function to inspect.
-       * @returns {*} Returns the placeholder value.
-       */
-      function getHolder(func) {
-        var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;
-        return object.placeholder;
-      }
-  
-      /**
-       * Gets the appropriate "iteratee" function. If `_.iteratee` is customized,
-       * this function returns the custom method, otherwise it returns `baseIteratee`.
-       * If arguments are provided, the chosen function is invoked with them and
-       * its result is returned.
-       *
-       * @private
-       * @param {*} [value] The value to convert to an iteratee.
-       * @param {number} [arity] The arity of the created iteratee.
-       * @returns {Function} Returns the chosen function or its result.
-       */
-      function getIteratee() {
-        var result = lodash.iteratee || iteratee;
-        result = result === iteratee ? baseIteratee : result;
-        return arguments.length ? result(arguments[0], arguments[1]) : result;
-      }
-  
-      /**
-       * Gets the data for `map`.
-       *
-       * @private
-       * @param {Object} map The map to query.
-       * @param {string} key The reference key.
-       * @returns {*} Returns the map data.
-       */
-      function getMapData(map, key) {
-        var data = map.__data__;
-        return isKeyable(key)
-          ? data[typeof key == 'string' ? 'string' : 'hash']
-          : data.map;
-      }
-  
-      /**
-       * Gets the property names, values, and compare flags of `object`.
-       *
-       * @private
-       * @param {Object} object The object to query.
-       * @returns {Array} Returns the match data of `object`.
-       */
-      function getMatchData(object) {
-        var result = keys(object),
-            length = result.length;
-  
-        while (length--) {
-          var key = result[length],
-              value = object[key];
-  
-          result[length] = [key, value, isStrictComparable(value)];
-        }
-        return result;
-      }
-  
-      /**
-       * Gets the native function at `key` of `object`.
-       *
-       * @private
-       * @param {Object} object The object to query.
-       * @param {string} key The key of the method to get.
-       * @returns {*} Returns the function if it's native, else `undefined`.
-       */
-      function getNative(object, key) {
-        var value = getValue(object, key);
-        return baseIsNative(value) ? value : undefined;
-      }
-  
-      /**
-       * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
-       *
-       * @private
-       * @param {*} value The value to query.
-       * @returns {string} Returns the raw `toStringTag`.
-       */
-      function getRawTag(value) {
-        var isOwn = hasOwnProperty.call(value, symToStringTag),
-            tag = value[symToStringTag];
-  
-        try {
-          value[symToStringTag] = undefined;
-          var unmasked = true;
-        } catch (e) {}
-  
-        var result = nativeObjectToString.call(value);
-        if (unmasked) {
-          if (isOwn) {
-            value[symToStringTag] = tag;
-          } else {
-            delete value[symToStringTag];
-          }
-        }
-        return result;
-      }
-  
-      /**
-       * Creates an array of the own enumerable symbols of `object`.
-       *
-       * @private
-       * @param {Object} object The object to query.
-       * @returns {Array} Returns the array of symbols.
-       */
-      var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
-        if (object == null) {
-          return [];
-        }
-        object = Object(object);
-        return arrayFilter(nativeGetSymbols(object), function(symbol) {
-          return propertyIsEnumerable.call(object, symbol);
-        });
-      };
-  
-      /**
-       * Creates an array of the own and inherited enumerable symbols of `object`.
-       *
-       * @private
-       * @param {Object} object The object to query.
-       * @returns {Array} Returns the array of symbols.
-       */
-      var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
-        var result = [];
-        while (object) {
-          arrayPush(result, getSymbols(object));
-          object = getPrototype(object);
-        }
-        return result;
-      };
-  
-      /**
-       * Gets the `toStringTag` of `value`.
-       *
-       * @private
-       * @param {*} value The value to query.
-       * @returns {string} Returns the `toStringTag`.
-       */
-      var getTag = baseGetTag;
-  
-      // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
-      if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
-          (Map && getTag(new Map) != mapTag) ||
-          (Promise && getTag(Promise.resolve()) != promiseTag) ||
-          (Set && getTag(new Set) != setTag) ||
-          (WeakMap && getTag(new WeakMap) != weakMapTag)) {
-        getTag = function(value) {
-          var result = baseGetTag(value),
-              Ctor = result == objectTag ? value.constructor : undefined,
-              ctorString = Ctor ? toSource(Ctor) : '';
-  
-          if (ctorString) {
-            switch (ctorString) {
-              case dataViewCtorString: return dataViewTag;
-              case mapCtorString: return mapTag;
-              case promiseCtorString: return promiseTag;
-              case setCtorString: return setTag;
-              case weakMapCtorString: return weakMapTag;
-            }
-          }
-          return result;
-        };
-      }
-  
-      /**
-       * Gets the view, applying any `transforms` to the `start` and `end` positions.
-       *
-       * @private
-       * @param {number} start The start of the view.
-       * @param {number} end The end of the view.
-       * @param {Array} transforms The transformations to apply to the view.
-       * @returns {Object} Returns an object containing the `start` and `end`
-       *  positions of the view.
-       */
-      function getView(start, end, transforms) {
-        var index = -1,
-            length = transforms.length;
-  
-        while (++index < length) {
-          var data = transforms[index],
-              size = data.size;
-  
-          switch (data.type) {
-            case 'drop':      start += size; break;
-            case 'dropRight': end -= size; break;
-            case 'take':      end = nativeMin(end, start + size); break;
-            case 'takeRight': start = nativeMax(start, end - size); break;
-          }
-        }
-        return { 'start': start, 'end': end };
-      }
-  
-      /**
-       * Extracts wrapper details from the `source` body comment.
-       *
-       * @private
-       * @param {string} source The source to inspect.
-       * @returns {Array} Returns the wrapper details.
-       */
-      function getWrapDetails(source) {
-        var match = source.match(reWrapDetails);
-        return match ? match[1].split(reSplitDetails) : [];
-      }
-  
-      /**
-       * Checks if `path` exists on `object`.
-       *
-       * @private
-       * @param {Object} object The object to query.
-       * @param {Array|string} path The path to check.
-       * @param {Function} hasFunc The function to check properties.
-       * @returns {boolean} Returns `true` if `path` exists, else `false`.
-       */
-      function hasPath(object, path, hasFunc) {
-        path = castPath(path, object);
-  
-        var index = -1,
-            length = path.length,
-            result = false;
-  
-        while (++index < length) {
-          var key = toKey(path[index]);
-          if (!(result = object != null && hasFunc(object, key))) {
-            break;
-          }
-          object = object[key];
-        }
-        if (result || ++index != length) {
-          return result;
-        }
-        length = object == null ? 0 : object.length;
-        return !!length && isLength(length) && isIndex(key, length) &&
-          (isArray(object) || isArguments(object));
-      }
-  
-      /**
-       * Initializes an array clone.
-       *
-       * @private
-       * @param {Array} array The array to clone.
-       * @returns {Array} Returns the initialized clone.
-       */
-      function initCloneArray(array) {
-        var length = array.length,
-            result = new array.constructor(length);
-  
-        // Add properties assigned by `RegExp#exec`.
-        if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
-          result.index = array.index;
-          result.input = array.input;
-        }
-        return result;
-      }
-  
-      /**
-       * Initializes an object clone.
-       *
-       * @private
-       * @param {Object} object The object to clone.
-       * @returns {Object} Returns the initialized clone.
-       */
-      function initCloneObject(object) {
-        return (typeof object.constructor == 'function' && !isPrototype(object))
-          ? baseCreate(getPrototype(object))
-          : {};
-      }
-  
-      /**
-       * Initializes an object clone based on its `toStringTag`.
-       *
-       * **Note:** This function only supports cloning values with tags of
-       * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.
-       *
-       * @private
-       * @param {Object} object The object to clone.
-       * @param {string} tag The `toStringTag` of the object to clone.
-       * @param {boolean} [isDeep] Specify a deep clone.
-       * @returns {Object} Returns the initialized clone.
-       */
-      function initCloneByTag(object, tag, isDeep) {
-        var Ctor = object.constructor;
-        switch (tag) {
-          case arrayBufferTag:
-            return cloneArrayBuffer(object);
-  
-          case boolTag:
-          case dateTag:
-            return new Ctor(+object);
-  
-          case dataViewTag:
-            return cloneDataView(object, isDeep);
-  
-          case float32Tag: case float64Tag:
-          case int8Tag: case int16Tag: case int32Tag:
-          case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
-            return cloneTypedArray(object, isDeep);
-  
-          case mapTag:
-            return new Ctor;
-  
-          case numberTag:
-          case stringTag:
-            return new Ctor(object);
-  
-          case regexpTag:
-            return cloneRegExp(object);
-  
-          case setTag:
-            return new Ctor;
-  
-          case symbolTag:
-            return cloneSymbol(object);
-        }
-      }
-  
-      /**
-       * Inserts wrapper `details` in a comment at the top of the `source` body.
-       *
-       * @private
-       * @param {string} source The source to modify.
-       * @returns {Array} details The details to insert.
-       * @returns {string} Returns the modified source.
-       */
-      function insertWrapDetails(source, details) {
-        var length = details.length;
-        if (!length) {
-          return source;
-        }
-        var lastIndex = length - 1;
-        details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];
-        details = details.join(length > 2 ? ', ' : ' ');
-        return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n');
-      }
-  
-      /**
-       * Checks if `value` is a flattenable `arguments` object or array.
-       *
-       * @private
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
-       */
-      function isFlattenable(value) {
-        return isArray(value) || isArguments(value) ||
-          !!(spreadableSymbol && value && value[spreadableSymbol]);
-      }
-  
-      /**
-       * Checks if `value` is a valid array-like index.
-       *
-       * @private
-       * @param {*} value The value to check.
-       * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
-       * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
-       */
-      function isIndex(value, length) {
-        var type = typeof value;
-        length = length == null ? MAX_SAFE_INTEGER : length;
-  
-        return !!length &&
-          (type == 'number' ||
-            (type != 'symbol' && reIsUint.test(value))) &&
-              (value > -1 && value % 1 == 0 && value < length);
-      }
-  
-      /**
-       * Checks if the given arguments are from an iteratee call.
-       *
-       * @private
-       * @param {*} value The potential iteratee value argument.
-       * @param {*} index The potential iteratee index or key argument.
-       * @param {*} object The potential iteratee object argument.
-       * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
-       *  else `false`.
-       */
-      function isIterateeCall(value, index, object) {
-        if (!isObject(object)) {
-          return false;
-        }
-        var type = typeof index;
-        if (type == 'number'
-              ? (isArrayLike(object) && isIndex(index, object.length))
-              : (type == 'string' && index in object)
-            ) {
-          return eq(object[index], value);
-        }
-        return false;
-      }
-  
-      /**
-       * Checks if `value` is a property name and not a property path.
-       *
-       * @private
-       * @param {*} value The value to check.
-       * @param {Object} [object] The object to query keys on.
-       * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
-       */
-      function isKey(value, object) {
-        if (isArray(value)) {
-          return false;
-        }
-        var type = typeof value;
-        if (type == 'number' || type == 'symbol' || type == 'boolean' ||
-            value == null || isSymbol(value)) {
-          return true;
-        }
-        return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
-          (object != null && value in Object(object));
-      }
-  
-      /**
-       * Checks if `value` is suitable for use as unique object key.
-       *
-       * @private
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
-       */
-      function isKeyable(value) {
-        var type = typeof value;
-        return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
-          ? (value !== '__proto__')
-          : (value === null);
-      }
-  
-      /**
-       * Checks if `func` has a lazy counterpart.
-       *
-       * @private
-       * @param {Function} func The function to check.
-       * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
-       *  else `false`.
-       */
-      function isLaziable(func) {
-        var funcName = getFuncName(func),
-            other = lodash[funcName];
-  
-        if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
-          return false;
-        }
-        if (func === other) {
-          return true;
-        }
-        var data = getData(other);
-        return !!data && func === data[0];
-      }
-  
-      /**
-       * Checks if `func` has its source masked.
-       *
-       * @private
-       * @param {Function} func The function to check.
-       * @returns {boolean} Returns `true` if `func` is masked, else `false`.
-       */
-      function isMasked(func) {
-        return !!maskSrcKey && (maskSrcKey in func);
-      }
-  
-      /**
-       * Checks if `func` is capable of being masked.
-       *
-       * @private
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `func` is maskable, else `false`.
-       */
-      var isMaskable = coreJsData ? isFunction : stubFalse;
-  
-      /**
-       * Checks if `value` is likely a prototype object.
-       *
-       * @private
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
-       */
-      function isPrototype(value) {
-        var Ctor = value && value.constructor,
-            proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
-  
-        return value === proto;
-      }
-  
-      /**
-       * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
-       *
-       * @private
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` if suitable for strict
-       *  equality comparisons, else `false`.
-       */
-      function isStrictComparable(value) {
-        return value === value && !isObject(value);
-      }
-  
-      /**
-       * A specialized version of `matchesProperty` for source values suitable
-       * for strict equality comparisons, i.e. `===`.
-       *
-       * @private
-       * @param {string} key The key of the property to get.
-       * @param {*} srcValue The value to match.
-       * @returns {Function} Returns the new spec function.
-       */
-      function matchesStrictComparable(key, srcValue) {
-        return function(object) {
-          if (object == null) {
-            return false;
-          }
-          return object[key] === srcValue &&
-            (srcValue !== undefined || (key in Object(object)));
-        };
-      }
-  
-      /**
-       * A specialized version of `_.memoize` which clears the memoized function's
-       * cache when it exceeds `MAX_MEMOIZE_SIZE`.
-       *
-       * @private
-       * @param {Function} func The function to have its output memoized.
-       * @returns {Function} Returns the new memoized function.
-       */
-      function memoizeCapped(func) {
-        var result = memoize(func, function(key) {
-          if (cache.size === MAX_MEMOIZE_SIZE) {
-            cache.clear();
-          }
-          return key;
-        });
-  
-        var cache = result.cache;
-        return result;
-      }
-  
-      /**
-       * Merges the function metadata of `source` into `data`.
-       *
-       * Merging metadata reduces the number of wrappers used to invoke a function.
-       * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`
-       * may be applied regardless of execution order. Methods like `_.ary` and
-       * `_.rearg` modify function arguments, making the order in which they are
-       * executed important, preventing the merging of metadata. However, we make
-       * an exception for a safe combined case where curried functions have `_.ary`
-       * and or `_.rearg` applied.
-       *
-       * @private
-       * @param {Array} data The destination metadata.
-       * @param {Array} source The source metadata.
-       * @returns {Array} Returns `data`.
-       */
-      function mergeData(data, source) {
-        var bitmask = data[1],
-            srcBitmask = source[1],
-            newBitmask = bitmask | srcBitmask,
-            isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
-  
-        var isCombo =
-          ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||
-          ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||
-          ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));
-  
-        // Exit early if metadata can't be merged.
-        if (!(isCommon || isCombo)) {
-          return data;
-        }
-        // Use source `thisArg` if available.
-        if (srcBitmask & WRAP_BIND_FLAG) {
-          data[2] = source[2];
-          // Set when currying a bound function.
-          newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
-        }
-        // Compose partial arguments.
-        var value = source[3];
-        if (value) {
-          var partials = data[3];
-          data[3] = partials ? composeArgs(partials, value, source[4]) : value;
-          data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];
-        }
-        // Compose partial right arguments.
-        value = source[5];
-        if (value) {
-          partials = data[5];
-          data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;
-          data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];
-        }
-        // Use source `argPos` if available.
-        value = source[7];
-        if (value) {
-          data[7] = value;
-        }
-        // Use source `ary` if it's smaller.
-        if (srcBitmask & WRAP_ARY_FLAG) {
-          data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
-        }
-        // Use source `arity` if one is not provided.
-        if (data[9] == null) {
-          data[9] = source[9];
-        }
-        // Use source `func` and merge bitmasks.
-        data[0] = source[0];
-        data[1] = newBitmask;
-  
-        return data;
-      }
-  
-      /**
-       * This function is like
-       * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
-       * except that it includes inherited enumerable properties.
-       *
-       * @private
-       * @param {Object} object The object to query.
-       * @returns {Array} Returns the array of property names.
-       */
-      function nativeKeysIn(object) {
-        var result = [];
-        if (object != null) {
-          for (var key in Object(object)) {
-            result.push(key);
-          }
-        }
-        return result;
-      }
-  
-      /**
-       * Converts `value` to a string using `Object.prototype.toString`.
-       *
-       * @private
-       * @param {*} value The value to convert.
-       * @returns {string} Returns the converted string.
-       */
-      function objectToString(value) {
-        return nativeObjectToString.call(value);
-      }
-  
-      /**
-       * A specialized version of `baseRest` which transforms the rest array.
-       *
-       * @private
-       * @param {Function} func The function to apply a rest parameter to.
-       * @param {number} [start=func.length-1] The start position of the rest parameter.
-       * @param {Function} transform The rest array transform.
-       * @returns {Function} Returns the new function.
-       */
-      function overRest(func, start, transform) {
-        start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
-        return function() {
-          var args = arguments,
-              index = -1,
-              length = nativeMax(args.length - start, 0),
-              array = Array(length);
-  
-          while (++index < length) {
-            array[index] = args[start + index];
-          }
-          index = -1;
-          var otherArgs = Array(start + 1);
-          while (++index < start) {
-            otherArgs[index] = args[index];
-          }
-          otherArgs[start] = transform(array);
-          return apply(func, this, otherArgs);
-        };
-      }
-  
-      /**
-       * Gets the parent value at `path` of `object`.
-       *
-       * @private
-       * @param {Object} object The object to query.
-       * @param {Array} path The path to get the parent value of.
-       * @returns {*} Returns the parent value.
-       */
-      function parent(object, path) {
-        return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
-      }
-  
-      /**
-       * Reorder `array` according to the specified indexes where the element at
-       * the first index is assigned as the first element, the element at
-       * the second index is assigned as the second element, and so on.
-       *
-       * @private
-       * @param {Array} array The array to reorder.
-       * @param {Array} indexes The arranged array indexes.
-       * @returns {Array} Returns `array`.
-       */
-      function reorder(array, indexes) {
-        var arrLength = array.length,
-            length = nativeMin(indexes.length, arrLength),
-            oldArray = copyArray(array);
-  
-        while (length--) {
-          var index = indexes[length];
-          array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
-        }
-        return array;
-      }
-  
-      /**
-       * Gets the value at `key`, unless `key` is "__proto__" or "constructor".
-       *
-       * @private
-       * @param {Object} object The object to query.
-       * @param {string} key The key of the property to get.
-       * @returns {*} Returns the property value.
-       */
-      function safeGet(object, key) {
-        if (key === 'constructor' && typeof object[key] === 'function') {
-          return;
-        }
-  
-        if (key == '__proto__') {
-          return;
-        }
-  
-        return object[key];
-      }
-  
-      /**
-       * Sets metadata for `func`.
-       *
-       * **Note:** If this function becomes hot, i.e. is invoked a lot in a short
-       * period of time, it will trip its breaker and transition to an identity
-       * function to avoid garbage collection pauses in V8. See
-       * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)
-       * for more details.
-       *
-       * @private
-       * @param {Function} func The function to associate metadata with.
-       * @param {*} data The metadata.
-       * @returns {Function} Returns `func`.
-       */
-      var setData = shortOut(baseSetData);
-  
-      /**
-       * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).
-       *
-       * @private
-       * @param {Function} func The function to delay.
-       * @param {number} wait The number of milliseconds to delay invocation.
-       * @returns {number|Object} Returns the timer id or timeout object.
-       */
-      var setTimeout = ctxSetTimeout || function(func, wait) {
-        return root.setTimeout(func, wait);
-      };
-  
-      /**
-       * Sets the `toString` method of `func` to return `string`.
-       *
-       * @private
-       * @param {Function} func The function to modify.
-       * @param {Function} string The `toString` result.
-       * @returns {Function} Returns `func`.
-       */
-      var setToString = shortOut(baseSetToString);
-  
-      /**
-       * Sets the `toString` method of `wrapper` to mimic the source of `reference`
-       * with wrapper details in a comment at the top of the source body.
-       *
-       * @private
-       * @param {Function} wrapper The function to modify.
-       * @param {Function} reference The reference function.
-       * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
-       * @returns {Function} Returns `wrapper`.
-       */
-      function setWrapToString(wrapper, reference, bitmask) {
-        var source = (reference + '');
-        return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));
-      }
-  
-      /**
-       * Creates a function that'll short out and invoke `identity` instead
-       * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
-       * milliseconds.
-       *
-       * @private
-       * @param {Function} func The function to restrict.
-       * @returns {Function} Returns the new shortable function.
-       */
-      function shortOut(func) {
-        var count = 0,
-            lastCalled = 0;
-  
-        return function() {
-          var stamp = nativeNow(),
-              remaining = HOT_SPAN - (stamp - lastCalled);
-  
-          lastCalled = stamp;
-          if (remaining > 0) {
-            if (++count >= HOT_COUNT) {
-              return arguments[0];
-            }
-          } else {
-            count = 0;
-          }
-          return func.apply(undefined, arguments);
-        };
-      }
-  
-      /**
-       * A specialized version of `_.shuffle` which mutates and sets the size of `array`.
-       *
-       * @private
-       * @param {Array} array The array to shuffle.
-       * @param {number} [size=array.length] The size of `array`.
-       * @returns {Array} Returns `array`.
-       */
-      function shuffleSelf(array, size) {
-        var index = -1,
-            length = array.length,
-            lastIndex = length - 1;
-  
-        size = size === undefined ? length : size;
-        while (++index < size) {
-          var rand = baseRandom(index, lastIndex),
-              value = array[rand];
-  
-          array[rand] = array[index];
-          array[index] = value;
-        }
-        array.length = size;
-        return array;
-      }
-  
-      /**
-       * Converts `string` to a property path array.
-       *
-       * @private
-       * @param {string} string The string to convert.
-       * @returns {Array} Returns the property path array.
-       */
-      var stringToPath = memoizeCapped(function(string) {
-        var result = [];
-        if (string.charCodeAt(0) === 46 /* . */) {
-          result.push('');
-        }
-        string.replace(rePropName, function(match, number, quote, subString) {
-          result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
-        });
-        return result;
-      });
-  
-      /**
-       * Converts `value` to a string key if it's not a string or symbol.
-       *
-       * @private
-       * @param {*} value The value to inspect.
-       * @returns {string|symbol} Returns the key.
-       */
-      function toKey(value) {
-        if (typeof value == 'string' || isSymbol(value)) {
-          return value;
-        }
-        var result = (value + '');
-        return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
-      }
-  
-      /**
-       * Converts `func` to its source code.
-       *
-       * @private
-       * @param {Function} func The function to convert.
-       * @returns {string} Returns the source code.
-       */
-      function toSource(func) {
-        if (func != null) {
-          try {
-            return funcToString.call(func);
-          } catch (e) {}
-          try {
-            return (func + '');
-          } catch (e) {}
-        }
-        return '';
-      }
-  
-      /**
-       * Updates wrapper `details` based on `bitmask` flags.
-       *
-       * @private
-       * @returns {Array} details The details to modify.
-       * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
-       * @returns {Array} Returns `details`.
-       */
-      function updateWrapDetails(details, bitmask) {
-        arrayEach(wrapFlags, function(pair) {
-          var value = '_.' + pair[0];
-          if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {
-            details.push(value);
-          }
-        });
-        return details.sort();
-      }
-  
-      /**
-       * Creates a clone of `wrapper`.
-       *
-       * @private
-       * @param {Object} wrapper The wrapper to clone.
-       * @returns {Object} Returns the cloned wrapper.
-       */
-      function wrapperClone(wrapper) {
-        if (wrapper instanceof LazyWrapper) {
-          return wrapper.clone();
-        }
-        var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
-        result.__actions__ = copyArray(wrapper.__actions__);
-        result.__index__  = wrapper.__index__;
-        result.__values__ = wrapper.__values__;
-        return result;
-      }
-  
-      /*------------------------------------------------------------------------*/
-  
-      /**
-       * Creates an array of elements split into groups the length of `size`.
-       * If `array` can't be split evenly, the final chunk will be the remaining
-       * elements.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Array
-       * @param {Array} array The array to process.
-       * @param {number} [size=1] The length of each chunk
-       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-       * @returns {Array} Returns the new array of chunks.
-       * @example
-       *
-       * _.chunk(['a', 'b', 'c', 'd'], 2);
-       * // => [['a', 'b'], ['c', 'd']]
-       *
-       * _.chunk(['a', 'b', 'c', 'd'], 3);
-       * // => [['a', 'b', 'c'], ['d']]
-       */
-      function chunk(array, size, guard) {
-        if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {
-          size = 1;
-        } else {
-          size = nativeMax(toInteger(size), 0);
-        }
-        var length = array == null ? 0 : array.length;
-        if (!length || size < 1) {
-          return [];
-        }
-        var index = 0,
-            resIndex = 0,
-            result = Array(nativeCeil(length / size));
-  
-        while (index < length) {
-          result[resIndex++] = baseSlice(array, index, (index += size));
-        }
-        return result;
-      }
-  
-      /**
-       * Creates an array with all falsey values removed. The values `false`, `null`,
-       * `0`, `""`, `undefined`, and `NaN` are falsey.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Array
-       * @param {Array} array The array to compact.
-       * @returns {Array} Returns the new array of filtered values.
-       * @example
-       *
-       * _.compact([0, 1, false, 2, '', 3]);
-       * // => [1, 2, 3]
-       */
-      function compact(array) {
-        var index = -1,
-            length = array == null ? 0 : array.length,
-            resIndex = 0,
-            result = [];
-  
-        while (++index < length) {
-          var value = array[index];
-          if (value) {
-            result[resIndex++] = value;
-          }
-        }
-        return result;
-      }
-  
-      /**
-       * Creates a new array concatenating `array` with any additional arrays
-       * and/or values.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Array
-       * @param {Array} array The array to concatenate.
-       * @param {...*} [values] The values to concatenate.
-       * @returns {Array} Returns the new concatenated array.
-       * @example
-       *
-       * var array = [1];
-       * var other = _.concat(array, 2, [3], [[4]]);
-       *
-       * console.log(other);
-       * // => [1, 2, 3, [4]]
-       *
-       * console.log(array);
-       * // => [1]
-       */
-      function concat() {
-        var length = arguments.length;
-        if (!length) {
-          return [];
-        }
-        var args = Array(length - 1),
-            array = arguments[0],
-            index = length;
-  
-        while (index--) {
-          args[index - 1] = arguments[index];
-        }
-        return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
-      }
-  
-      /**
-       * Creates an array of `array` values not included in the other given arrays
-       * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-       * for equality comparisons. The order and references of result values are
-       * determined by the first array.
-       *
-       * **Note:** Unlike `_.pullAll`, this method returns a new array.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Array
-       * @param {Array} array The array to inspect.
-       * @param {...Array} [values] The values to exclude.
-       * @returns {Array} Returns the new array of filtered values.
-       * @see _.without, _.xor
-       * @example
-       *
-       * _.difference([2, 1], [2, 3]);
-       * // => [1]
-       */
-      var difference = baseRest(function(array, values) {
-        return isArrayLikeObject(array)
-          ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))
-          : [];
-      });
-  
-      /**
-       * This method is like `_.difference` except that it accepts `iteratee` which
-       * is invoked for each element of `array` and `values` to generate the criterion
-       * by which they're compared. The order and references of result values are
-       * determined by the first array. The iteratee is invoked with one argument:
-       * (value).
-       *
-       * **Note:** Unlike `_.pullAllBy`, this method returns a new array.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Array
-       * @param {Array} array The array to inspect.
-       * @param {...Array} [values] The values to exclude.
-       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-       * @returns {Array} Returns the new array of filtered values.
-       * @example
-       *
-       * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);
-       * // => [1.2]
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
-       * // => [{ 'x': 2 }]
-       */
-      var differenceBy = baseRest(function(array, values) {
-        var iteratee = last(values);
-        if (isArrayLikeObject(iteratee)) {
-          iteratee = undefined;
-        }
-        return isArrayLikeObject(array)
-          ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))
-          : [];
-      });
-  
-      /**
-       * This method is like `_.difference` except that it accepts `comparator`
-       * which is invoked to compare elements of `array` to `values`. The order and
-       * references of result values are determined by the first array. The comparator
-       * is invoked with two arguments: (arrVal, othVal).
-       *
-       * **Note:** Unlike `_.pullAllWith`, this method returns a new array.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Array
-       * @param {Array} array The array to inspect.
-       * @param {...Array} [values] The values to exclude.
-       * @param {Function} [comparator] The comparator invoked per element.
-       * @returns {Array} Returns the new array of filtered values.
-       * @example
-       *
-       * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
-       *
-       * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);
-       * // => [{ 'x': 2, 'y': 1 }]
-       */
-      var differenceWith = baseRest(function(array, values) {
-        var comparator = last(values);
-        if (isArrayLikeObject(comparator)) {
-          comparator = undefined;
-        }
-        return isArrayLikeObject(array)
-          ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)
-          : [];
-      });
-  
-      /**
-       * Creates a slice of `array` with `n` elements dropped from the beginning.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.5.0
-       * @category Array
-       * @param {Array} array The array to query.
-       * @param {number} [n=1] The number of elements to drop.
-       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-       * @returns {Array} Returns the slice of `array`.
-       * @example
-       *
-       * _.drop([1, 2, 3]);
-       * // => [2, 3]
-       *
-       * _.drop([1, 2, 3], 2);
-       * // => [3]
-       *
-       * _.drop([1, 2, 3], 5);
-       * // => []
-       *
-       * _.drop([1, 2, 3], 0);
-       * // => [1, 2, 3]
-       */
-      function drop(array, n, guard) {
-        var length = array == null ? 0 : array.length;
-        if (!length) {
-          return [];
-        }
-        n = (guard || n === undefined) ? 1 : toInteger(n);
-        return baseSlice(array, n < 0 ? 0 : n, length);
-      }
-  
-      /**
-       * Creates a slice of `array` with `n` elements dropped from the end.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Array
-       * @param {Array} array The array to query.
-       * @param {number} [n=1] The number of elements to drop.
-       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-       * @returns {Array} Returns the slice of `array`.
-       * @example
-       *
-       * _.dropRight([1, 2, 3]);
-       * // => [1, 2]
-       *
-       * _.dropRight([1, 2, 3], 2);
-       * // => [1]
-       *
-       * _.dropRight([1, 2, 3], 5);
-       * // => []
-       *
-       * _.dropRight([1, 2, 3], 0);
-       * // => [1, 2, 3]
-       */
-      function dropRight(array, n, guard) {
-        var length = array == null ? 0 : array.length;
-        if (!length) {
-          return [];
-        }
-        n = (guard || n === undefined) ? 1 : toInteger(n);
-        n = length - n;
-        return baseSlice(array, 0, n < 0 ? 0 : n);
-      }
-  
-      /**
-       * Creates a slice of `array` excluding elements dropped from the end.
-       * Elements are dropped until `predicate` returns falsey. The predicate is
-       * invoked with three arguments: (value, index, array).
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Array
-       * @param {Array} array The array to query.
-       * @param {Function} [predicate=_.identity] The function invoked per iteration.
-       * @returns {Array} Returns the slice of `array`.
-       * @example
-       *
-       * var users = [
-       *   { 'user': 'barney',  'active': true },
-       *   { 'user': 'fred',    'active': false },
-       *   { 'user': 'pebbles', 'active': false }
-       * ];
-       *
-       * _.dropRightWhile(users, function(o) { return !o.active; });
-       * // => objects for ['barney']
-       *
-       * // The `_.matches` iteratee shorthand.
-       * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });
-       * // => objects for ['barney', 'fred']
-       *
-       * // The `_.matchesProperty` iteratee shorthand.
-       * _.dropRightWhile(users, ['active', false]);
-       * // => objects for ['barney']
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.dropRightWhile(users, 'active');
-       * // => objects for ['barney', 'fred', 'pebbles']
-       */
-      function dropRightWhile(array, predicate) {
-        return (array && array.length)
-          ? baseWhile(array, getIteratee(predicate, 3), true, true)
-          : [];
-      }
-  
-      /**
-       * Creates a slice of `array` excluding elements dropped from the beginning.
-       * Elements are dropped until `predicate` returns falsey. The predicate is
-       * invoked with three arguments: (value, index, array).
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Array
-       * @param {Array} array The array to query.
-       * @param {Function} [predicate=_.identity] The function invoked per iteration.
-       * @returns {Array} Returns the slice of `array`.
-       * @example
-       *
-       * var users = [
-       *   { 'user': 'barney',  'active': false },
-       *   { 'user': 'fred',    'active': false },
-       *   { 'user': 'pebbles', 'active': true }
-       * ];
-       *
-       * _.dropWhile(users, function(o) { return !o.active; });
-       * // => objects for ['pebbles']
-       *
-       * // The `_.matches` iteratee shorthand.
-       * _.dropWhile(users, { 'user': 'barney', 'active': false });
-       * // => objects for ['fred', 'pebbles']
-       *
-       * // The `_.matchesProperty` iteratee shorthand.
-       * _.dropWhile(users, ['active', false]);
-       * // => objects for ['pebbles']
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.dropWhile(users, 'active');
-       * // => objects for ['barney', 'fred', 'pebbles']
-       */
-      function dropWhile(array, predicate) {
-        return (array && array.length)
-          ? baseWhile(array, getIteratee(predicate, 3), true)
-          : [];
-      }
-  
-      /**
-       * Fills elements of `array` with `value` from `start` up to, but not
-       * including, `end`.
-       *
-       * **Note:** This method mutates `array`.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.2.0
-       * @category Array
-       * @param {Array} array The array to fill.
-       * @param {*} value The value to fill `array` with.
-       * @param {number} [start=0] The start position.
-       * @param {number} [end=array.length] The end position.
-       * @returns {Array} Returns `array`.
-       * @example
-       *
-       * var array = [1, 2, 3];
-       *
-       * _.fill(array, 'a');
-       * console.log(array);
-       * // => ['a', 'a', 'a']
-       *
-       * _.fill(Array(3), 2);
-       * // => [2, 2, 2]
-       *
-       * _.fill([4, 6, 8, 10], '*', 1, 3);
-       * // => [4, '*', '*', 10]
-       */
-      function fill(array, value, start, end) {
-        var length = array == null ? 0 : array.length;
-        if (!length) {
-          return [];
-        }
-        if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {
-          start = 0;
-          end = length;
-        }
-        return baseFill(array, value, start, end);
-      }
-  
-      /**
-       * This method is like `_.find` except that it returns the index of the first
-       * element `predicate` returns truthy for instead of the element itself.
-       *
-       * @static
-       * @memberOf _
-       * @since 1.1.0
-       * @category Array
-       * @param {Array} array The array to inspect.
-       * @param {Function} [predicate=_.identity] The function invoked per iteration.
-       * @param {number} [fromIndex=0] The index to search from.
-       * @returns {number} Returns the index of the found element, else `-1`.
-       * @example
-       *
-       * var users = [
-       *   { 'user': 'barney',  'active': false },
-       *   { 'user': 'fred',    'active': false },
-       *   { 'user': 'pebbles', 'active': true }
-       * ];
-       *
-       * _.findIndex(users, function(o) { return o.user == 'barney'; });
-       * // => 0
-       *
-       * // The `_.matches` iteratee shorthand.
-       * _.findIndex(users, { 'user': 'fred', 'active': false });
-       * // => 1
-       *
-       * // The `_.matchesProperty` iteratee shorthand.
-       * _.findIndex(users, ['active', false]);
-       * // => 0
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.findIndex(users, 'active');
-       * // => 2
-       */
-      function findIndex(array, predicate, fromIndex) {
-        var length = array == null ? 0 : array.length;
-        if (!length) {
-          return -1;
-        }
-        var index = fromIndex == null ? 0 : toInteger(fromIndex);
-        if (index < 0) {
-          index = nativeMax(length + index, 0);
-        }
-        return baseFindIndex(array, getIteratee(predicate, 3), index);
-      }
-  
-      /**
-       * This method is like `_.findIndex` except that it iterates over elements
-       * of `collection` from right to left.
-       *
-       * @static
-       * @memberOf _
-       * @since 2.0.0
-       * @category Array
-       * @param {Array} array The array to inspect.
-       * @param {Function} [predicate=_.identity] The function invoked per iteration.
-       * @param {number} [fromIndex=array.length-1] The index to search from.
-       * @returns {number} Returns the index of the found element, else `-1`.
-       * @example
-       *
-       * var users = [
-       *   { 'user': 'barney',  'active': true },
-       *   { 'user': 'fred',    'active': false },
-       *   { 'user': 'pebbles', 'active': false }
-       * ];
-       *
-       * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
-       * // => 2
-       *
-       * // The `_.matches` iteratee shorthand.
-       * _.findLastIndex(users, { 'user': 'barney', 'active': true });
-       * // => 0
-       *
-       * // The `_.matchesProperty` iteratee shorthand.
-       * _.findLastIndex(users, ['active', false]);
-       * // => 2
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.findLastIndex(users, 'active');
-       * // => 0
-       */
-      function findLastIndex(array, predicate, fromIndex) {
-        var length = array == null ? 0 : array.length;
-        if (!length) {
-          return -1;
-        }
-        var index = length - 1;
-        if (fromIndex !== undefined) {
-          index = toInteger(fromIndex);
-          index = fromIndex < 0
-            ? nativeMax(length + index, 0)
-            : nativeMin(index, length - 1);
-        }
-        return baseFindIndex(array, getIteratee(predicate, 3), index, true);
-      }
-  
-      /**
-       * Flattens `array` a single level deep.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Array
-       * @param {Array} array The array to flatten.
-       * @returns {Array} Returns the new flattened array.
-       * @example
-       *
-       * _.flatten([1, [2, [3, [4]], 5]]);
-       * // => [1, 2, [3, [4]], 5]
-       */
-      function flatten(array) {
-        var length = array == null ? 0 : array.length;
-        return length ? baseFlatten(array, 1) : [];
-      }
-  
-      /**
-       * Recursively flattens `array`.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Array
-       * @param {Array} array The array to flatten.
-       * @returns {Array} Returns the new flattened array.
-       * @example
-       *
-       * _.flattenDeep([1, [2, [3, [4]], 5]]);
-       * // => [1, 2, 3, 4, 5]
-       */
-      function flattenDeep(array) {
-        var length = array == null ? 0 : array.length;
-        return length ? baseFlatten(array, INFINITY) : [];
-      }
-  
-      /**
-       * Recursively flatten `array` up to `depth` times.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.4.0
-       * @category Array
-       * @param {Array} array The array to flatten.
-       * @param {number} [depth=1] The maximum recursion depth.
-       * @returns {Array} Returns the new flattened array.
-       * @example
-       *
-       * var array = [1, [2, [3, [4]], 5]];
-       *
-       * _.flattenDepth(array, 1);
-       * // => [1, 2, [3, [4]], 5]
-       *
-       * _.flattenDepth(array, 2);
-       * // => [1, 2, 3, [4], 5]
-       */
-      function flattenDepth(array, depth) {
-        var length = array == null ? 0 : array.length;
-        if (!length) {
-          return [];
-        }
-        depth = depth === undefined ? 1 : toInteger(depth);
-        return baseFlatten(array, depth);
-      }
-  
-      /**
-       * The inverse of `_.toPairs`; this method returns an object composed
-       * from key-value `pairs`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Array
-       * @param {Array} pairs The key-value pairs.
-       * @returns {Object} Returns the new object.
-       * @example
-       *
-       * _.fromPairs([['a', 1], ['b', 2]]);
-       * // => { 'a': 1, 'b': 2 }
-       */
-      function fromPairs(pairs) {
-        var index = -1,
-            length = pairs == null ? 0 : pairs.length,
-            result = {};
-  
-        while (++index < length) {
-          var pair = pairs[index];
-          result[pair[0]] = pair[1];
-        }
-        return result;
-      }
-  
-      /**
-       * Gets the first element of `array`.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @alias first
-       * @category Array
-       * @param {Array} array The array to query.
-       * @returns {*} Returns the first element of `array`.
-       * @example
-       *
-       * _.head([1, 2, 3]);
-       * // => 1
-       *
-       * _.head([]);
-       * // => undefined
-       */
-      function head(array) {
-        return (array && array.length) ? array[0] : undefined;
-      }
-  
-      /**
-       * Gets the index at which the first occurrence of `value` is found in `array`
-       * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-       * for equality comparisons. If `fromIndex` is negative, it's used as the
-       * offset from the end of `array`.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Array
-       * @param {Array} array The array to inspect.
-       * @param {*} value The value to search for.
-       * @param {number} [fromIndex=0] The index to search from.
-       * @returns {number} Returns the index of the matched value, else `-1`.
-       * @example
-       *
-       * _.indexOf([1, 2, 1, 2], 2);
-       * // => 1
-       *
-       * // Search from the `fromIndex`.
-       * _.indexOf([1, 2, 1, 2], 2, 2);
-       * // => 3
-       */
-      function indexOf(array, value, fromIndex) {
-        var length = array == null ? 0 : array.length;
-        if (!length) {
-          return -1;
-        }
-        var index = fromIndex == null ? 0 : toInteger(fromIndex);
-        if (index < 0) {
-          index = nativeMax(length + index, 0);
-        }
-        return baseIndexOf(array, value, index);
-      }
-  
-      /**
-       * Gets all but the last element of `array`.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Array
-       * @param {Array} array The array to query.
-       * @returns {Array} Returns the slice of `array`.
-       * @example
-       *
-       * _.initial([1, 2, 3]);
-       * // => [1, 2]
-       */
-      function initial(array) {
-        var length = array == null ? 0 : array.length;
-        return length ? baseSlice(array, 0, -1) : [];
-      }
-  
-      /**
-       * Creates an array of unique values that are included in all given arrays
-       * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-       * for equality comparisons. The order and references of result values are
-       * determined by the first array.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Array
-       * @param {...Array} [arrays] The arrays to inspect.
-       * @returns {Array} Returns the new array of intersecting values.
-       * @example
-       *
-       * _.intersection([2, 1], [2, 3]);
-       * // => [2]
-       */
-      var intersection = baseRest(function(arrays) {
-        var mapped = arrayMap(arrays, castArrayLikeObject);
-        return (mapped.length && mapped[0] === arrays[0])
-          ? baseIntersection(mapped)
-          : [];
-      });
-  
-      /**
-       * This method is like `_.intersection` except that it accepts `iteratee`
-       * which is invoked for each element of each `arrays` to generate the criterion
-       * by which they're compared. The order and references of result values are
-       * determined by the first array. The iteratee is invoked with one argument:
-       * (value).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Array
-       * @param {...Array} [arrays] The arrays to inspect.
-       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-       * @returns {Array} Returns the new array of intersecting values.
-       * @example
-       *
-       * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);
-       * // => [2.1]
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
-       * // => [{ 'x': 1 }]
-       */
-      var intersectionBy = baseRest(function(arrays) {
-        var iteratee = last(arrays),
-            mapped = arrayMap(arrays, castArrayLikeObject);
-  
-        if (iteratee === last(mapped)) {
-          iteratee = undefined;
-        } else {
-          mapped.pop();
-        }
-        return (mapped.length && mapped[0] === arrays[0])
-          ? baseIntersection(mapped, getIteratee(iteratee, 2))
-          : [];
-      });
-  
-      /**
-       * This method is like `_.intersection` except that it accepts `comparator`
-       * which is invoked to compare elements of `arrays`. The order and references
-       * of result values are determined by the first array. The comparator is
-       * invoked with two arguments: (arrVal, othVal).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Array
-       * @param {...Array} [arrays] The arrays to inspect.
-       * @param {Function} [comparator] The comparator invoked per element.
-       * @returns {Array} Returns the new array of intersecting values.
-       * @example
-       *
-       * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
-       * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
-       *
-       * _.intersectionWith(objects, others, _.isEqual);
-       * // => [{ 'x': 1, 'y': 2 }]
-       */
-      var intersectionWith = baseRest(function(arrays) {
-        var comparator = last(arrays),
-            mapped = arrayMap(arrays, castArrayLikeObject);
-  
-        comparator = typeof comparator == 'function' ? comparator : undefined;
-        if (comparator) {
-          mapped.pop();
-        }
-        return (mapped.length && mapped[0] === arrays[0])
-          ? baseIntersection(mapped, undefined, comparator)
-          : [];
-      });
-  
-      /**
-       * Converts all elements in `array` into a string separated by `separator`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Array
-       * @param {Array} array The array to convert.
-       * @param {string} [separator=','] The element separator.
-       * @returns {string} Returns the joined string.
-       * @example
-       *
-       * _.join(['a', 'b', 'c'], '~');
-       * // => 'a~b~c'
-       */
-      function join(array, separator) {
-        return array == null ? '' : nativeJoin.call(array, separator);
-      }
-  
-      /**
-       * Gets the last element of `array`.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Array
-       * @param {Array} array The array to query.
-       * @returns {*} Returns the last element of `array`.
-       * @example
-       *
-       * _.last([1, 2, 3]);
-       * // => 3
-       */
-      function last(array) {
-        var length = array == null ? 0 : array.length;
-        return length ? array[length - 1] : undefined;
-      }
-  
-      /**
-       * This method is like `_.indexOf` except that it iterates over elements of
-       * `array` from right to left.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Array
-       * @param {Array} array The array to inspect.
-       * @param {*} value The value to search for.
-       * @param {number} [fromIndex=array.length-1] The index to search from.
-       * @returns {number} Returns the index of the matched value, else `-1`.
-       * @example
-       *
-       * _.lastIndexOf([1, 2, 1, 2], 2);
-       * // => 3
-       *
-       * // Search from the `fromIndex`.
-       * _.lastIndexOf([1, 2, 1, 2], 2, 2);
-       * // => 1
-       */
-      function lastIndexOf(array, value, fromIndex) {
-        var length = array == null ? 0 : array.length;
-        if (!length) {
-          return -1;
-        }
-        var index = length;
-        if (fromIndex !== undefined) {
-          index = toInteger(fromIndex);
-          index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
-        }
-        return value === value
-          ? strictLastIndexOf(array, value, index)
-          : baseFindIndex(array, baseIsNaN, index, true);
-      }
-  
-      /**
-       * Gets the element at index `n` of `array`. If `n` is negative, the nth
-       * element from the end is returned.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.11.0
-       * @category Array
-       * @param {Array} array The array to query.
-       * @param {number} [n=0] The index of the element to return.
-       * @returns {*} Returns the nth element of `array`.
-       * @example
-       *
-       * var array = ['a', 'b', 'c', 'd'];
-       *
-       * _.nth(array, 1);
-       * // => 'b'
-       *
-       * _.nth(array, -2);
-       * // => 'c';
-       */
-      function nth(array, n) {
-        return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;
-      }
-  
-      /**
-       * Removes all given values from `array` using
-       * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-       * for equality comparisons.
-       *
-       * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`
-       * to remove elements from an array by predicate.
-       *
-       * @static
-       * @memberOf _
-       * @since 2.0.0
-       * @category Array
-       * @param {Array} array The array to modify.
-       * @param {...*} [values] The values to remove.
-       * @returns {Array} Returns `array`.
-       * @example
-       *
-       * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
-       *
-       * _.pull(array, 'a', 'c');
-       * console.log(array);
-       * // => ['b', 'b']
-       */
-      var pull = baseRest(pullAll);
-  
-      /**
-       * This method is like `_.pull` except that it accepts an array of values to remove.
-       *
-       * **Note:** Unlike `_.difference`, this method mutates `array`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Array
-       * @param {Array} array The array to modify.
-       * @param {Array} values The values to remove.
-       * @returns {Array} Returns `array`.
-       * @example
-       *
-       * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
-       *
-       * _.pullAll(array, ['a', 'c']);
-       * console.log(array);
-       * // => ['b', 'b']
-       */
-      function pullAll(array, values) {
-        return (array && array.length && values && values.length)
-          ? basePullAll(array, values)
-          : array;
-      }
-  
-      /**
-       * This method is like `_.pullAll` except that it accepts `iteratee` which is
-       * invoked for each element of `array` and `values` to generate the criterion
-       * by which they're compared. The iteratee is invoked with one argument: (value).
-       *
-       * **Note:** Unlike `_.differenceBy`, this method mutates `array`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Array
-       * @param {Array} array The array to modify.
-       * @param {Array} values The values to remove.
-       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-       * @returns {Array} Returns `array`.
-       * @example
-       *
-       * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];
-       *
-       * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');
-       * console.log(array);
-       * // => [{ 'x': 2 }]
-       */
-      function pullAllBy(array, values, iteratee) {
-        return (array && array.length && values && values.length)
-          ? basePullAll(array, values, getIteratee(iteratee, 2))
-          : array;
-      }
-  
-      /**
-       * This method is like `_.pullAll` except that it accepts `comparator` which
-       * is invoked to compare elements of `array` to `values`. The comparator is
-       * invoked with two arguments: (arrVal, othVal).
-       *
-       * **Note:** Unlike `_.differenceWith`, this method mutates `array`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.6.0
-       * @category Array
-       * @param {Array} array The array to modify.
-       * @param {Array} values The values to remove.
-       * @param {Function} [comparator] The comparator invoked per element.
-       * @returns {Array} Returns `array`.
-       * @example
-       *
-       * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];
-       *
-       * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);
-       * console.log(array);
-       * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]
-       */
-      function pullAllWith(array, values, comparator) {
-        return (array && array.length && values && values.length)
-          ? basePullAll(array, values, undefined, comparator)
-          : array;
-      }
-  
-      /**
-       * Removes elements from `array` corresponding to `indexes` and returns an
-       * array of removed elements.
-       *
-       * **Note:** Unlike `_.at`, this method mutates `array`.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Array
-       * @param {Array} array The array to modify.
-       * @param {...(number|number[])} [indexes] The indexes of elements to remove.
-       * @returns {Array} Returns the new array of removed elements.
-       * @example
-       *
-       * var array = ['a', 'b', 'c', 'd'];
-       * var pulled = _.pullAt(array, [1, 3]);
-       *
-       * console.log(array);
-       * // => ['a', 'c']
-       *
-       * console.log(pulled);
-       * // => ['b', 'd']
-       */
-      var pullAt = flatRest(function(array, indexes) {
-        var length = array == null ? 0 : array.length,
-            result = baseAt(array, indexes);
-  
-        basePullAt(array, arrayMap(indexes, function(index) {
-          return isIndex(index, length) ? +index : index;
-        }).sort(compareAscending));
-  
-        return result;
-      });
-  
-      /**
-       * Removes all elements from `array` that `predicate` returns truthy for
-       * and returns an array of the removed elements. The predicate is invoked
-       * with three arguments: (value, index, array).
-       *
-       * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`
-       * to pull elements from an array by value.
-       *
-       * @static
-       * @memberOf _
-       * @since 2.0.0
-       * @category Array
-       * @param {Array} array The array to modify.
-       * @param {Function} [predicate=_.identity] The function invoked per iteration.
-       * @returns {Array} Returns the new array of removed elements.
-       * @example
-       *
-       * var array = [1, 2, 3, 4];
-       * var evens = _.remove(array, function(n) {
-       *   return n % 2 == 0;
-       * });
-       *
-       * console.log(array);
-       * // => [1, 3]
-       *
-       * console.log(evens);
-       * // => [2, 4]
-       */
-      function remove(array, predicate) {
-        var result = [];
-        if (!(array && array.length)) {
-          return result;
-        }
-        var index = -1,
-            indexes = [],
-            length = array.length;
-  
-        predicate = getIteratee(predicate, 3);
-        while (++index < length) {
-          var value = array[index];
-          if (predicate(value, index, array)) {
-            result.push(value);
-            indexes.push(index);
-          }
-        }
-        basePullAt(array, indexes);
-        return result;
-      }
-  
-      /**
-       * Reverses `array` so that the first element becomes the last, the second
-       * element becomes the second to last, and so on.
-       *
-       * **Note:** This method mutates `array` and is based on
-       * [`Array#reverse`](https://mdn.io/Array/reverse).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Array
-       * @param {Array} array The array to modify.
-       * @returns {Array} Returns `array`.
-       * @example
-       *
-       * var array = [1, 2, 3];
-       *
-       * _.reverse(array);
-       * // => [3, 2, 1]
-       *
-       * console.log(array);
-       * // => [3, 2, 1]
-       */
-      function reverse(array) {
-        return array == null ? array : nativeReverse.call(array);
-      }
-  
-      /**
-       * Creates a slice of `array` from `start` up to, but not including, `end`.
-       *
-       * **Note:** This method is used instead of
-       * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are
-       * returned.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Array
-       * @param {Array} array The array to slice.
-       * @param {number} [start=0] The start position.
-       * @param {number} [end=array.length] The end position.
-       * @returns {Array} Returns the slice of `array`.
-       */
-      function slice(array, start, end) {
-        var length = array == null ? 0 : array.length;
-        if (!length) {
-          return [];
-        }
-        if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {
-          start = 0;
-          end = length;
-        }
-        else {
-          start = start == null ? 0 : toInteger(start);
-          end = end === undefined ? length : toInteger(end);
-        }
-        return baseSlice(array, start, end);
-      }
-  
-      /**
-       * Uses a binary search to determine the lowest index at which `value`
-       * should be inserted into `array` in order to maintain its sort order.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Array
-       * @param {Array} array The sorted array to inspect.
-       * @param {*} value The value to evaluate.
-       * @returns {number} Returns the index at which `value` should be inserted
-       *  into `array`.
-       * @example
-       *
-       * _.sortedIndex([30, 50], 40);
-       * // => 1
-       */
-      function sortedIndex(array, value) {
-        return baseSortedIndex(array, value);
-      }
-  
-      /**
-       * This method is like `_.sortedIndex` except that it accepts `iteratee`
-       * which is invoked for `value` and each element of `array` to compute their
-       * sort ranking. The iteratee is invoked with one argument: (value).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Array
-       * @param {Array} array The sorted array to inspect.
-       * @param {*} value The value to evaluate.
-       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-       * @returns {number} Returns the index at which `value` should be inserted
-       *  into `array`.
-       * @example
-       *
-       * var objects = [{ 'x': 4 }, { 'x': 5 }];
-       *
-       * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
-       * // => 0
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.sortedIndexBy(objects, { 'x': 4 }, 'x');
-       * // => 0
-       */
-      function sortedIndexBy(array, value, iteratee) {
-        return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));
-      }
-  
-      /**
-       * This method is like `_.indexOf` except that it performs a binary
-       * search on a sorted `array`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Array
-       * @param {Array} array The array to inspect.
-       * @param {*} value The value to search for.
-       * @returns {number} Returns the index of the matched value, else `-1`.
-       * @example
-       *
-       * _.sortedIndexOf([4, 5, 5, 5, 6], 5);
-       * // => 1
-       */
-      function sortedIndexOf(array, value) {
-        var length = array == null ? 0 : array.length;
-        if (length) {
-          var index = baseSortedIndex(array, value);
-          if (index < length && eq(array[index], value)) {
-            return index;
-          }
-        }
-        return -1;
-      }
-  
-      /**
-       * This method is like `_.sortedIndex` except that it returns the highest
-       * index at which `value` should be inserted into `array` in order to
-       * maintain its sort order.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Array
-       * @param {Array} array The sorted array to inspect.
-       * @param {*} value The value to evaluate.
-       * @returns {number} Returns the index at which `value` should be inserted
-       *  into `array`.
-       * @example
-       *
-       * _.sortedLastIndex([4, 5, 5, 5, 6], 5);
-       * // => 4
-       */
-      function sortedLastIndex(array, value) {
-        return baseSortedIndex(array, value, true);
-      }
-  
-      /**
-       * This method is like `_.sortedLastIndex` except that it accepts `iteratee`
-       * which is invoked for `value` and each element of `array` to compute their
-       * sort ranking. The iteratee is invoked with one argument: (value).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Array
-       * @param {Array} array The sorted array to inspect.
-       * @param {*} value The value to evaluate.
-       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-       * @returns {number} Returns the index at which `value` should be inserted
-       *  into `array`.
-       * @example
-       *
-       * var objects = [{ 'x': 4 }, { 'x': 5 }];
-       *
-       * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
-       * // => 1
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');
-       * // => 1
-       */
-      function sortedLastIndexBy(array, value, iteratee) {
-        return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);
-      }
-  
-      /**
-       * This method is like `_.lastIndexOf` except that it performs a binary
-       * search on a sorted `array`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Array
-       * @param {Array} array The array to inspect.
-       * @param {*} value The value to search for.
-       * @returns {number} Returns the index of the matched value, else `-1`.
-       * @example
-       *
-       * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);
-       * // => 3
-       */
-      function sortedLastIndexOf(array, value) {
-        var length = array == null ? 0 : array.length;
-        if (length) {
-          var index = baseSortedIndex(array, value, true) - 1;
-          if (eq(array[index], value)) {
-            return index;
-          }
-        }
-        return -1;
-      }
-  
-      /**
-       * This method is like `_.uniq` except that it's designed and optimized
-       * for sorted arrays.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Array
-       * @param {Array} array The array to inspect.
-       * @returns {Array} Returns the new duplicate free array.
-       * @example
-       *
-       * _.sortedUniq([1, 1, 2]);
-       * // => [1, 2]
-       */
-      function sortedUniq(array) {
-        return (array && array.length)
-          ? baseSortedUniq(array)
-          : [];
-      }
-  
-      /**
-       * This method is like `_.uniqBy` except that it's designed and optimized
-       * for sorted arrays.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Array
-       * @param {Array} array The array to inspect.
-       * @param {Function} [iteratee] The iteratee invoked per element.
-       * @returns {Array} Returns the new duplicate free array.
-       * @example
-       *
-       * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);
-       * // => [1.1, 2.3]
-       */
-      function sortedUniqBy(array, iteratee) {
-        return (array && array.length)
-          ? baseSortedUniq(array, getIteratee(iteratee, 2))
-          : [];
-      }
-  
-      /**
-       * Gets all but the first element of `array`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Array
-       * @param {Array} array The array to query.
-       * @returns {Array} Returns the slice of `array`.
-       * @example
-       *
-       * _.tail([1, 2, 3]);
-       * // => [2, 3]
-       */
-      function tail(array) {
-        var length = array == null ? 0 : array.length;
-        return length ? baseSlice(array, 1, length) : [];
-      }
-  
-      /**
-       * Creates a slice of `array` with `n` elements taken from the beginning.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Array
-       * @param {Array} array The array to query.
-       * @param {number} [n=1] The number of elements to take.
-       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-       * @returns {Array} Returns the slice of `array`.
-       * @example
-       *
-       * _.take([1, 2, 3]);
-       * // => [1]
-       *
-       * _.take([1, 2, 3], 2);
-       * // => [1, 2]
-       *
-       * _.take([1, 2, 3], 5);
-       * // => [1, 2, 3]
-       *
-       * _.take([1, 2, 3], 0);
-       * // => []
-       */
-      function take(array, n, guard) {
-        if (!(array && array.length)) {
-          return [];
-        }
-        n = (guard || n === undefined) ? 1 : toInteger(n);
-        return baseSlice(array, 0, n < 0 ? 0 : n);
-      }
-  
-      /**
-       * Creates a slice of `array` with `n` elements taken from the end.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Array
-       * @param {Array} array The array to query.
-       * @param {number} [n=1] The number of elements to take.
-       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-       * @returns {Array} Returns the slice of `array`.
-       * @example
-       *
-       * _.takeRight([1, 2, 3]);
-       * // => [3]
-       *
-       * _.takeRight([1, 2, 3], 2);
-       * // => [2, 3]
-       *
-       * _.takeRight([1, 2, 3], 5);
-       * // => [1, 2, 3]
-       *
-       * _.takeRight([1, 2, 3], 0);
-       * // => []
-       */
-      function takeRight(array, n, guard) {
-        var length = array == null ? 0 : array.length;
-        if (!length) {
-          return [];
-        }
-        n = (guard || n === undefined) ? 1 : toInteger(n);
-        n = length - n;
-        return baseSlice(array, n < 0 ? 0 : n, length);
-      }
-  
-      /**
-       * Creates a slice of `array` with elements taken from the end. Elements are
-       * taken until `predicate` returns falsey. The predicate is invoked with
-       * three arguments: (value, index, array).
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Array
-       * @param {Array} array The array to query.
-       * @param {Function} [predicate=_.identity] The function invoked per iteration.
-       * @returns {Array} Returns the slice of `array`.
-       * @example
-       *
-       * var users = [
-       *   { 'user': 'barney',  'active': true },
-       *   { 'user': 'fred',    'active': false },
-       *   { 'user': 'pebbles', 'active': false }
-       * ];
-       *
-       * _.takeRightWhile(users, function(o) { return !o.active; });
-       * // => objects for ['fred', 'pebbles']
-       *
-       * // The `_.matches` iteratee shorthand.
-       * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });
-       * // => objects for ['pebbles']
-       *
-       * // The `_.matchesProperty` iteratee shorthand.
-       * _.takeRightWhile(users, ['active', false]);
-       * // => objects for ['fred', 'pebbles']
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.takeRightWhile(users, 'active');
-       * // => []
-       */
-      function takeRightWhile(array, predicate) {
-        return (array && array.length)
-          ? baseWhile(array, getIteratee(predicate, 3), false, true)
-          : [];
-      }
-  
-      /**
-       * Creates a slice of `array` with elements taken from the beginning. Elements
-       * are taken until `predicate` returns falsey. The predicate is invoked with
-       * three arguments: (value, index, array).
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Array
-       * @param {Array} array The array to query.
-       * @param {Function} [predicate=_.identity] The function invoked per iteration.
-       * @returns {Array} Returns the slice of `array`.
-       * @example
-       *
-       * var users = [
-       *   { 'user': 'barney',  'active': false },
-       *   { 'user': 'fred',    'active': false },
-       *   { 'user': 'pebbles', 'active': true }
-       * ];
-       *
-       * _.takeWhile(users, function(o) { return !o.active; });
-       * // => objects for ['barney', 'fred']
-       *
-       * // The `_.matches` iteratee shorthand.
-       * _.takeWhile(users, { 'user': 'barney', 'active': false });
-       * // => objects for ['barney']
-       *
-       * // The `_.matchesProperty` iteratee shorthand.
-       * _.takeWhile(users, ['active', false]);
-       * // => objects for ['barney', 'fred']
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.takeWhile(users, 'active');
-       * // => []
-       */
-      function takeWhile(array, predicate) {
-        return (array && array.length)
-          ? baseWhile(array, getIteratee(predicate, 3))
-          : [];
-      }
-  
-      /**
-       * Creates an array of unique values, in order, from all given arrays using
-       * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-       * for equality comparisons.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Array
-       * @param {...Array} [arrays] The arrays to inspect.
-       * @returns {Array} Returns the new array of combined values.
-       * @example
-       *
-       * _.union([2], [1, 2]);
-       * // => [2, 1]
-       */
-      var union = baseRest(function(arrays) {
-        return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
-      });
-  
-      /**
-       * This method is like `_.union` except that it accepts `iteratee` which is
-       * invoked for each element of each `arrays` to generate the criterion by
-       * which uniqueness is computed. Result values are chosen from the first
-       * array in which the value occurs. The iteratee is invoked with one argument:
-       * (value).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Array
-       * @param {...Array} [arrays] The arrays to inspect.
-       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-       * @returns {Array} Returns the new array of combined values.
-       * @example
-       *
-       * _.unionBy([2.1], [1.2, 2.3], Math.floor);
-       * // => [2.1, 1.2]
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
-       * // => [{ 'x': 1 }, { 'x': 2 }]
-       */
-      var unionBy = baseRest(function(arrays) {
-        var iteratee = last(arrays);
-        if (isArrayLikeObject(iteratee)) {
-          iteratee = undefined;
-        }
-        return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));
-      });
-  
-      /**
-       * This method is like `_.union` except that it accepts `comparator` which
-       * is invoked to compare elements of `arrays`. Result values are chosen from
-       * the first array in which the value occurs. The comparator is invoked
-       * with two arguments: (arrVal, othVal).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Array
-       * @param {...Array} [arrays] The arrays to inspect.
-       * @param {Function} [comparator] The comparator invoked per element.
-       * @returns {Array} Returns the new array of combined values.
-       * @example
-       *
-       * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
-       * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
-       *
-       * _.unionWith(objects, others, _.isEqual);
-       * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
-       */
-      var unionWith = baseRest(function(arrays) {
-        var comparator = last(arrays);
-        comparator = typeof comparator == 'function' ? comparator : undefined;
-        return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);
-      });
-  
-      /**
-       * Creates a duplicate-free version of an array, using
-       * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-       * for equality comparisons, in which only the first occurrence of each element
-       * is kept. The order of result values is determined by the order they occur
-       * in the array.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Array
-       * @param {Array} array The array to inspect.
-       * @returns {Array} Returns the new duplicate free array.
-       * @example
-       *
-       * _.uniq([2, 1, 2]);
-       * // => [2, 1]
-       */
-      function uniq(array) {
-        return (array && array.length) ? baseUniq(array) : [];
-      }
-  
-      /**
-       * This method is like `_.uniq` except that it accepts `iteratee` which is
-       * invoked for each element in `array` to generate the criterion by which
-       * uniqueness is computed. The order of result values is determined by the
-       * order they occur in the array. The iteratee is invoked with one argument:
-       * (value).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Array
-       * @param {Array} array The array to inspect.
-       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-       * @returns {Array} Returns the new duplicate free array.
-       * @example
-       *
-       * _.uniqBy([2.1, 1.2, 2.3], Math.floor);
-       * // => [2.1, 1.2]
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
-       * // => [{ 'x': 1 }, { 'x': 2 }]
-       */
-      function uniqBy(array, iteratee) {
-        return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];
-      }
-  
-      /**
-       * This method is like `_.uniq` except that it accepts `comparator` which
-       * is invoked to compare elements of `array`. The order of result values is
-       * determined by the order they occur in the array.The comparator is invoked
-       * with two arguments: (arrVal, othVal).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Array
-       * @param {Array} array The array to inspect.
-       * @param {Function} [comparator] The comparator invoked per element.
-       * @returns {Array} Returns the new duplicate free array.
-       * @example
-       *
-       * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
-       *
-       * _.uniqWith(objects, _.isEqual);
-       * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
-       */
-      function uniqWith(array, comparator) {
-        comparator = typeof comparator == 'function' ? comparator : undefined;
-        return (array && array.length) ? baseUniq(array, undefined, comparator) : [];
-      }
-  
-      /**
-       * This method is like `_.zip` except that it accepts an array of grouped
-       * elements and creates an array regrouping the elements to their pre-zip
-       * configuration.
-       *
-       * @static
-       * @memberOf _
-       * @since 1.2.0
-       * @category Array
-       * @param {Array} array The array of grouped elements to process.
-       * @returns {Array} Returns the new array of regrouped elements.
-       * @example
-       *
-       * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);
-       * // => [['a', 1, true], ['b', 2, false]]
-       *
-       * _.unzip(zipped);
-       * // => [['a', 'b'], [1, 2], [true, false]]
-       */
-      function unzip(array) {
-        if (!(array && array.length)) {
-          return [];
-        }
-        var length = 0;
-        array = arrayFilter(array, function(group) {
-          if (isArrayLikeObject(group)) {
-            length = nativeMax(group.length, length);
-            return true;
-          }
-        });
-        return baseTimes(length, function(index) {
-          return arrayMap(array, baseProperty(index));
-        });
-      }
-  
-      /**
-       * This method is like `_.unzip` except that it accepts `iteratee` to specify
-       * how regrouped values should be combined. The iteratee is invoked with the
-       * elements of each group: (...group).
-       *
-       * @static
-       * @memberOf _
-       * @since 3.8.0
-       * @category Array
-       * @param {Array} array The array of grouped elements to process.
-       * @param {Function} [iteratee=_.identity] The function to combine
-       *  regrouped values.
-       * @returns {Array} Returns the new array of regrouped elements.
-       * @example
-       *
-       * var zipped = _.zip([1, 2], [10, 20], [100, 200]);
-       * // => [[1, 10, 100], [2, 20, 200]]
-       *
-       * _.unzipWith(zipped, _.add);
-       * // => [3, 30, 300]
-       */
-      function unzipWith(array, iteratee) {
-        if (!(array && array.length)) {
-          return [];
-        }
-        var result = unzip(array);
-        if (iteratee == null) {
-          return result;
-        }
-        return arrayMap(result, function(group) {
-          return apply(iteratee, undefined, group);
-        });
-      }
-  
-      /**
-       * Creates an array excluding all given values using
-       * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-       * for equality comparisons.
-       *
-       * **Note:** Unlike `_.pull`, this method returns a new array.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Array
-       * @param {Array} array The array to inspect.
-       * @param {...*} [values] The values to exclude.
-       * @returns {Array} Returns the new array of filtered values.
-       * @see _.difference, _.xor
-       * @example
-       *
-       * _.without([2, 1, 2, 3], 1, 2);
-       * // => [3]
-       */
-      var without = baseRest(function(array, values) {
-        return isArrayLikeObject(array)
-          ? baseDifference(array, values)
-          : [];
-      });
-  
-      /**
-       * Creates an array of unique values that is the
-       * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)
-       * of the given arrays. The order of result values is determined by the order
-       * they occur in the arrays.
-       *
-       * @static
-       * @memberOf _
-       * @since 2.4.0
-       * @category Array
-       * @param {...Array} [arrays] The arrays to inspect.
-       * @returns {Array} Returns the new array of filtered values.
-       * @see _.difference, _.without
-       * @example
-       *
-       * _.xor([2, 1], [2, 3]);
-       * // => [1, 3]
-       */
-      var xor = baseRest(function(arrays) {
-        return baseXor(arrayFilter(arrays, isArrayLikeObject));
-      });
-  
-      /**
-       * This method is like `_.xor` except that it accepts `iteratee` which is
-       * invoked for each element of each `arrays` to generate the criterion by
-       * which by which they're compared. The order of result values is determined
-       * by the order they occur in the arrays. The iteratee is invoked with one
-       * argument: (value).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Array
-       * @param {...Array} [arrays] The arrays to inspect.
-       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-       * @returns {Array} Returns the new array of filtered values.
-       * @example
-       *
-       * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);
-       * // => [1.2, 3.4]
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
-       * // => [{ 'x': 2 }]
-       */
-      var xorBy = baseRest(function(arrays) {
-        var iteratee = last(arrays);
-        if (isArrayLikeObject(iteratee)) {
-          iteratee = undefined;
-        }
-        return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));
-      });
-  
-      /**
-       * This method is like `_.xor` except that it accepts `comparator` which is
-       * invoked to compare elements of `arrays`. The order of result values is
-       * determined by the order they occur in the arrays. The comparator is invoked
-       * with two arguments: (arrVal, othVal).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Array
-       * @param {...Array} [arrays] The arrays to inspect.
-       * @param {Function} [comparator] The comparator invoked per element.
-       * @returns {Array} Returns the new array of filtered values.
-       * @example
-       *
-       * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
-       * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
-       *
-       * _.xorWith(objects, others, _.isEqual);
-       * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
-       */
-      var xorWith = baseRest(function(arrays) {
-        var comparator = last(arrays);
-        comparator = typeof comparator == 'function' ? comparator : undefined;
-        return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);
-      });
-  
-      /**
-       * Creates an array of grouped elements, the first of which contains the
-       * first elements of the given arrays, the second of which contains the
-       * second elements of the given arrays, and so on.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Array
-       * @param {...Array} [arrays] The arrays to process.
-       * @returns {Array} Returns the new array of grouped elements.
-       * @example
-       *
-       * _.zip(['a', 'b'], [1, 2], [true, false]);
-       * // => [['a', 1, true], ['b', 2, false]]
-       */
-      var zip = baseRest(unzip);
-  
-      /**
-       * This method is like `_.fromPairs` except that it accepts two arrays,
-       * one of property identifiers and one of corresponding values.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.4.0
-       * @category Array
-       * @param {Array} [props=[]] The property identifiers.
-       * @param {Array} [values=[]] The property values.
-       * @returns {Object} Returns the new object.
-       * @example
-       *
-       * _.zipObject(['a', 'b'], [1, 2]);
-       * // => { 'a': 1, 'b': 2 }
-       */
-      function zipObject(props, values) {
-        return baseZipObject(props || [], values || [], assignValue);
-      }
-  
-      /**
-       * This method is like `_.zipObject` except that it supports property paths.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.1.0
-       * @category Array
-       * @param {Array} [props=[]] The property identifiers.
-       * @param {Array} [values=[]] The property values.
-       * @returns {Object} Returns the new object.
-       * @example
-       *
-       * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);
-       * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }
-       */
-      function zipObjectDeep(props, values) {
-        return baseZipObject(props || [], values || [], baseSet);
-      }
-  
-      /**
-       * This method is like `_.zip` except that it accepts `iteratee` to specify
-       * how grouped values should be combined. The iteratee is invoked with the
-       * elements of each group: (...group).
-       *
-       * @static
-       * @memberOf _
-       * @since 3.8.0
-       * @category Array
-       * @param {...Array} [arrays] The arrays to process.
-       * @param {Function} [iteratee=_.identity] The function to combine
-       *  grouped values.
-       * @returns {Array} Returns the new array of grouped elements.
-       * @example
-       *
-       * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {
-       *   return a + b + c;
-       * });
-       * // => [111, 222]
-       */
-      var zipWith = baseRest(function(arrays) {
-        var length = arrays.length,
-            iteratee = length > 1 ? arrays[length - 1] : undefined;
-  
-        iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;
-        return unzipWith(arrays, iteratee);
-      });
-  
-      /*------------------------------------------------------------------------*/
-  
-      /**
-       * Creates a `lodash` wrapper instance that wraps `value` with explicit method
-       * chain sequences enabled. The result of such sequences must be unwrapped
-       * with `_#value`.
-       *
-       * @static
-       * @memberOf _
-       * @since 1.3.0
-       * @category Seq
-       * @param {*} value The value to wrap.
-       * @returns {Object} Returns the new `lodash` wrapper instance.
-       * @example
-       *
-       * var users = [
-       *   { 'user': 'barney',  'age': 36 },
-       *   { 'user': 'fred',    'age': 40 },
-       *   { 'user': 'pebbles', 'age': 1 }
-       * ];
-       *
-       * var youngest = _
-       *   .chain(users)
-       *   .sortBy('age')
-       *   .map(function(o) {
-       *     return o.user + ' is ' + o.age;
-       *   })
-       *   .head()
-       *   .value();
-       * // => 'pebbles is 1'
-       */
-      function chain(value) {
-        var result = lodash(value);
-        result.__chain__ = true;
-        return result;
-      }
-  
-      /**
-       * This method invokes `interceptor` and returns `value`. The interceptor
-       * is invoked with one argument; (value). The purpose of this method is to
-       * "tap into" a method chain sequence in order to modify intermediate results.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Seq
-       * @param {*} value The value to provide to `interceptor`.
-       * @param {Function} interceptor The function to invoke.
-       * @returns {*} Returns `value`.
-       * @example
-       *
-       * _([1, 2, 3])
-       *  .tap(function(array) {
-       *    // Mutate input array.
-       *    array.pop();
-       *  })
-       *  .reverse()
-       *  .value();
-       * // => [2, 1]
-       */
-      function tap(value, interceptor) {
-        interceptor(value);
-        return value;
-      }
-  
-      /**
-       * This method is like `_.tap` except that it returns the result of `interceptor`.
-       * The purpose of this method is to "pass thru" values replacing intermediate
-       * results in a method chain sequence.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Seq
-       * @param {*} value The value to provide to `interceptor`.
-       * @param {Function} interceptor The function to invoke.
-       * @returns {*} Returns the result of `interceptor`.
-       * @example
-       *
-       * _('  abc  ')
-       *  .chain()
-       *  .trim()
-       *  .thru(function(value) {
-       *    return [value];
-       *  })
-       *  .value();
-       * // => ['abc']
-       */
-      function thru(value, interceptor) {
-        return interceptor(value);
-      }
-  
-      /**
-       * This method is the wrapper version of `_.at`.
-       *
-       * @name at
-       * @memberOf _
-       * @since 1.0.0
-       * @category Seq
-       * @param {...(string|string[])} [paths] The property paths to pick.
-       * @returns {Object} Returns the new `lodash` wrapper instance.
-       * @example
-       *
-       * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
-       *
-       * _(object).at(['a[0].b.c', 'a[1]']).value();
-       * // => [3, 4]
-       */
-      var wrapperAt = flatRest(function(paths) {
-        var length = paths.length,
-            start = length ? paths[0] : 0,
-            value = this.__wrapped__,
-            interceptor = function(object) { return baseAt(object, paths); };
-  
-        if (length > 1 || this.__actions__.length ||
-            !(value instanceof LazyWrapper) || !isIndex(start)) {
-          return this.thru(interceptor);
-        }
-        value = value.slice(start, +start + (length ? 1 : 0));
-        value.__actions__.push({
-          'func': thru,
-          'args': [interceptor],
-          'thisArg': undefined
-        });
-        return new LodashWrapper(value, this.__chain__).thru(function(array) {
-          if (length && !array.length) {
-            array.push(undefined);
-          }
-          return array;
-        });
-      });
-  
-      /**
-       * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.
-       *
-       * @name chain
-       * @memberOf _
-       * @since 0.1.0
-       * @category Seq
-       * @returns {Object} Returns the new `lodash` wrapper instance.
-       * @example
-       *
-       * var users = [
-       *   { 'user': 'barney', 'age': 36 },
-       *   { 'user': 'fred',   'age': 40 }
-       * ];
-       *
-       * // A sequence without explicit chaining.
-       * _(users).head();
-       * // => { 'user': 'barney', 'age': 36 }
-       *
-       * // A sequence with explicit chaining.
-       * _(users)
-       *   .chain()
-       *   .head()
-       *   .pick('user')
-       *   .value();
-       * // => { 'user': 'barney' }
-       */
-      function wrapperChain() {
-        return chain(this);
-      }
-  
-      /**
-       * Executes the chain sequence and returns the wrapped result.
-       *
-       * @name commit
-       * @memberOf _
-       * @since 3.2.0
-       * @category Seq
-       * @returns {Object} Returns the new `lodash` wrapper instance.
-       * @example
-       *
-       * var array = [1, 2];
-       * var wrapped = _(array).push(3);
-       *
-       * console.log(array);
-       * // => [1, 2]
-       *
-       * wrapped = wrapped.commit();
-       * console.log(array);
-       * // => [1, 2, 3]
-       *
-       * wrapped.last();
-       * // => 3
-       *
-       * console.log(array);
-       * // => [1, 2, 3]
-       */
-      function wrapperCommit() {
-        return new LodashWrapper(this.value(), this.__chain__);
-      }
-  
-      /**
-       * Gets the next value on a wrapped object following the
-       * [iterator protocol](https://mdn.io/iteration_protocols#iterator).
-       *
-       * @name next
-       * @memberOf _
-       * @since 4.0.0
-       * @category Seq
-       * @returns {Object} Returns the next iterator value.
-       * @example
-       *
-       * var wrapped = _([1, 2]);
-       *
-       * wrapped.next();
-       * // => { 'done': false, 'value': 1 }
-       *
-       * wrapped.next();
-       * // => { 'done': false, 'value': 2 }
-       *
-       * wrapped.next();
-       * // => { 'done': true, 'value': undefined }
-       */
-      function wrapperNext() {
-        if (this.__values__ === undefined) {
-          this.__values__ = toArray(this.value());
-        }
-        var done = this.__index__ >= this.__values__.length,
-            value = done ? undefined : this.__values__[this.__index__++];
-  
-        return { 'done': done, 'value': value };
-      }
-  
-      /**
-       * Enables the wrapper to be iterable.
-       *
-       * @name Symbol.iterator
-       * @memberOf _
-       * @since 4.0.0
-       * @category Seq
-       * @returns {Object} Returns the wrapper object.
-       * @example
-       *
-       * var wrapped = _([1, 2]);
-       *
-       * wrapped[Symbol.iterator]() === wrapped;
-       * // => true
-       *
-       * Array.from(wrapped);
-       * // => [1, 2]
-       */
-      function wrapperToIterator() {
-        return this;
-      }
-  
-      /**
-       * Creates a clone of the chain sequence planting `value` as the wrapped value.
-       *
-       * @name plant
-       * @memberOf _
-       * @since 3.2.0
-       * @category Seq
-       * @param {*} value The value to plant.
-       * @returns {Object} Returns the new `lodash` wrapper instance.
-       * @example
-       *
-       * function square(n) {
-       *   return n * n;
-       * }
-       *
-       * var wrapped = _([1, 2]).map(square);
-       * var other = wrapped.plant([3, 4]);
-       *
-       * other.value();
-       * // => [9, 16]
-       *
-       * wrapped.value();
-       * // => [1, 4]
-       */
-      function wrapperPlant(value) {
-        var result,
-            parent = this;
-  
-        while (parent instanceof baseLodash) {
-          var clone = wrapperClone(parent);
-          clone.__index__ = 0;
-          clone.__values__ = undefined;
-          if (result) {
-            previous.__wrapped__ = clone;
-          } else {
-            result = clone;
-          }
-          var previous = clone;
-          parent = parent.__wrapped__;
-        }
-        previous.__wrapped__ = value;
-        return result;
-      }
-  
-      /**
-       * This method is the wrapper version of `_.reverse`.
-       *
-       * **Note:** This method mutates the wrapped array.
-       *
-       * @name reverse
-       * @memberOf _
-       * @since 0.1.0
-       * @category Seq
-       * @returns {Object} Returns the new `lodash` wrapper instance.
-       * @example
-       *
-       * var array = [1, 2, 3];
-       *
-       * _(array).reverse().value()
-       * // => [3, 2, 1]
-       *
-       * console.log(array);
-       * // => [3, 2, 1]
-       */
-      function wrapperReverse() {
-        var value = this.__wrapped__;
-        if (value instanceof LazyWrapper) {
-          var wrapped = value;
-          if (this.__actions__.length) {
-            wrapped = new LazyWrapper(this);
-          }
-          wrapped = wrapped.reverse();
-          wrapped.__actions__.push({
-            'func': thru,
-            'args': [reverse],
-            'thisArg': undefined
-          });
-          return new LodashWrapper(wrapped, this.__chain__);
-        }
-        return this.thru(reverse);
-      }
-  
-      /**
-       * Executes the chain sequence to resolve the unwrapped value.
-       *
-       * @name value
-       * @memberOf _
-       * @since 0.1.0
-       * @alias toJSON, valueOf
-       * @category Seq
-       * @returns {*} Returns the resolved unwrapped value.
-       * @example
-       *
-       * _([1, 2, 3]).value();
-       * // => [1, 2, 3]
-       */
-      function wrapperValue() {
-        return baseWrapperValue(this.__wrapped__, this.__actions__);
-      }
-  
-      /*------------------------------------------------------------------------*/
-  
-      /**
-       * Creates an object composed of keys generated from the results of running
-       * each element of `collection` thru `iteratee`. The corresponding value of
-       * each key is the number of times the key was returned by `iteratee`. The
-       * iteratee is invoked with one argument: (value).
-       *
-       * @static
-       * @memberOf _
-       * @since 0.5.0
-       * @category Collection
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
-       * @returns {Object} Returns the composed aggregate object.
-       * @example
-       *
-       * _.countBy([6.1, 4.2, 6.3], Math.floor);
-       * // => { '4': 1, '6': 2 }
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.countBy(['one', 'two', 'three'], 'length');
-       * // => { '3': 2, '5': 1 }
-       */
-      var countBy = createAggregator(function(result, value, key) {
-        if (hasOwnProperty.call(result, key)) {
-          ++result[key];
-        } else {
-          baseAssignValue(result, key, 1);
-        }
-      });
-  
-      /**
-       * Checks if `predicate` returns truthy for **all** elements of `collection`.
-       * Iteration is stopped once `predicate` returns falsey. The predicate is
-       * invoked with three arguments: (value, index|key, collection).
-       *
-       * **Note:** This method returns `true` for
-       * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because
-       * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of
-       * elements of empty collections.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Collection
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function} [predicate=_.identity] The function invoked per iteration.
-       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-       * @returns {boolean} Returns `true` if all elements pass the predicate check,
-       *  else `false`.
-       * @example
-       *
-       * _.every([true, 1, null, 'yes'], Boolean);
-       * // => false
-       *
-       * var users = [
-       *   { 'user': 'barney', 'age': 36, 'active': false },
-       *   { 'user': 'fred',   'age': 40, 'active': false }
-       * ];
-       *
-       * // The `_.matches` iteratee shorthand.
-       * _.every(users, { 'user': 'barney', 'active': false });
-       * // => false
-       *
-       * // The `_.matchesProperty` iteratee shorthand.
-       * _.every(users, ['active', false]);
-       * // => true
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.every(users, 'active');
-       * // => false
-       */
-      function every(collection, predicate, guard) {
-        var func = isArray(collection) ? arrayEvery : baseEvery;
-        if (guard && isIterateeCall(collection, predicate, guard)) {
-          predicate = undefined;
-        }
-        return func(collection, getIteratee(predicate, 3));
-      }
-  
-      /**
-       * Iterates over elements of `collection`, returning an array of all elements
-       * `predicate` returns truthy for. The predicate is invoked with three
-       * arguments: (value, index|key, collection).
-       *
-       * **Note:** Unlike `_.remove`, this method returns a new array.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Collection
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function} [predicate=_.identity] The function invoked per iteration.
-       * @returns {Array} Returns the new filtered array.
-       * @see _.reject
-       * @example
-       *
-       * var users = [
-       *   { 'user': 'barney', 'age': 36, 'active': true },
-       *   { 'user': 'fred',   'age': 40, 'active': false }
-       * ];
-       *
-       * _.filter(users, function(o) { return !o.active; });
-       * // => objects for ['fred']
-       *
-       * // The `_.matches` iteratee shorthand.
-       * _.filter(users, { 'age': 36, 'active': true });
-       * // => objects for ['barney']
-       *
-       * // The `_.matchesProperty` iteratee shorthand.
-       * _.filter(users, ['active', false]);
-       * // => objects for ['fred']
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.filter(users, 'active');
-       * // => objects for ['barney']
-       *
-       * // Combining several predicates using `_.overEvery` or `_.overSome`.
-       * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));
-       * // => objects for ['fred', 'barney']
-       */
-      function filter(collection, predicate) {
-        var func = isArray(collection) ? arrayFilter : baseFilter;
-        return func(collection, getIteratee(predicate, 3));
-      }
-  
-      /**
-       * Iterates over elements of `collection`, returning the first element
-       * `predicate` returns truthy for. The predicate is invoked with three
-       * arguments: (value, index|key, collection).
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Collection
-       * @param {Array|Object} collection The collection to inspect.
-       * @param {Function} [predicate=_.identity] The function invoked per iteration.
-       * @param {number} [fromIndex=0] The index to search from.
-       * @returns {*} Returns the matched element, else `undefined`.
-       * @example
-       *
-       * var users = [
-       *   { 'user': 'barney',  'age': 36, 'active': true },
-       *   { 'user': 'fred',    'age': 40, 'active': false },
-       *   { 'user': 'pebbles', 'age': 1,  'active': true }
-       * ];
-       *
-       * _.find(users, function(o) { return o.age < 40; });
-       * // => object for 'barney'
-       *
-       * // The `_.matches` iteratee shorthand.
-       * _.find(users, { 'age': 1, 'active': true });
-       * // => object for 'pebbles'
-       *
-       * // The `_.matchesProperty` iteratee shorthand.
-       * _.find(users, ['active', false]);
-       * // => object for 'fred'
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.find(users, 'active');
-       * // => object for 'barney'
-       */
-      var find = createFind(findIndex);
-  
-      /**
-       * This method is like `_.find` except that it iterates over elements of
-       * `collection` from right to left.
-       *
-       * @static
-       * @memberOf _
-       * @since 2.0.0
-       * @category Collection
-       * @param {Array|Object} collection The collection to inspect.
-       * @param {Function} [predicate=_.identity] The function invoked per iteration.
-       * @param {number} [fromIndex=collection.length-1] The index to search from.
-       * @returns {*} Returns the matched element, else `undefined`.
-       * @example
-       *
-       * _.findLast([1, 2, 3, 4], function(n) {
-       *   return n % 2 == 1;
-       * });
-       * // => 3
-       */
-      var findLast = createFind(findLastIndex);
-  
-      /**
-       * Creates a flattened array of values by running each element in `collection`
-       * thru `iteratee` and flattening the mapped results. The iteratee is invoked
-       * with three arguments: (value, index|key, collection).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Collection
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-       * @returns {Array} Returns the new flattened array.
-       * @example
-       *
-       * function duplicate(n) {
-       *   return [n, n];
-       * }
-       *
-       * _.flatMap([1, 2], duplicate);
-       * // => [1, 1, 2, 2]
-       */
-      function flatMap(collection, iteratee) {
-        return baseFlatten(map(collection, iteratee), 1);
-      }
-  
-      /**
-       * This method is like `_.flatMap` except that it recursively flattens the
-       * mapped results.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.7.0
-       * @category Collection
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-       * @returns {Array} Returns the new flattened array.
-       * @example
-       *
-       * function duplicate(n) {
-       *   return [[[n, n]]];
-       * }
-       *
-       * _.flatMapDeep([1, 2], duplicate);
-       * // => [1, 1, 2, 2]
-       */
-      function flatMapDeep(collection, iteratee) {
-        return baseFlatten(map(collection, iteratee), INFINITY);
-      }
-  
-      /**
-       * This method is like `_.flatMap` except that it recursively flattens the
-       * mapped results up to `depth` times.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.7.0
-       * @category Collection
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-       * @param {number} [depth=1] The maximum recursion depth.
-       * @returns {Array} Returns the new flattened array.
-       * @example
-       *
-       * function duplicate(n) {
-       *   return [[[n, n]]];
-       * }
-       *
-       * _.flatMapDepth([1, 2], duplicate, 2);
-       * // => [[1, 1], [2, 2]]
-       */
-      function flatMapDepth(collection, iteratee, depth) {
-        depth = depth === undefined ? 1 : toInteger(depth);
-        return baseFlatten(map(collection, iteratee), depth);
-      }
-  
-      /**
-       * Iterates over elements of `collection` and invokes `iteratee` for each element.
-       * The iteratee is invoked with three arguments: (value, index|key, collection).
-       * Iteratee functions may exit iteration early by explicitly returning `false`.
-       *
-       * **Note:** As with other "Collections" methods, objects with a "length"
-       * property are iterated like arrays. To avoid this behavior use `_.forIn`
-       * or `_.forOwn` for object iteration.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @alias each
-       * @category Collection
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-       * @returns {Array|Object} Returns `collection`.
-       * @see _.forEachRight
-       * @example
-       *
-       * _.forEach([1, 2], function(value) {
-       *   console.log(value);
-       * });
-       * // => Logs `1` then `2`.
-       *
-       * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
-       *   console.log(key);
-       * });
-       * // => Logs 'a' then 'b' (iteration order is not guaranteed).
-       */
-      function forEach(collection, iteratee) {
-        var func = isArray(collection) ? arrayEach : baseEach;
-        return func(collection, getIteratee(iteratee, 3));
-      }
-  
-      /**
-       * This method is like `_.forEach` except that it iterates over elements of
-       * `collection` from right to left.
-       *
-       * @static
-       * @memberOf _
-       * @since 2.0.0
-       * @alias eachRight
-       * @category Collection
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-       * @returns {Array|Object} Returns `collection`.
-       * @see _.forEach
-       * @example
-       *
-       * _.forEachRight([1, 2], function(value) {
-       *   console.log(value);
-       * });
-       * // => Logs `2` then `1`.
-       */
-      function forEachRight(collection, iteratee) {
-        var func = isArray(collection) ? arrayEachRight : baseEachRight;
-        return func(collection, getIteratee(iteratee, 3));
-      }
-  
-      /**
-       * Creates an object composed of keys generated from the results of running
-       * each element of `collection` thru `iteratee`. The order of grouped values
-       * is determined by the order they occur in `collection`. The corresponding
-       * value of each key is an array of elements responsible for generating the
-       * key. The iteratee is invoked with one argument: (value).
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Collection
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
-       * @returns {Object} Returns the composed aggregate object.
-       * @example
-       *
-       * _.groupBy([6.1, 4.2, 6.3], Math.floor);
-       * // => { '4': [4.2], '6': [6.1, 6.3] }
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.groupBy(['one', 'two', 'three'], 'length');
-       * // => { '3': ['one', 'two'], '5': ['three'] }
-       */
-      var groupBy = createAggregator(function(result, value, key) {
-        if (hasOwnProperty.call(result, key)) {
-          result[key].push(value);
-        } else {
-          baseAssignValue(result, key, [value]);
-        }
-      });
-  
-      /**
-       * Checks if `value` is in `collection`. If `collection` is a string, it's
-       * checked for a substring of `value`, otherwise
-       * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-       * is used for equality comparisons. If `fromIndex` is negative, it's used as
-       * the offset from the end of `collection`.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Collection
-       * @param {Array|Object|string} collection The collection to inspect.
-       * @param {*} value The value to search for.
-       * @param {number} [fromIndex=0] The index to search from.
-       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
-       * @returns {boolean} Returns `true` if `value` is found, else `false`.
-       * @example
-       *
-       * _.includes([1, 2, 3], 1);
-       * // => true
-       *
-       * _.includes([1, 2, 3], 1, 2);
-       * // => false
-       *
-       * _.includes({ 'a': 1, 'b': 2 }, 1);
-       * // => true
-       *
-       * _.includes('abcd', 'bc');
-       * // => true
-       */
-      function includes(collection, value, fromIndex, guard) {
-        collection = isArrayLike(collection) ? collection : values(collection);
-        fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;
-  
-        var length = collection.length;
-        if (fromIndex < 0) {
-          fromIndex = nativeMax(length + fromIndex, 0);
-        }
-        return isString(collection)
-          ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)
-          : (!!length && baseIndexOf(collection, value, fromIndex) > -1);
-      }
-  
-      /**
-       * Invokes the method at `path` of each element in `collection`, returning
-       * an array of the results of each invoked method. Any additional arguments
-       * are provided to each invoked method. If `path` is a function, it's invoked
-       * for, and `this` bound to, each element in `collection`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Collection
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Array|Function|string} path The path of the method to invoke or
-       *  the function invoked per iteration.
-       * @param {...*} [args] The arguments to invoke each method with.
-       * @returns {Array} Returns the array of results.
-       * @example
-       *
-       * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');
-       * // => [[1, 5, 7], [1, 2, 3]]
-       *
-       * _.invokeMap([123, 456], String.prototype.split, '');
-       * // => [['1', '2', '3'], ['4', '5', '6']]
-       */
-      var invokeMap = baseRest(function(collection, path, args) {
-        var index = -1,
-            isFunc = typeof path == 'function',
-            result = isArrayLike(collection) ? Array(collection.length) : [];
-  
-        baseEach(collection, function(value) {
-          result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);
-        });
-        return result;
-      });
-  
-      /**
-       * Creates an object composed of keys generated from the results of running
-       * each element of `collection` thru `iteratee`. The corresponding value of
-       * each key is the last element responsible for generating the key. The
-       * iteratee is invoked with one argument: (value).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Collection
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
-       * @returns {Object} Returns the composed aggregate object.
-       * @example
-       *
-       * var array = [
-       *   { 'dir': 'left', 'code': 97 },
-       *   { 'dir': 'right', 'code': 100 }
-       * ];
-       *
-       * _.keyBy(array, function(o) {
-       *   return String.fromCharCode(o.code);
-       * });
-       * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
-       *
-       * _.keyBy(array, 'dir');
-       * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
-       */
-      var keyBy = createAggregator(function(result, value, key) {
-        baseAssignValue(result, key, value);
-      });
-  
-      /**
-       * Creates an array of values by running each element in `collection` thru
-       * `iteratee`. The iteratee is invoked with three arguments:
-       * (value, index|key, collection).
-       *
-       * Many lodash methods are guarded to work as iteratees for methods like
-       * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
-       *
-       * The guarded methods are:
-       * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
-       * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
-       * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,
-       * `template`, `trim`, `trimEnd`, `trimStart`, and `words`
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Collection
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-       * @returns {Array} Returns the new mapped array.
-       * @example
-       *
-       * function square(n) {
-       *   return n * n;
-       * }
-       *
-       * _.map([4, 8], square);
-       * // => [16, 64]
-       *
-       * _.map({ 'a': 4, 'b': 8 }, square);
-       * // => [16, 64] (iteration order is not guaranteed)
-       *
-       * var users = [
-       *   { 'user': 'barney' },
-       *   { 'user': 'fred' }
-       * ];
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.map(users, 'user');
-       * // => ['barney', 'fred']
-       */
-      function map(collection, iteratee) {
-        var func = isArray(collection) ? arrayMap : baseMap;
-        return func(collection, getIteratee(iteratee, 3));
-      }
-  
-      /**
-       * This method is like `_.sortBy` except that it allows specifying the sort
-       * orders of the iteratees to sort by. If `orders` is unspecified, all values
-       * are sorted in ascending order. Otherwise, specify an order of "desc" for
-       * descending or "asc" for ascending sort order of corresponding values.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Collection
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]
-       *  The iteratees to sort by.
-       * @param {string[]} [orders] The sort orders of `iteratees`.
-       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
-       * @returns {Array} Returns the new sorted array.
-       * @example
-       *
-       * var users = [
-       *   { 'user': 'fred',   'age': 48 },
-       *   { 'user': 'barney', 'age': 34 },
-       *   { 'user': 'fred',   'age': 40 },
-       *   { 'user': 'barney', 'age': 36 }
-       * ];
-       *
-       * // Sort by `user` in ascending order and by `age` in descending order.
-       * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);
-       * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
-       */
-      function orderBy(collection, iteratees, orders, guard) {
-        if (collection == null) {
-          return [];
-        }
-        if (!isArray(iteratees)) {
-          iteratees = iteratees == null ? [] : [iteratees];
-        }
-        orders = guard ? undefined : orders;
-        if (!isArray(orders)) {
-          orders = orders == null ? [] : [orders];
-        }
-        return baseOrderBy(collection, iteratees, orders);
-      }
-  
-      /**
-       * Creates an array of elements split into two groups, the first of which
-       * contains elements `predicate` returns truthy for, the second of which
-       * contains elements `predicate` returns falsey for. The predicate is
-       * invoked with one argument: (value).
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Collection
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function} [predicate=_.identity] The function invoked per iteration.
-       * @returns {Array} Returns the array of grouped elements.
-       * @example
-       *
-       * var users = [
-       *   { 'user': 'barney',  'age': 36, 'active': false },
-       *   { 'user': 'fred',    'age': 40, 'active': true },
-       *   { 'user': 'pebbles', 'age': 1,  'active': false }
-       * ];
-       *
-       * _.partition(users, function(o) { return o.active; });
-       * // => objects for [['fred'], ['barney', 'pebbles']]
-       *
-       * // The `_.matches` iteratee shorthand.
-       * _.partition(users, { 'age': 1, 'active': false });
-       * // => objects for [['pebbles'], ['barney', 'fred']]
-       *
-       * // The `_.matchesProperty` iteratee shorthand.
-       * _.partition(users, ['active', false]);
-       * // => objects for [['barney', 'pebbles'], ['fred']]
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.partition(users, 'active');
-       * // => objects for [['fred'], ['barney', 'pebbles']]
-       */
-      var partition = createAggregator(function(result, value, key) {
-        result[key ? 0 : 1].push(value);
-      }, function() { return [[], []]; });
-  
-      /**
-       * Reduces `collection` to a value which is the accumulated result of running
-       * each element in `collection` thru `iteratee`, where each successive
-       * invocation is supplied the return value of the previous. If `accumulator`
-       * is not given, the first element of `collection` is used as the initial
-       * value. The iteratee is invoked with four arguments:
-       * (accumulator, value, index|key, collection).
-       *
-       * Many lodash methods are guarded to work as iteratees for methods like
-       * `_.reduce`, `_.reduceRight`, and `_.transform`.
-       *
-       * The guarded methods are:
-       * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
-       * and `sortBy`
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Collection
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-       * @param {*} [accumulator] The initial value.
-       * @returns {*} Returns the accumulated value.
-       * @see _.reduceRight
-       * @example
-       *
-       * _.reduce([1, 2], function(sum, n) {
-       *   return sum + n;
-       * }, 0);
-       * // => 3
-       *
-       * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
-       *   (result[value] || (result[value] = [])).push(key);
-       *   return result;
-       * }, {});
-       * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
-       */
-      function reduce(collection, iteratee, accumulator) {
-        var func = isArray(collection) ? arrayReduce : baseReduce,
-            initAccum = arguments.length < 3;
-  
-        return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);
-      }
-  
-      /**
-       * This method is like `_.reduce` except that it iterates over elements of
-       * `collection` from right to left.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Collection
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-       * @param {*} [accumulator] The initial value.
-       * @returns {*} Returns the accumulated value.
-       * @see _.reduce
-       * @example
-       *
-       * var array = [[0, 1], [2, 3], [4, 5]];
-       *
-       * _.reduceRight(array, function(flattened, other) {
-       *   return flattened.concat(other);
-       * }, []);
-       * // => [4, 5, 2, 3, 0, 1]
-       */
-      function reduceRight(collection, iteratee, accumulator) {
-        var func = isArray(collection) ? arrayReduceRight : baseReduce,
-            initAccum = arguments.length < 3;
-  
-        return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);
-      }
-  
-      /**
-       * The opposite of `_.filter`; this method returns the elements of `collection`
-       * that `predicate` does **not** return truthy for.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Collection
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function} [predicate=_.identity] The function invoked per iteration.
-       * @returns {Array} Returns the new filtered array.
-       * @see _.filter
-       * @example
-       *
-       * var users = [
-       *   { 'user': 'barney', 'age': 36, 'active': false },
-       *   { 'user': 'fred',   'age': 40, 'active': true }
-       * ];
-       *
-       * _.reject(users, function(o) { return !o.active; });
-       * // => objects for ['fred']
-       *
-       * // The `_.matches` iteratee shorthand.
-       * _.reject(users, { 'age': 40, 'active': true });
-       * // => objects for ['barney']
-       *
-       * // The `_.matchesProperty` iteratee shorthand.
-       * _.reject(users, ['active', false]);
-       * // => objects for ['fred']
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.reject(users, 'active');
-       * // => objects for ['barney']
-       */
-      function reject(collection, predicate) {
-        var func = isArray(collection) ? arrayFilter : baseFilter;
-        return func(collection, negate(getIteratee(predicate, 3)));
-      }
-  
-      /**
-       * Gets a random element from `collection`.
-       *
-       * @static
-       * @memberOf _
-       * @since 2.0.0
-       * @category Collection
-       * @param {Array|Object} collection The collection to sample.
-       * @returns {*} Returns the random element.
-       * @example
-       *
-       * _.sample([1, 2, 3, 4]);
-       * // => 2
-       */
-      function sample(collection) {
-        var func = isArray(collection) ? arraySample : baseSample;
-        return func(collection);
-      }
-  
-      /**
-       * Gets `n` random elements at unique keys from `collection` up to the
-       * size of `collection`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Collection
-       * @param {Array|Object} collection The collection to sample.
-       * @param {number} [n=1] The number of elements to sample.
-       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-       * @returns {Array} Returns the random elements.
-       * @example
-       *
-       * _.sampleSize([1, 2, 3], 2);
-       * // => [3, 1]
-       *
-       * _.sampleSize([1, 2, 3], 4);
-       * // => [2, 3, 1]
-       */
-      function sampleSize(collection, n, guard) {
-        if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {
-          n = 1;
-        } else {
-          n = toInteger(n);
-        }
-        var func = isArray(collection) ? arraySampleSize : baseSampleSize;
-        return func(collection, n);
-      }
-  
-      /**
-       * Creates an array of shuffled values, using a version of the
-       * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Collection
-       * @param {Array|Object} collection The collection to shuffle.
-       * @returns {Array} Returns the new shuffled array.
-       * @example
-       *
-       * _.shuffle([1, 2, 3, 4]);
-       * // => [4, 1, 3, 2]
-       */
-      function shuffle(collection) {
-        var func = isArray(collection) ? arrayShuffle : baseShuffle;
-        return func(collection);
-      }
-  
-      /**
-       * Gets the size of `collection` by returning its length for array-like
-       * values or the number of own enumerable string keyed properties for objects.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Collection
-       * @param {Array|Object|string} collection The collection to inspect.
-       * @returns {number} Returns the collection size.
-       * @example
-       *
-       * _.size([1, 2, 3]);
-       * // => 3
-       *
-       * _.size({ 'a': 1, 'b': 2 });
-       * // => 2
-       *
-       * _.size('pebbles');
-       * // => 7
-       */
-      function size(collection) {
-        if (collection == null) {
-          return 0;
-        }
-        if (isArrayLike(collection)) {
-          return isString(collection) ? stringSize(collection) : collection.length;
-        }
-        var tag = getTag(collection);
-        if (tag == mapTag || tag == setTag) {
-          return collection.size;
-        }
-        return baseKeys(collection).length;
-      }
-  
-      /**
-       * Checks if `predicate` returns truthy for **any** element of `collection`.
-       * Iteration is stopped once `predicate` returns truthy. The predicate is
-       * invoked with three arguments: (value, index|key, collection).
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Collection
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {Function} [predicate=_.identity] The function invoked per iteration.
-       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-       * @returns {boolean} Returns `true` if any element passes the predicate check,
-       *  else `false`.
-       * @example
-       *
-       * _.some([null, 0, 'yes', false], Boolean);
-       * // => true
-       *
-       * var users = [
-       *   { 'user': 'barney', 'active': true },
-       *   { 'user': 'fred',   'active': false }
-       * ];
-       *
-       * // The `_.matches` iteratee shorthand.
-       * _.some(users, { 'user': 'barney', 'active': false });
-       * // => false
-       *
-       * // The `_.matchesProperty` iteratee shorthand.
-       * _.some(users, ['active', false]);
-       * // => true
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.some(users, 'active');
-       * // => true
-       */
-      function some(collection, predicate, guard) {
-        var func = isArray(collection) ? arraySome : baseSome;
-        if (guard && isIterateeCall(collection, predicate, guard)) {
-          predicate = undefined;
-        }
-        return func(collection, getIteratee(predicate, 3));
-      }
-  
-      /**
-       * Creates an array of elements, sorted in ascending order by the results of
-       * running each element in a collection thru each iteratee. This method
-       * performs a stable sort, that is, it preserves the original sort order of
-       * equal elements. The iteratees are invoked with one argument: (value).
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Collection
-       * @param {Array|Object} collection The collection to iterate over.
-       * @param {...(Function|Function[])} [iteratees=[_.identity]]
-       *  The iteratees to sort by.
-       * @returns {Array} Returns the new sorted array.
-       * @example
-       *
-       * var users = [
-       *   { 'user': 'fred',   'age': 48 },
-       *   { 'user': 'barney', 'age': 36 },
-       *   { 'user': 'fred',   'age': 30 },
-       *   { 'user': 'barney', 'age': 34 }
-       * ];
-       *
-       * _.sortBy(users, [function(o) { return o.user; }]);
-       * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]
-       *
-       * _.sortBy(users, ['user', 'age']);
-       * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]
-       */
-      var sortBy = baseRest(function(collection, iteratees) {
-        if (collection == null) {
-          return [];
-        }
-        var length = iteratees.length;
-        if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
-          iteratees = [];
-        } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
-          iteratees = [iteratees[0]];
-        }
-        return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
-      });
-  
-      /*------------------------------------------------------------------------*/
-  
-      /**
-       * Gets the timestamp of the number of milliseconds that have elapsed since
-       * the Unix epoch (1 January 1970 00:00:00 UTC).
-       *
-       * @static
-       * @memberOf _
-       * @since 2.4.0
-       * @category Date
-       * @returns {number} Returns the timestamp.
-       * @example
-       *
-       * _.defer(function(stamp) {
-       *   console.log(_.now() - stamp);
-       * }, _.now());
-       * // => Logs the number of milliseconds it took for the deferred invocation.
-       */
-      var now = ctxNow || function() {
-        return root.Date.now();
-      };
-  
-      /*------------------------------------------------------------------------*/
-  
-      /**
-       * The opposite of `_.before`; this method creates a function that invokes
-       * `func` once it's called `n` or more times.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Function
-       * @param {number} n The number of calls before `func` is invoked.
-       * @param {Function} func The function to restrict.
-       * @returns {Function} Returns the new restricted function.
-       * @example
-       *
-       * var saves = ['profile', 'settings'];
-       *
-       * var done = _.after(saves.length, function() {
-       *   console.log('done saving!');
-       * });
-       *
-       * _.forEach(saves, function(type) {
-       *   asyncSave({ 'type': type, 'complete': done });
-       * });
-       * // => Logs 'done saving!' after the two async saves have completed.
-       */
-      function after(n, func) {
-        if (typeof func != 'function') {
-          throw new TypeError(FUNC_ERROR_TEXT);
-        }
-        n = toInteger(n);
-        return function() {
-          if (--n < 1) {
-            return func.apply(this, arguments);
-          }
-        };
-      }
-  
-      /**
-       * Creates a function that invokes `func`, with up to `n` arguments,
-       * ignoring any additional arguments.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Function
-       * @param {Function} func The function to cap arguments for.
-       * @param {number} [n=func.length] The arity cap.
-       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-       * @returns {Function} Returns the new capped function.
-       * @example
-       *
-       * _.map(['6', '8', '10'], _.ary(parseInt, 1));
-       * // => [6, 8, 10]
-       */
-      function ary(func, n, guard) {
-        n = guard ? undefined : n;
-        n = (func && n == null) ? func.length : n;
-        return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);
-      }
-  
-      /**
-       * Creates a function that invokes `func`, with the `this` binding and arguments
-       * of the created function, while it's called less than `n` times. Subsequent
-       * calls to the created function return the result of the last `func` invocation.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Function
-       * @param {number} n The number of calls at which `func` is no longer invoked.
-       * @param {Function} func The function to restrict.
-       * @returns {Function} Returns the new restricted function.
-       * @example
-       *
-       * jQuery(element).on('click', _.before(5, addContactToList));
-       * // => Allows adding up to 4 contacts to the list.
-       */
-      function before(n, func) {
-        var result;
-        if (typeof func != 'function') {
-          throw new TypeError(FUNC_ERROR_TEXT);
-        }
-        n = toInteger(n);
-        return function() {
-          if (--n > 0) {
-            result = func.apply(this, arguments);
-          }
-          if (n <= 1) {
-            func = undefined;
-          }
-          return result;
-        };
-      }
-  
-      /**
-       * Creates a function that invokes `func` with the `this` binding of `thisArg`
-       * and `partials` prepended to the arguments it receives.
-       *
-       * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
-       * may be used as a placeholder for partially applied arguments.
-       *
-       * **Note:** Unlike native `Function#bind`, this method doesn't set the "length"
-       * property of bound functions.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Function
-       * @param {Function} func The function to bind.
-       * @param {*} thisArg The `this` binding of `func`.
-       * @param {...*} [partials] The arguments to be partially applied.
-       * @returns {Function} Returns the new bound function.
-       * @example
-       *
-       * function greet(greeting, punctuation) {
-       *   return greeting + ' ' + this.user + punctuation;
-       * }
-       *
-       * var object = { 'user': 'fred' };
-       *
-       * var bound = _.bind(greet, object, 'hi');
-       * bound('!');
-       * // => 'hi fred!'
-       *
-       * // Bound with placeholders.
-       * var bound = _.bind(greet, object, _, '!');
-       * bound('hi');
-       * // => 'hi fred!'
-       */
-      var bind = baseRest(function(func, thisArg, partials) {
-        var bitmask = WRAP_BIND_FLAG;
-        if (partials.length) {
-          var holders = replaceHolders(partials, getHolder(bind));
-          bitmask |= WRAP_PARTIAL_FLAG;
-        }
-        return createWrap(func, bitmask, thisArg, partials, holders);
-      });
-  
-      /**
-       * Creates a function that invokes the method at `object[key]` with `partials`
-       * prepended to the arguments it receives.
-       *
-       * This method differs from `_.bind` by allowing bound functions to reference
-       * methods that may be redefined or don't yet exist. See
-       * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)
-       * for more details.
-       *
-       * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic
-       * builds, may be used as a placeholder for partially applied arguments.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.10.0
-       * @category Function
-       * @param {Object} object The object to invoke the method on.
-       * @param {string} key The key of the method.
-       * @param {...*} [partials] The arguments to be partially applied.
-       * @returns {Function} Returns the new bound function.
-       * @example
-       *
-       * var object = {
-       *   'user': 'fred',
-       *   'greet': function(greeting, punctuation) {
-       *     return greeting + ' ' + this.user + punctuation;
-       *   }
-       * };
-       *
-       * var bound = _.bindKey(object, 'greet', 'hi');
-       * bound('!');
-       * // => 'hi fred!'
-       *
-       * object.greet = function(greeting, punctuation) {
-       *   return greeting + 'ya ' + this.user + punctuation;
-       * };
-       *
-       * bound('!');
-       * // => 'hiya fred!'
-       *
-       * // Bound with placeholders.
-       * var bound = _.bindKey(object, 'greet', _, '!');
-       * bound('hi');
-       * // => 'hiya fred!'
-       */
-      var bindKey = baseRest(function(object, key, partials) {
-        var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;
-        if (partials.length) {
-          var holders = replaceHolders(partials, getHolder(bindKey));
-          bitmask |= WRAP_PARTIAL_FLAG;
-        }
-        return createWrap(key, bitmask, object, partials, holders);
-      });
-  
-      /**
-       * Creates a function that accepts arguments of `func` and either invokes
-       * `func` returning its result, if at least `arity` number of arguments have
-       * been provided, or returns a function that accepts the remaining `func`
-       * arguments, and so on. The arity of `func` may be specified if `func.length`
-       * is not sufficient.
-       *
-       * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,
-       * may be used as a placeholder for provided arguments.
-       *
-       * **Note:** This method doesn't set the "length" property of curried functions.
-       *
-       * @static
-       * @memberOf _
-       * @since 2.0.0
-       * @category Function
-       * @param {Function} func The function to curry.
-       * @param {number} [arity=func.length] The arity of `func`.
-       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-       * @returns {Function} Returns the new curried function.
-       * @example
-       *
-       * var abc = function(a, b, c) {
-       *   return [a, b, c];
-       * };
-       *
-       * var curried = _.curry(abc);
-       *
-       * curried(1)(2)(3);
-       * // => [1, 2, 3]
-       *
-       * curried(1, 2)(3);
-       * // => [1, 2, 3]
-       *
-       * curried(1, 2, 3);
-       * // => [1, 2, 3]
-       *
-       * // Curried with placeholders.
-       * curried(1)(_, 3)(2);
-       * // => [1, 2, 3]
-       */
-      function curry(func, arity, guard) {
-        arity = guard ? undefined : arity;
-        var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
-        result.placeholder = curry.placeholder;
-        return result;
-      }
-  
-      /**
-       * This method is like `_.curry` except that arguments are applied to `func`
-       * in the manner of `_.partialRight` instead of `_.partial`.
-       *
-       * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic
-       * builds, may be used as a placeholder for provided arguments.
-       *
-       * **Note:** This method doesn't set the "length" property of curried functions.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Function
-       * @param {Function} func The function to curry.
-       * @param {number} [arity=func.length] The arity of `func`.
-       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-       * @returns {Function} Returns the new curried function.
-       * @example
-       *
-       * var abc = function(a, b, c) {
-       *   return [a, b, c];
-       * };
-       *
-       * var curried = _.curryRight(abc);
-       *
-       * curried(3)(2)(1);
-       * // => [1, 2, 3]
-       *
-       * curried(2, 3)(1);
-       * // => [1, 2, 3]
-       *
-       * curried(1, 2, 3);
-       * // => [1, 2, 3]
-       *
-       * // Curried with placeholders.
-       * curried(3)(1, _)(2);
-       * // => [1, 2, 3]
-       */
-      function curryRight(func, arity, guard) {
-        arity = guard ? undefined : arity;
-        var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
-        result.placeholder = curryRight.placeholder;
-        return result;
-      }
-  
-      /**
-       * Creates a debounced function that delays invoking `func` until after `wait`
-       * milliseconds have elapsed since the last time the debounced function was
-       * invoked. The debounced function comes with a `cancel` method to cancel
-       * delayed `func` invocations and a `flush` method to immediately invoke them.
-       * Provide `options` to indicate whether `func` should be invoked on the
-       * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
-       * with the last arguments provided to the debounced function. Subsequent
-       * calls to the debounced function return the result of the last `func`
-       * invocation.
-       *
-       * **Note:** If `leading` and `trailing` options are `true`, `func` is
-       * invoked on the trailing edge of the timeout only if the debounced function
-       * is invoked more than once during the `wait` timeout.
-       *
-       * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
-       * until to the next tick, similar to `setTimeout` with a timeout of `0`.
-       *
-       * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
-       * for details over the differences between `_.debounce` and `_.throttle`.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Function
-       * @param {Function} func The function to debounce.
-       * @param {number} [wait=0] The number of milliseconds to delay.
-       * @param {Object} [options={}] The options object.
-       * @param {boolean} [options.leading=false]
-       *  Specify invoking on the leading edge of the timeout.
-       * @param {number} [options.maxWait]
-       *  The maximum time `func` is allowed to be delayed before it's invoked.
-       * @param {boolean} [options.trailing=true]
-       *  Specify invoking on the trailing edge of the timeout.
-       * @returns {Function} Returns the new debounced function.
-       * @example
-       *
-       * // Avoid costly calculations while the window size is in flux.
-       * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
-       *
-       * // Invoke `sendMail` when clicked, debouncing subsequent calls.
-       * jQuery(element).on('click', _.debounce(sendMail, 300, {
-       *   'leading': true,
-       *   'trailing': false
-       * }));
-       *
-       * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
-       * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
-       * var source = new EventSource('/stream');
-       * jQuery(source).on('message', debounced);
-       *
-       * // Cancel the trailing debounced invocation.
-       * jQuery(window).on('popstate', debounced.cancel);
-       */
-      function debounce(func, wait, options) {
-        var lastArgs,
-            lastThis,
-            maxWait,
-            result,
-            timerId,
-            lastCallTime,
-            lastInvokeTime = 0,
-            leading = false,
-            maxing = false,
-            trailing = true;
-  
-        if (typeof func != 'function') {
-          throw new TypeError(FUNC_ERROR_TEXT);
-        }
-        wait = toNumber(wait) || 0;
-        if (isObject(options)) {
-          leading = !!options.leading;
-          maxing = 'maxWait' in options;
-          maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
-          trailing = 'trailing' in options ? !!options.trailing : trailing;
-        }
-  
-        function invokeFunc(time) {
-          var args = lastArgs,
-              thisArg = lastThis;
-  
-          lastArgs = lastThis = undefined;
-          lastInvokeTime = time;
-          result = func.apply(thisArg, args);
-          return result;
-        }
-  
-        function leadingEdge(time) {
-          // Reset any `maxWait` timer.
-          lastInvokeTime = time;
-          // Start the timer for the trailing edge.
-          timerId = setTimeout(timerExpired, wait);
-          // Invoke the leading edge.
-          return leading ? invokeFunc(time) : result;
-        }
-  
-        function remainingWait(time) {
-          var timeSinceLastCall = time - lastCallTime,
-              timeSinceLastInvoke = time - lastInvokeTime,
-              timeWaiting = wait - timeSinceLastCall;
-  
-          return maxing
-            ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
-            : timeWaiting;
-        }
-  
-        function shouldInvoke(time) {
-          var timeSinceLastCall = time - lastCallTime,
-              timeSinceLastInvoke = time - lastInvokeTime;
-  
-          // Either this is the first call, activity has stopped and we're at the
-          // trailing edge, the system time has gone backwards and we're treating
-          // it as the trailing edge, or we've hit the `maxWait` limit.
-          return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
-            (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
-        }
-  
-        function timerExpired() {
-          var time = now();
-          if (shouldInvoke(time)) {
-            return trailingEdge(time);
-          }
-          // Restart the timer.
-          timerId = setTimeout(timerExpired, remainingWait(time));
-        }
-  
-        function trailingEdge(time) {
-          timerId = undefined;
-  
-          // Only invoke if we have `lastArgs` which means `func` has been
-          // debounced at least once.
-          if (trailing && lastArgs) {
-            return invokeFunc(time);
-          }
-          lastArgs = lastThis = undefined;
-          return result;
-        }
-  
-        function cancel() {
-          if (timerId !== undefined) {
-            clearTimeout(timerId);
-          }
-          lastInvokeTime = 0;
-          lastArgs = lastCallTime = lastThis = timerId = undefined;
-        }
-  
-        function flush() {
-          return timerId === undefined ? result : trailingEdge(now());
-        }
-  
-        function debounced() {
-          var time = now(),
-              isInvoking = shouldInvoke(time);
-  
-          lastArgs = arguments;
-          lastThis = this;
-          lastCallTime = time;
-  
-          if (isInvoking) {
-            if (timerId === undefined) {
-              return leadingEdge(lastCallTime);
-            }
-            if (maxing) {
-              // Handle invocations in a tight loop.
-              clearTimeout(timerId);
-              timerId = setTimeout(timerExpired, wait);
-              return invokeFunc(lastCallTime);
-            }
-          }
-          if (timerId === undefined) {
-            timerId = setTimeout(timerExpired, wait);
-          }
-          return result;
-        }
-        debounced.cancel = cancel;
-        debounced.flush = flush;
-        return debounced;
-      }
-  
-      /**
-       * Defers invoking the `func` until the current call stack has cleared. Any
-       * additional arguments are provided to `func` when it's invoked.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Function
-       * @param {Function} func The function to defer.
-       * @param {...*} [args] The arguments to invoke `func` with.
-       * @returns {number} Returns the timer id.
-       * @example
-       *
-       * _.defer(function(text) {
-       *   console.log(text);
-       * }, 'deferred');
-       * // => Logs 'deferred' after one millisecond.
-       */
-      var defer = baseRest(function(func, args) {
-        return baseDelay(func, 1, args);
-      });
-  
-      /**
-       * Invokes `func` after `wait` milliseconds. Any additional arguments are
-       * provided to `func` when it's invoked.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Function
-       * @param {Function} func The function to delay.
-       * @param {number} wait The number of milliseconds to delay invocation.
-       * @param {...*} [args] The arguments to invoke `func` with.
-       * @returns {number} Returns the timer id.
-       * @example
-       *
-       * _.delay(function(text) {
-       *   console.log(text);
-       * }, 1000, 'later');
-       * // => Logs 'later' after one second.
-       */
-      var delay = baseRest(function(func, wait, args) {
-        return baseDelay(func, toNumber(wait) || 0, args);
-      });
-  
-      /**
-       * Creates a function that invokes `func` with arguments reversed.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Function
-       * @param {Function} func The function to flip arguments for.
-       * @returns {Function} Returns the new flipped function.
-       * @example
-       *
-       * var flipped = _.flip(function() {
-       *   return _.toArray(arguments);
-       * });
-       *
-       * flipped('a', 'b', 'c', 'd');
-       * // => ['d', 'c', 'b', 'a']
-       */
-      function flip(func) {
-        return createWrap(func, WRAP_FLIP_FLAG);
-      }
-  
-      /**
-       * Creates a function that memoizes the result of `func`. If `resolver` is
-       * provided, it determines the cache key for storing the result based on the
-       * arguments provided to the memoized function. By default, the first argument
-       * provided to the memoized function is used as the map cache key. The `func`
-       * is invoked with the `this` binding of the memoized function.
-       *
-       * **Note:** The cache is exposed as the `cache` property on the memoized
-       * function. Its creation may be customized by replacing the `_.memoize.Cache`
-       * constructor with one whose instances implement the
-       * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
-       * method interface of `clear`, `delete`, `get`, `has`, and `set`.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Function
-       * @param {Function} func The function to have its output memoized.
-       * @param {Function} [resolver] The function to resolve the cache key.
-       * @returns {Function} Returns the new memoized function.
-       * @example
-       *
-       * var object = { 'a': 1, 'b': 2 };
-       * var other = { 'c': 3, 'd': 4 };
-       *
-       * var values = _.memoize(_.values);
-       * values(object);
-       * // => [1, 2]
-       *
-       * values(other);
-       * // => [3, 4]
-       *
-       * object.a = 2;
-       * values(object);
-       * // => [1, 2]
-       *
-       * // Modify the result cache.
-       * values.cache.set(object, ['a', 'b']);
-       * values(object);
-       * // => ['a', 'b']
-       *
-       * // Replace `_.memoize.Cache`.
-       * _.memoize.Cache = WeakMap;
-       */
-      function memoize(func, resolver) {
-        if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
-          throw new TypeError(FUNC_ERROR_TEXT);
-        }
-        var memoized = function() {
-          var args = arguments,
-              key = resolver ? resolver.apply(this, args) : args[0],
-              cache = memoized.cache;
-  
-          if (cache.has(key)) {
-            return cache.get(key);
-          }
-          var result = func.apply(this, args);
-          memoized.cache = cache.set(key, result) || cache;
-          return result;
-        };
-        memoized.cache = new (memoize.Cache || MapCache);
-        return memoized;
-      }
-  
-      // Expose `MapCache`.
-      memoize.Cache = MapCache;
-  
-      /**
-       * Creates a function that negates the result of the predicate `func`. The
-       * `func` predicate is invoked with the `this` binding and arguments of the
-       * created function.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Function
-       * @param {Function} predicate The predicate to negate.
-       * @returns {Function} Returns the new negated function.
-       * @example
-       *
-       * function isEven(n) {
-       *   return n % 2 == 0;
-       * }
-       *
-       * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
-       * // => [1, 3, 5]
-       */
-      function negate(predicate) {
-        if (typeof predicate != 'function') {
-          throw new TypeError(FUNC_ERROR_TEXT);
-        }
-        return function() {
-          var args = arguments;
-          switch (args.length) {
-            case 0: return !predicate.call(this);
-            case 1: return !predicate.call(this, args[0]);
-            case 2: return !predicate.call(this, args[0], args[1]);
-            case 3: return !predicate.call(this, args[0], args[1], args[2]);
-          }
-          return !predicate.apply(this, args);
-        };
-      }
-  
-      /**
-       * Creates a function that is restricted to invoking `func` once. Repeat calls
-       * to the function return the value of the first invocation. The `func` is
-       * invoked with the `this` binding and arguments of the created function.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Function
-       * @param {Function} func The function to restrict.
-       * @returns {Function} Returns the new restricted function.
-       * @example
-       *
-       * var initialize = _.once(createApplication);
-       * initialize();
-       * initialize();
-       * // => `createApplication` is invoked once
-       */
-      function once(func) {
-        return before(2, func);
-      }
-  
-      /**
-       * Creates a function that invokes `func` with its arguments transformed.
-       *
-       * @static
-       * @since 4.0.0
-       * @memberOf _
-       * @category Function
-       * @param {Function} func The function to wrap.
-       * @param {...(Function|Function[])} [transforms=[_.identity]]
-       *  The argument transforms.
-       * @returns {Function} Returns the new function.
-       * @example
-       *
-       * function doubled(n) {
-       *   return n * 2;
-       * }
-       *
-       * function square(n) {
-       *   return n * n;
-       * }
-       *
-       * var func = _.overArgs(function(x, y) {
-       *   return [x, y];
-       * }, [square, doubled]);
-       *
-       * func(9, 3);
-       * // => [81, 6]
-       *
-       * func(10, 5);
-       * // => [100, 10]
-       */
-      var overArgs = castRest(function(func, transforms) {
-        transforms = (transforms.length == 1 && isArray(transforms[0]))
-          ? arrayMap(transforms[0], baseUnary(getIteratee()))
-          : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));
-  
-        var funcsLength = transforms.length;
-        return baseRest(function(args) {
-          var index = -1,
-              length = nativeMin(args.length, funcsLength);
-  
-          while (++index < length) {
-            args[index] = transforms[index].call(this, args[index]);
-          }
-          return apply(func, this, args);
-        });
-      });
-  
-      /**
-       * Creates a function that invokes `func` with `partials` prepended to the
-       * arguments it receives. This method is like `_.bind` except it does **not**
-       * alter the `this` binding.
-       *
-       * The `_.partial.placeholder` value, which defaults to `_` in monolithic
-       * builds, may be used as a placeholder for partially applied arguments.
-       *
-       * **Note:** This method doesn't set the "length" property of partially
-       * applied functions.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.2.0
-       * @category Function
-       * @param {Function} func The function to partially apply arguments to.
-       * @param {...*} [partials] The arguments to be partially applied.
-       * @returns {Function} Returns the new partially applied function.
-       * @example
-       *
-       * function greet(greeting, name) {
-       *   return greeting + ' ' + name;
-       * }
-       *
-       * var sayHelloTo = _.partial(greet, 'hello');
-       * sayHelloTo('fred');
-       * // => 'hello fred'
-       *
-       * // Partially applied with placeholders.
-       * var greetFred = _.partial(greet, _, 'fred');
-       * greetFred('hi');
-       * // => 'hi fred'
-       */
-      var partial = baseRest(function(func, partials) {
-        var holders = replaceHolders(partials, getHolder(partial));
-        return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);
-      });
-  
-      /**
-       * This method is like `_.partial` except that partially applied arguments
-       * are appended to the arguments it receives.
-       *
-       * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic
-       * builds, may be used as a placeholder for partially applied arguments.
-       *
-       * **Note:** This method doesn't set the "length" property of partially
-       * applied functions.
-       *
-       * @static
-       * @memberOf _
-       * @since 1.0.0
-       * @category Function
-       * @param {Function} func The function to partially apply arguments to.
-       * @param {...*} [partials] The arguments to be partially applied.
-       * @returns {Function} Returns the new partially applied function.
-       * @example
-       *
-       * function greet(greeting, name) {
-       *   return greeting + ' ' + name;
-       * }
-       *
-       * var greetFred = _.partialRight(greet, 'fred');
-       * greetFred('hi');
-       * // => 'hi fred'
-       *
-       * // Partially applied with placeholders.
-       * var sayHelloTo = _.partialRight(greet, 'hello', _);
-       * sayHelloTo('fred');
-       * // => 'hello fred'
-       */
-      var partialRight = baseRest(function(func, partials) {
-        var holders = replaceHolders(partials, getHolder(partialRight));
-        return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);
-      });
-  
-      /**
-       * Creates a function that invokes `func` with arguments arranged according
-       * to the specified `indexes` where the argument value at the first index is
-       * provided as the first argument, the argument value at the second index is
-       * provided as the second argument, and so on.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Function
-       * @param {Function} func The function to rearrange arguments for.
-       * @param {...(number|number[])} indexes The arranged argument indexes.
-       * @returns {Function} Returns the new function.
-       * @example
-       *
-       * var rearged = _.rearg(function(a, b, c) {
-       *   return [a, b, c];
-       * }, [2, 0, 1]);
-       *
-       * rearged('b', 'c', 'a')
-       * // => ['a', 'b', 'c']
-       */
-      var rearg = flatRest(function(func, indexes) {
-        return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);
-      });
-  
-      /**
-       * Creates a function that invokes `func` with the `this` binding of the
-       * created function and arguments from `start` and beyond provided as
-       * an array.
-       *
-       * **Note:** This method is based on the
-       * [rest parameter](https://mdn.io/rest_parameters).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Function
-       * @param {Function} func The function to apply a rest parameter to.
-       * @param {number} [start=func.length-1] The start position of the rest parameter.
-       * @returns {Function} Returns the new function.
-       * @example
-       *
-       * var say = _.rest(function(what, names) {
-       *   return what + ' ' + _.initial(names).join(', ') +
-       *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);
-       * });
-       *
-       * say('hello', 'fred', 'barney', 'pebbles');
-       * // => 'hello fred, barney, & pebbles'
-       */
-      function rest(func, start) {
-        if (typeof func != 'function') {
-          throw new TypeError(FUNC_ERROR_TEXT);
-        }
-        start = start === undefined ? start : toInteger(start);
-        return baseRest(func, start);
-      }
-  
-      /**
-       * Creates a function that invokes `func` with the `this` binding of the
-       * create function and an array of arguments much like
-       * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).
-       *
-       * **Note:** This method is based on the
-       * [spread operator](https://mdn.io/spread_operator).
-       *
-       * @static
-       * @memberOf _
-       * @since 3.2.0
-       * @category Function
-       * @param {Function} func The function to spread arguments over.
-       * @param {number} [start=0] The start position of the spread.
-       * @returns {Function} Returns the new function.
-       * @example
-       *
-       * var say = _.spread(function(who, what) {
-       *   return who + ' says ' + what;
-       * });
-       *
-       * say(['fred', 'hello']);
-       * // => 'fred says hello'
-       *
-       * var numbers = Promise.all([
-       *   Promise.resolve(40),
-       *   Promise.resolve(36)
-       * ]);
-       *
-       * numbers.then(_.spread(function(x, y) {
-       *   return x + y;
-       * }));
-       * // => a Promise of 76
-       */
-      function spread(func, start) {
-        if (typeof func != 'function') {
-          throw new TypeError(FUNC_ERROR_TEXT);
-        }
-        start = start == null ? 0 : nativeMax(toInteger(start), 0);
-        return baseRest(function(args) {
-          var array = args[start],
-              otherArgs = castSlice(args, 0, start);
-  
-          if (array) {
-            arrayPush(otherArgs, array);
-          }
-          return apply(func, this, otherArgs);
-        });
-      }
-  
-      /**
-       * Creates a throttled function that only invokes `func` at most once per
-       * every `wait` milliseconds. The throttled function comes with a `cancel`
-       * method to cancel delayed `func` invocations and a `flush` method to
-       * immediately invoke them. Provide `options` to indicate whether `func`
-       * should be invoked on the leading and/or trailing edge of the `wait`
-       * timeout. The `func` is invoked with the last arguments provided to the
-       * throttled function. Subsequent calls to the throttled function return the
-       * result of the last `func` invocation.
-       *
-       * **Note:** If `leading` and `trailing` options are `true`, `func` is
-       * invoked on the trailing edge of the timeout only if the throttled function
-       * is invoked more than once during the `wait` timeout.
-       *
-       * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
-       * until to the next tick, similar to `setTimeout` with a timeout of `0`.
-       *
-       * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
-       * for details over the differences between `_.throttle` and `_.debounce`.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Function
-       * @param {Function} func The function to throttle.
-       * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
-       * @param {Object} [options={}] The options object.
-       * @param {boolean} [options.leading=true]
-       *  Specify invoking on the leading edge of the timeout.
-       * @param {boolean} [options.trailing=true]
-       *  Specify invoking on the trailing edge of the timeout.
-       * @returns {Function} Returns the new throttled function.
-       * @example
-       *
-       * // Avoid excessively updating the position while scrolling.
-       * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
-       *
-       * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
-       * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
-       * jQuery(element).on('click', throttled);
-       *
-       * // Cancel the trailing throttled invocation.
-       * jQuery(window).on('popstate', throttled.cancel);
-       */
-      function throttle(func, wait, options) {
-        var leading = true,
-            trailing = true;
-  
-        if (typeof func != 'function') {
-          throw new TypeError(FUNC_ERROR_TEXT);
-        }
-        if (isObject(options)) {
-          leading = 'leading' in options ? !!options.leading : leading;
-          trailing = 'trailing' in options ? !!options.trailing : trailing;
-        }
-        return debounce(func, wait, {
-          'leading': leading,
-          'maxWait': wait,
-          'trailing': trailing
-        });
-      }
-  
-      /**
-       * Creates a function that accepts up to one argument, ignoring any
-       * additional arguments.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Function
-       * @param {Function} func The function to cap arguments for.
-       * @returns {Function} Returns the new capped function.
-       * @example
-       *
-       * _.map(['6', '8', '10'], _.unary(parseInt));
-       * // => [6, 8, 10]
-       */
-      function unary(func) {
-        return ary(func, 1);
-      }
-  
-      /**
-       * Creates a function that provides `value` to `wrapper` as its first
-       * argument. Any additional arguments provided to the function are appended
-       * to those provided to the `wrapper`. The wrapper is invoked with the `this`
-       * binding of the created function.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Function
-       * @param {*} value The value to wrap.
-       * @param {Function} [wrapper=identity] The wrapper function.
-       * @returns {Function} Returns the new function.
-       * @example
-       *
-       * var p = _.wrap(_.escape, function(func, text) {
-       *   return '<p>' + func(text) + '</p>';
-       * });
-       *
-       * p('fred, barney, & pebbles');
-       * // => '<p>fred, barney, &amp; pebbles</p>'
-       */
-      function wrap(value, wrapper) {
-        return partial(castFunction(wrapper), value);
-      }
-  
-      /*------------------------------------------------------------------------*/
-  
-      /**
-       * Casts `value` as an array if it's not one.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.4.0
-       * @category Lang
-       * @param {*} value The value to inspect.
-       * @returns {Array} Returns the cast array.
-       * @example
-       *
-       * _.castArray(1);
-       * // => [1]
-       *
-       * _.castArray({ 'a': 1 });
-       * // => [{ 'a': 1 }]
-       *
-       * _.castArray('abc');
-       * // => ['abc']
-       *
-       * _.castArray(null);
-       * // => [null]
-       *
-       * _.castArray(undefined);
-       * // => [undefined]
-       *
-       * _.castArray();
-       * // => []
-       *
-       * var array = [1, 2, 3];
-       * console.log(_.castArray(array) === array);
-       * // => true
-       */
-      function castArray() {
-        if (!arguments.length) {
-          return [];
-        }
-        var value = arguments[0];
-        return isArray(value) ? value : [value];
-      }
-  
-      /**
-       * Creates a shallow clone of `value`.
-       *
-       * **Note:** This method is loosely based on the
-       * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)
-       * and supports cloning arrays, array buffers, booleans, date objects, maps,
-       * numbers, `Object` objects, regexes, sets, strings, symbols, and typed
-       * arrays. The own enumerable properties of `arguments` objects are cloned
-       * as plain objects. An empty object is returned for uncloneable values such
-       * as error objects, functions, DOM nodes, and WeakMaps.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Lang
-       * @param {*} value The value to clone.
-       * @returns {*} Returns the cloned value.
-       * @see _.cloneDeep
-       * @example
-       *
-       * var objects = [{ 'a': 1 }, { 'b': 2 }];
-       *
-       * var shallow = _.clone(objects);
-       * console.log(shallow[0] === objects[0]);
-       * // => true
-       */
-      function clone(value) {
-        return baseClone(value, CLONE_SYMBOLS_FLAG);
-      }
-  
-      /**
-       * This method is like `_.clone` except that it accepts `customizer` which
-       * is invoked to produce the cloned value. If `customizer` returns `undefined`,
-       * cloning is handled by the method instead. The `customizer` is invoked with
-       * up to four arguments; (value [, index|key, object, stack]).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Lang
-       * @param {*} value The value to clone.
-       * @param {Function} [customizer] The function to customize cloning.
-       * @returns {*} Returns the cloned value.
-       * @see _.cloneDeepWith
-       * @example
-       *
-       * function customizer(value) {
-       *   if (_.isElement(value)) {
-       *     return value.cloneNode(false);
-       *   }
-       * }
-       *
-       * var el = _.cloneWith(document.body, customizer);
-       *
-       * console.log(el === document.body);
-       * // => false
-       * console.log(el.nodeName);
-       * // => 'BODY'
-       * console.log(el.childNodes.length);
-       * // => 0
-       */
-      function cloneWith(value, customizer) {
-        customizer = typeof customizer == 'function' ? customizer : undefined;
-        return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);
-      }
-  
-      /**
-       * This method is like `_.clone` except that it recursively clones `value`.
-       *
-       * @static
-       * @memberOf _
-       * @since 1.0.0
-       * @category Lang
-       * @param {*} value The value to recursively clone.
-       * @returns {*} Returns the deep cloned value.
-       * @see _.clone
-       * @example
-       *
-       * var objects = [{ 'a': 1 }, { 'b': 2 }];
-       *
-       * var deep = _.cloneDeep(objects);
-       * console.log(deep[0] === objects[0]);
-       * // => false
-       */
-      function cloneDeep(value) {
-        return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
-      }
-  
-      /**
-       * This method is like `_.cloneWith` except that it recursively clones `value`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Lang
-       * @param {*} value The value to recursively clone.
-       * @param {Function} [customizer] The function to customize cloning.
-       * @returns {*} Returns the deep cloned value.
-       * @see _.cloneWith
-       * @example
-       *
-       * function customizer(value) {
-       *   if (_.isElement(value)) {
-       *     return value.cloneNode(true);
-       *   }
-       * }
-       *
-       * var el = _.cloneDeepWith(document.body, customizer);
-       *
-       * console.log(el === document.body);
-       * // => false
-       * console.log(el.nodeName);
-       * // => 'BODY'
-       * console.log(el.childNodes.length);
-       * // => 20
-       */
-      function cloneDeepWith(value, customizer) {
-        customizer = typeof customizer == 'function' ? customizer : undefined;
-        return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
-      }
-  
-      /**
-       * Checks if `object` conforms to `source` by invoking the predicate
-       * properties of `source` with the corresponding property values of `object`.
-       *
-       * **Note:** This method is equivalent to `_.conforms` when `source` is
-       * partially applied.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.14.0
-       * @category Lang
-       * @param {Object} object The object to inspect.
-       * @param {Object} source The object of property predicates to conform to.
-       * @returns {boolean} Returns `true` if `object` conforms, else `false`.
-       * @example
-       *
-       * var object = { 'a': 1, 'b': 2 };
-       *
-       * _.conformsTo(object, { 'b': function(n) { return n > 1; } });
-       * // => true
-       *
-       * _.conformsTo(object, { 'b': function(n) { return n > 2; } });
-       * // => false
-       */
-      function conformsTo(object, source) {
-        return source == null || baseConformsTo(object, source, keys(source));
-      }
-  
-      /**
-       * Performs a
-       * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-       * comparison between two values to determine if they are equivalent.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Lang
-       * @param {*} value The value to compare.
-       * @param {*} other The other value to compare.
-       * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
-       * @example
-       *
-       * var object = { 'a': 1 };
-       * var other = { 'a': 1 };
-       *
-       * _.eq(object, object);
-       * // => true
-       *
-       * _.eq(object, other);
-       * // => false
-       *
-       * _.eq('a', 'a');
-       * // => true
-       *
-       * _.eq('a', Object('a'));
-       * // => false
-       *
-       * _.eq(NaN, NaN);
-       * // => true
-       */
-      function eq(value, other) {
-        return value === other || (value !== value && other !== other);
-      }
-  
-      /**
-       * Checks if `value` is greater than `other`.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.9.0
-       * @category Lang
-       * @param {*} value The value to compare.
-       * @param {*} other The other value to compare.
-       * @returns {boolean} Returns `true` if `value` is greater than `other`,
-       *  else `false`.
-       * @see _.lt
-       * @example
-       *
-       * _.gt(3, 1);
-       * // => true
-       *
-       * _.gt(3, 3);
-       * // => false
-       *
-       * _.gt(1, 3);
-       * // => false
-       */
-      var gt = createRelationalOperation(baseGt);
-  
-      /**
-       * Checks if `value` is greater than or equal to `other`.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.9.0
-       * @category Lang
-       * @param {*} value The value to compare.
-       * @param {*} other The other value to compare.
-       * @returns {boolean} Returns `true` if `value` is greater than or equal to
-       *  `other`, else `false`.
-       * @see _.lte
-       * @example
-       *
-       * _.gte(3, 1);
-       * // => true
-       *
-       * _.gte(3, 3);
-       * // => true
-       *
-       * _.gte(1, 3);
-       * // => false
-       */
-      var gte = createRelationalOperation(function(value, other) {
-        return value >= other;
-      });
-  
-      /**
-       * Checks if `value` is likely an `arguments` object.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is an `arguments` object,
-       *  else `false`.
-       * @example
-       *
-       * _.isArguments(function() { return arguments; }());
-       * // => true
-       *
-       * _.isArguments([1, 2, 3]);
-       * // => false
-       */
-      var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
-        return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
-          !propertyIsEnumerable.call(value, 'callee');
-      };
-  
-      /**
-       * Checks if `value` is classified as an `Array` object.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is an array, else `false`.
-       * @example
-       *
-       * _.isArray([1, 2, 3]);
-       * // => true
-       *
-       * _.isArray(document.body.children);
-       * // => false
-       *
-       * _.isArray('abc');
-       * // => false
-       *
-       * _.isArray(_.noop);
-       * // => false
-       */
-      var isArray = Array.isArray;
-  
-      /**
-       * Checks if `value` is classified as an `ArrayBuffer` object.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.3.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
-       * @example
-       *
-       * _.isArrayBuffer(new ArrayBuffer(2));
-       * // => true
-       *
-       * _.isArrayBuffer(new Array(2));
-       * // => false
-       */
-      var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;
-  
-      /**
-       * Checks if `value` is array-like. A value is considered array-like if it's
-       * not a function and has a `value.length` that's an integer greater than or
-       * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
-       * @example
-       *
-       * _.isArrayLike([1, 2, 3]);
-       * // => true
-       *
-       * _.isArrayLike(document.body.children);
-       * // => true
-       *
-       * _.isArrayLike('abc');
-       * // => true
-       *
-       * _.isArrayLike(_.noop);
-       * // => false
-       */
-      function isArrayLike(value) {
-        return value != null && isLength(value.length) && !isFunction(value);
-      }
-  
-      /**
-       * This method is like `_.isArrayLike` except that it also checks if `value`
-       * is an object.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is an array-like object,
-       *  else `false`.
-       * @example
-       *
-       * _.isArrayLikeObject([1, 2, 3]);
-       * // => true
-       *
-       * _.isArrayLikeObject(document.body.children);
-       * // => true
-       *
-       * _.isArrayLikeObject('abc');
-       * // => false
-       *
-       * _.isArrayLikeObject(_.noop);
-       * // => false
-       */
-      function isArrayLikeObject(value) {
-        return isObjectLike(value) && isArrayLike(value);
-      }
-  
-      /**
-       * Checks if `value` is classified as a boolean primitive or object.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.
-       * @example
-       *
-       * _.isBoolean(false);
-       * // => true
-       *
-       * _.isBoolean(null);
-       * // => false
-       */
-      function isBoolean(value) {
-        return value === true || value === false ||
-          (isObjectLike(value) && baseGetTag(value) == boolTag);
-      }
-  
-      /**
-       * Checks if `value` is a buffer.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.3.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
-       * @example
-       *
-       * _.isBuffer(new Buffer(2));
-       * // => true
-       *
-       * _.isBuffer(new Uint8Array(2));
-       * // => false
-       */
-      var isBuffer = nativeIsBuffer || stubFalse;
-  
-      /**
-       * Checks if `value` is classified as a `Date` object.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
-       * @example
-       *
-       * _.isDate(new Date);
-       * // => true
-       *
-       * _.isDate('Mon April 23 2012');
-       * // => false
-       */
-      var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
-  
-      /**
-       * Checks if `value` is likely a DOM element.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.
-       * @example
-       *
-       * _.isElement(document.body);
-       * // => true
-       *
-       * _.isElement('<body>');
-       * // => false
-       */
-      function isElement(value) {
-        return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
-      }
-  
-      /**
-       * Checks if `value` is an empty object, collection, map, or set.
-       *
-       * Objects are considered empty if they have no own enumerable string keyed
-       * properties.
-       *
-       * Array-like values such as `arguments` objects, arrays, buffers, strings, or
-       * jQuery-like collections are considered empty if they have a `length` of `0`.
-       * Similarly, maps and sets are considered empty if they have a `size` of `0`.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is empty, else `false`.
-       * @example
-       *
-       * _.isEmpty(null);
-       * // => true
-       *
-       * _.isEmpty(true);
-       * // => true
-       *
-       * _.isEmpty(1);
-       * // => true
-       *
-       * _.isEmpty([1, 2, 3]);
-       * // => false
-       *
-       * _.isEmpty({ 'a': 1 });
-       * // => false
-       */
-      function isEmpty(value) {
-        if (value == null) {
-          return true;
-        }
-        if (isArrayLike(value) &&
-            (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
-              isBuffer(value) || isTypedArray(value) || isArguments(value))) {
-          return !value.length;
-        }
-        var tag = getTag(value);
-        if (tag == mapTag || tag == setTag) {
-          return !value.size;
-        }
-        if (isPrototype(value)) {
-          return !baseKeys(value).length;
-        }
-        for (var key in value) {
-          if (hasOwnProperty.call(value, key)) {
-            return false;
-          }
-        }
-        return true;
-      }
-  
-      /**
-       * Performs a deep comparison between two values to determine if they are
-       * equivalent.
-       *
-       * **Note:** This method supports comparing arrays, array buffers, booleans,
-       * date objects, error objects, maps, numbers, `Object` objects, regexes,
-       * sets, strings, symbols, and typed arrays. `Object` objects are compared
-       * by their own, not inherited, enumerable properties. Functions and DOM
-       * nodes are compared by strict equality, i.e. `===`.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Lang
-       * @param {*} value The value to compare.
-       * @param {*} other The other value to compare.
-       * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
-       * @example
-       *
-       * var object = { 'a': 1 };
-       * var other = { 'a': 1 };
-       *
-       * _.isEqual(object, other);
-       * // => true
-       *
-       * object === other;
-       * // => false
-       */
-      function isEqual(value, other) {
-        return baseIsEqual(value, other);
-      }
-  
-      /**
-       * This method is like `_.isEqual` except that it accepts `customizer` which
-       * is invoked to compare values. If `customizer` returns `undefined`, comparisons
-       * are handled by the method instead. The `customizer` is invoked with up to
-       * six arguments: (objValue, othValue [, index|key, object, other, stack]).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Lang
-       * @param {*} value The value to compare.
-       * @param {*} other The other value to compare.
-       * @param {Function} [customizer] The function to customize comparisons.
-       * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
-       * @example
-       *
-       * function isGreeting(value) {
-       *   return /^h(?:i|ello)$/.test(value);
-       * }
-       *
-       * function customizer(objValue, othValue) {
-       *   if (isGreeting(objValue) && isGreeting(othValue)) {
-       *     return true;
-       *   }
-       * }
-       *
-       * var array = ['hello', 'goodbye'];
-       * var other = ['hi', 'goodbye'];
-       *
-       * _.isEqualWith(array, other, customizer);
-       * // => true
-       */
-      function isEqualWith(value, other, customizer) {
-        customizer = typeof customizer == 'function' ? customizer : undefined;
-        var result = customizer ? customizer(value, other) : undefined;
-        return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;
-      }
-  
-      /**
-       * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,
-       * `SyntaxError`, `TypeError`, or `URIError` object.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is an error object, else `false`.
-       * @example
-       *
-       * _.isError(new Error);
-       * // => true
-       *
-       * _.isError(Error);
-       * // => false
-       */
-      function isError(value) {
-        if (!isObjectLike(value)) {
-          return false;
-        }
-        var tag = baseGetTag(value);
-        return tag == errorTag || tag == domExcTag ||
-          (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));
-      }
-  
-      /**
-       * Checks if `value` is a finite primitive number.
-       *
-       * **Note:** This method is based on
-       * [`Number.isFinite`](https://mdn.io/Number/isFinite).
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.
-       * @example
-       *
-       * _.isFinite(3);
-       * // => true
-       *
-       * _.isFinite(Number.MIN_VALUE);
-       * // => true
-       *
-       * _.isFinite(Infinity);
-       * // => false
-       *
-       * _.isFinite('3');
-       * // => false
-       */
-      function isFinite(value) {
-        return typeof value == 'number' && nativeIsFinite(value);
-      }
-  
-      /**
-       * Checks if `value` is classified as a `Function` object.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a function, else `false`.
-       * @example
-       *
-       * _.isFunction(_);
-       * // => true
-       *
-       * _.isFunction(/abc/);
-       * // => false
-       */
-      function isFunction(value) {
-        if (!isObject(value)) {
-          return false;
-        }
-        // The use of `Object#toString` avoids issues with the `typeof` operator
-        // in Safari 9 which returns 'object' for typed arrays and other constructors.
-        var tag = baseGetTag(value);
-        return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
-      }
-  
-      /**
-       * Checks if `value` is an integer.
-       *
-       * **Note:** This method is based on
-       * [`Number.isInteger`](https://mdn.io/Number/isInteger).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is an integer, else `false`.
-       * @example
-       *
-       * _.isInteger(3);
-       * // => true
-       *
-       * _.isInteger(Number.MIN_VALUE);
-       * // => false
-       *
-       * _.isInteger(Infinity);
-       * // => false
-       *
-       * _.isInteger('3');
-       * // => false
-       */
-      function isInteger(value) {
-        return typeof value == 'number' && value == toInteger(value);
-      }
-  
-      /**
-       * Checks if `value` is a valid array-like length.
-       *
-       * **Note:** This method is loosely based on
-       * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
-       * @example
-       *
-       * _.isLength(3);
-       * // => true
-       *
-       * _.isLength(Number.MIN_VALUE);
-       * // => false
-       *
-       * _.isLength(Infinity);
-       * // => false
-       *
-       * _.isLength('3');
-       * // => false
-       */
-      function isLength(value) {
-        return typeof value == 'number' &&
-          value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
-      }
-  
-      /**
-       * Checks if `value` is the
-       * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
-       * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is an object, else `false`.
-       * @example
-       *
-       * _.isObject({});
-       * // => true
-       *
-       * _.isObject([1, 2, 3]);
-       * // => true
-       *
-       * _.isObject(_.noop);
-       * // => true
-       *
-       * _.isObject(null);
-       * // => false
-       */
-      function isObject(value) {
-        var type = typeof value;
-        return value != null && (type == 'object' || type == 'function');
-      }
-  
-      /**
-       * Checks if `value` is object-like. A value is object-like if it's not `null`
-       * and has a `typeof` result of "object".
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
-       * @example
-       *
-       * _.isObjectLike({});
-       * // => true
-       *
-       * _.isObjectLike([1, 2, 3]);
-       * // => true
-       *
-       * _.isObjectLike(_.noop);
-       * // => false
-       *
-       * _.isObjectLike(null);
-       * // => false
-       */
-      function isObjectLike(value) {
-        return value != null && typeof value == 'object';
-      }
-  
-      /**
-       * Checks if `value` is classified as a `Map` object.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.3.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a map, else `false`.
-       * @example
-       *
-       * _.isMap(new Map);
-       * // => true
-       *
-       * _.isMap(new WeakMap);
-       * // => false
-       */
-      var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
-  
-      /**
-       * Performs a partial deep comparison between `object` and `source` to
-       * determine if `object` contains equivalent property values.
-       *
-       * **Note:** This method is equivalent to `_.matches` when `source` is
-       * partially applied.
-       *
-       * Partial comparisons will match empty array and empty object `source`
-       * values against any array or object value, respectively. See `_.isEqual`
-       * for a list of supported value comparisons.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Lang
-       * @param {Object} object The object to inspect.
-       * @param {Object} source The object of property values to match.
-       * @returns {boolean} Returns `true` if `object` is a match, else `false`.
-       * @example
-       *
-       * var object = { 'a': 1, 'b': 2 };
-       *
-       * _.isMatch(object, { 'b': 2 });
-       * // => true
-       *
-       * _.isMatch(object, { 'b': 1 });
-       * // => false
-       */
-      function isMatch(object, source) {
-        return object === source || baseIsMatch(object, source, getMatchData(source));
-      }
-  
-      /**
-       * This method is like `_.isMatch` except that it accepts `customizer` which
-       * is invoked to compare values. If `customizer` returns `undefined`, comparisons
-       * are handled by the method instead. The `customizer` is invoked with five
-       * arguments: (objValue, srcValue, index|key, object, source).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Lang
-       * @param {Object} object The object to inspect.
-       * @param {Object} source The object of property values to match.
-       * @param {Function} [customizer] The function to customize comparisons.
-       * @returns {boolean} Returns `true` if `object` is a match, else `false`.
-       * @example
-       *
-       * function isGreeting(value) {
-       *   return /^h(?:i|ello)$/.test(value);
-       * }
-       *
-       * function customizer(objValue, srcValue) {
-       *   if (isGreeting(objValue) && isGreeting(srcValue)) {
-       *     return true;
-       *   }
-       * }
-       *
-       * var object = { 'greeting': 'hello' };
-       * var source = { 'greeting': 'hi' };
-       *
-       * _.isMatchWith(object, source, customizer);
-       * // => true
-       */
-      function isMatchWith(object, source, customizer) {
-        customizer = typeof customizer == 'function' ? customizer : undefined;
-        return baseIsMatch(object, source, getMatchData(source), customizer);
-      }
-  
-      /**
-       * Checks if `value` is `NaN`.
-       *
-       * **Note:** This method is based on
-       * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as
-       * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for
-       * `undefined` and other non-number values.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
-       * @example
-       *
-       * _.isNaN(NaN);
-       * // => true
-       *
-       * _.isNaN(new Number(NaN));
-       * // => true
-       *
-       * isNaN(undefined);
-       * // => true
-       *
-       * _.isNaN(undefined);
-       * // => false
-       */
-      function isNaN(value) {
-        // An `NaN` primitive is the only value that is not equal to itself.
-        // Perform the `toStringTag` check first to avoid errors with some
-        // ActiveX objects in IE.
-        return isNumber(value) && value != +value;
-      }
-  
-      /**
-       * Checks if `value` is a pristine native function.
-       *
-       * **Note:** This method can't reliably detect native functions in the presence
-       * of the core-js package because core-js circumvents this kind of detection.
-       * Despite multiple requests, the core-js maintainer has made it clear: any
-       * attempt to fix the detection will be obstructed. As a result, we're left
-       * with little choice but to throw an error. Unfortunately, this also affects
-       * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),
-       * which rely on core-js.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a native function,
-       *  else `false`.
-       * @example
-       *
-       * _.isNative(Array.prototype.push);
-       * // => true
-       *
-       * _.isNative(_);
-       * // => false
-       */
-      function isNative(value) {
-        if (isMaskable(value)) {
-          throw new Error(CORE_ERROR_TEXT);
-        }
-        return baseIsNative(value);
-      }
-  
-      /**
-       * Checks if `value` is `null`.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is `null`, else `false`.
-       * @example
-       *
-       * _.isNull(null);
-       * // => true
-       *
-       * _.isNull(void 0);
-       * // => false
-       */
-      function isNull(value) {
-        return value === null;
-      }
-  
-      /**
-       * Checks if `value` is `null` or `undefined`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
-       * @example
-       *
-       * _.isNil(null);
-       * // => true
-       *
-       * _.isNil(void 0);
-       * // => true
-       *
-       * _.isNil(NaN);
-       * // => false
-       */
-      function isNil(value) {
-        return value == null;
-      }
-  
-      /**
-       * Checks if `value` is classified as a `Number` primitive or object.
-       *
-       * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are
-       * classified as numbers, use the `_.isFinite` method.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a number, else `false`.
-       * @example
-       *
-       * _.isNumber(3);
-       * // => true
-       *
-       * _.isNumber(Number.MIN_VALUE);
-       * // => true
-       *
-       * _.isNumber(Infinity);
-       * // => true
-       *
-       * _.isNumber('3');
-       * // => false
-       */
-      function isNumber(value) {
-        return typeof value == 'number' ||
-          (isObjectLike(value) && baseGetTag(value) == numberTag);
-      }
-  
-      /**
-       * Checks if `value` is a plain object, that is, an object created by the
-       * `Object` constructor or one with a `[[Prototype]]` of `null`.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.8.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
-       * @example
-       *
-       * function Foo() {
-       *   this.a = 1;
-       * }
-       *
-       * _.isPlainObject(new Foo);
-       * // => false
-       *
-       * _.isPlainObject([1, 2, 3]);
-       * // => false
-       *
-       * _.isPlainObject({ 'x': 0, 'y': 0 });
-       * // => true
-       *
-       * _.isPlainObject(Object.create(null));
-       * // => true
-       */
-      function isPlainObject(value) {
-        if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
-          return false;
-        }
-        var proto = getPrototype(value);
-        if (proto === null) {
-          return true;
-        }
-        var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
-        return typeof Ctor == 'function' && Ctor instanceof Ctor &&
-          funcToString.call(Ctor) == objectCtorString;
-      }
-  
-      /**
-       * Checks if `value` is classified as a `RegExp` object.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.1.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
-       * @example
-       *
-       * _.isRegExp(/abc/);
-       * // => true
-       *
-       * _.isRegExp('/abc/');
-       * // => false
-       */
-      var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
-  
-      /**
-       * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754
-       * double precision number which isn't the result of a rounded unsafe integer.
-       *
-       * **Note:** This method is based on
-       * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.
-       * @example
-       *
-       * _.isSafeInteger(3);
-       * // => true
-       *
-       * _.isSafeInteger(Number.MIN_VALUE);
-       * // => false
-       *
-       * _.isSafeInteger(Infinity);
-       * // => false
-       *
-       * _.isSafeInteger('3');
-       * // => false
-       */
-      function isSafeInteger(value) {
-        return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;
-      }
-  
-      /**
-       * Checks if `value` is classified as a `Set` object.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.3.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a set, else `false`.
-       * @example
-       *
-       * _.isSet(new Set);
-       * // => true
-       *
-       * _.isSet(new WeakSet);
-       * // => false
-       */
-      var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
-  
-      /**
-       * Checks if `value` is classified as a `String` primitive or object.
-       *
-       * @static
-       * @since 0.1.0
-       * @memberOf _
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a string, else `false`.
-       * @example
-       *
-       * _.isString('abc');
-       * // => true
-       *
-       * _.isString(1);
-       * // => false
-       */
-      function isString(value) {
-        return typeof value == 'string' ||
-          (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
-      }
-  
-      /**
-       * Checks if `value` is classified as a `Symbol` primitive or object.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
-       * @example
-       *
-       * _.isSymbol(Symbol.iterator);
-       * // => true
-       *
-       * _.isSymbol('abc');
-       * // => false
-       */
-      function isSymbol(value) {
-        return typeof value == 'symbol' ||
-          (isObjectLike(value) && baseGetTag(value) == symbolTag);
-      }
-  
-      /**
-       * Checks if `value` is classified as a typed array.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
-       * @example
-       *
-       * _.isTypedArray(new Uint8Array);
-       * // => true
-       *
-       * _.isTypedArray([]);
-       * // => false
-       */
-      var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
-  
-      /**
-       * Checks if `value` is `undefined`.
-       *
-       * @static
-       * @since 0.1.0
-       * @memberOf _
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
-       * @example
-       *
-       * _.isUndefined(void 0);
-       * // => true
-       *
-       * _.isUndefined(null);
-       * // => false
-       */
-      function isUndefined(value) {
-        return value === undefined;
-      }
-  
-      /**
-       * Checks if `value` is classified as a `WeakMap` object.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.3.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.
-       * @example
-       *
-       * _.isWeakMap(new WeakMap);
-       * // => true
-       *
-       * _.isWeakMap(new Map);
-       * // => false
-       */
-      function isWeakMap(value) {
-        return isObjectLike(value) && getTag(value) == weakMapTag;
-      }
-  
-      /**
-       * Checks if `value` is classified as a `WeakSet` object.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.3.0
-       * @category Lang
-       * @param {*} value The value to check.
-       * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.
-       * @example
-       *
-       * _.isWeakSet(new WeakSet);
-       * // => true
-       *
-       * _.isWeakSet(new Set);
-       * // => false
-       */
-      function isWeakSet(value) {
-        return isObjectLike(value) && baseGetTag(value) == weakSetTag;
-      }
-  
-      /**
-       * Checks if `value` is less than `other`.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.9.0
-       * @category Lang
-       * @param {*} value The value to compare.
-       * @param {*} other The other value to compare.
-       * @returns {boolean} Returns `true` if `value` is less than `other`,
-       *  else `false`.
-       * @see _.gt
-       * @example
-       *
-       * _.lt(1, 3);
-       * // => true
-       *
-       * _.lt(3, 3);
-       * // => false
-       *
-       * _.lt(3, 1);
-       * // => false
-       */
-      var lt = createRelationalOperation(baseLt);
-  
-      /**
-       * Checks if `value` is less than or equal to `other`.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.9.0
-       * @category Lang
-       * @param {*} value The value to compare.
-       * @param {*} other The other value to compare.
-       * @returns {boolean} Returns `true` if `value` is less than or equal to
-       *  `other`, else `false`.
-       * @see _.gte
-       * @example
-       *
-       * _.lte(1, 3);
-       * // => true
-       *
-       * _.lte(3, 3);
-       * // => true
-       *
-       * _.lte(3, 1);
-       * // => false
-       */
-      var lte = createRelationalOperation(function(value, other) {
-        return value <= other;
-      });
-  
-      /**
-       * Converts `value` to an array.
-       *
-       * @static
-       * @since 0.1.0
-       * @memberOf _
-       * @category Lang
-       * @param {*} value The value to convert.
-       * @returns {Array} Returns the converted array.
-       * @example
-       *
-       * _.toArray({ 'a': 1, 'b': 2 });
-       * // => [1, 2]
-       *
-       * _.toArray('abc');
-       * // => ['a', 'b', 'c']
-       *
-       * _.toArray(1);
-       * // => []
-       *
-       * _.toArray(null);
-       * // => []
-       */
-      function toArray(value) {
-        if (!value) {
-          return [];
-        }
-        if (isArrayLike(value)) {
-          return isString(value) ? stringToArray(value) : copyArray(value);
-        }
-        if (symIterator && value[symIterator]) {
-          return iteratorToArray(value[symIterator]());
-        }
-        var tag = getTag(value),
-            func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);
-  
-        return func(value);
-      }
-  
-      /**
-       * Converts `value` to a finite number.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.12.0
-       * @category Lang
-       * @param {*} value The value to convert.
-       * @returns {number} Returns the converted number.
-       * @example
-       *
-       * _.toFinite(3.2);
-       * // => 3.2
-       *
-       * _.toFinite(Number.MIN_VALUE);
-       * // => 5e-324
-       *
-       * _.toFinite(Infinity);
-       * // => 1.7976931348623157e+308
-       *
-       * _.toFinite('3.2');
-       * // => 3.2
-       */
-      function toFinite(value) {
-        if (!value) {
-          return value === 0 ? value : 0;
-        }
-        value = toNumber(value);
-        if (value === INFINITY || value === -INFINITY) {
-          var sign = (value < 0 ? -1 : 1);
-          return sign * MAX_INTEGER;
-        }
-        return value === value ? value : 0;
-      }
-  
-      /**
-       * Converts `value` to an integer.
-       *
-       * **Note:** This method is loosely based on
-       * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Lang
-       * @param {*} value The value to convert.
-       * @returns {number} Returns the converted integer.
-       * @example
-       *
-       * _.toInteger(3.2);
-       * // => 3
-       *
-       * _.toInteger(Number.MIN_VALUE);
-       * // => 0
-       *
-       * _.toInteger(Infinity);
-       * // => 1.7976931348623157e+308
-       *
-       * _.toInteger('3.2');
-       * // => 3
-       */
-      function toInteger(value) {
-        var result = toFinite(value),
-            remainder = result % 1;
-  
-        return result === result ? (remainder ? result - remainder : result) : 0;
-      }
-  
-      /**
-       * Converts `value` to an integer suitable for use as the length of an
-       * array-like object.
-       *
-       * **Note:** This method is based on
-       * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Lang
-       * @param {*} value The value to convert.
-       * @returns {number} Returns the converted integer.
-       * @example
-       *
-       * _.toLength(3.2);
-       * // => 3
-       *
-       * _.toLength(Number.MIN_VALUE);
-       * // => 0
-       *
-       * _.toLength(Infinity);
-       * // => 4294967295
-       *
-       * _.toLength('3.2');
-       * // => 3
-       */
-      function toLength(value) {
-        return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;
-      }
-  
-      /**
-       * Converts `value` to a number.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Lang
-       * @param {*} value The value to process.
-       * @returns {number} Returns the number.
-       * @example
-       *
-       * _.toNumber(3.2);
-       * // => 3.2
-       *
-       * _.toNumber(Number.MIN_VALUE);
-       * // => 5e-324
-       *
-       * _.toNumber(Infinity);
-       * // => Infinity
-       *
-       * _.toNumber('3.2');
-       * // => 3.2
-       */
-      function toNumber(value) {
-        if (typeof value == 'number') {
-          return value;
-        }
-        if (isSymbol(value)) {
-          return NAN;
-        }
-        if (isObject(value)) {
-          var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
-          value = isObject(other) ? (other + '') : other;
-        }
-        if (typeof value != 'string') {
-          return value === 0 ? value : +value;
-        }
-        value = value.replace(reTrim, '');
-        var isBinary = reIsBinary.test(value);
-        return (isBinary || reIsOctal.test(value))
-          ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
-          : (reIsBadHex.test(value) ? NAN : +value);
-      }
-  
-      /**
-       * Converts `value` to a plain object flattening inherited enumerable string
-       * keyed properties of `value` to own properties of the plain object.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Lang
-       * @param {*} value The value to convert.
-       * @returns {Object} Returns the converted plain object.
-       * @example
-       *
-       * function Foo() {
-       *   this.b = 2;
-       * }
-       *
-       * Foo.prototype.c = 3;
-       *
-       * _.assign({ 'a': 1 }, new Foo);
-       * // => { 'a': 1, 'b': 2 }
-       *
-       * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
-       * // => { 'a': 1, 'b': 2, 'c': 3 }
-       */
-      function toPlainObject(value) {
-        return copyObject(value, keysIn(value));
-      }
-  
-      /**
-       * Converts `value` to a safe integer. A safe integer can be compared and
-       * represented correctly.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Lang
-       * @param {*} value The value to convert.
-       * @returns {number} Returns the converted integer.
-       * @example
-       *
-       * _.toSafeInteger(3.2);
-       * // => 3
-       *
-       * _.toSafeInteger(Number.MIN_VALUE);
-       * // => 0
-       *
-       * _.toSafeInteger(Infinity);
-       * // => 9007199254740991
-       *
-       * _.toSafeInteger('3.2');
-       * // => 3
-       */
-      function toSafeInteger(value) {
-        return value
-          ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)
-          : (value === 0 ? value : 0);
-      }
-  
-      /**
-       * Converts `value` to a string. An empty string is returned for `null`
-       * and `undefined` values. The sign of `-0` is preserved.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Lang
-       * @param {*} value The value to convert.
-       * @returns {string} Returns the converted string.
-       * @example
-       *
-       * _.toString(null);
-       * // => ''
-       *
-       * _.toString(-0);
-       * // => '-0'
-       *
-       * _.toString([1, 2, 3]);
-       * // => '1,2,3'
-       */
-      function toString(value) {
-        return value == null ? '' : baseToString(value);
-      }
-  
-      /*------------------------------------------------------------------------*/
-  
-      /**
-       * Assigns own enumerable string keyed properties of source objects to the
-       * destination object. Source objects are applied from left to right.
-       * Subsequent sources overwrite property assignments of previous sources.
-       *
-       * **Note:** This method mutates `object` and is loosely based on
-       * [`Object.assign`](https://mdn.io/Object/assign).
-       *
-       * @static
-       * @memberOf _
-       * @since 0.10.0
-       * @category Object
-       * @param {Object} object The destination object.
-       * @param {...Object} [sources] The source objects.
-       * @returns {Object} Returns `object`.
-       * @see _.assignIn
-       * @example
-       *
-       * function Foo() {
-       *   this.a = 1;
-       * }
-       *
-       * function Bar() {
-       *   this.c = 3;
-       * }
-       *
-       * Foo.prototype.b = 2;
-       * Bar.prototype.d = 4;
-       *
-       * _.assign({ 'a': 0 }, new Foo, new Bar);
-       * // => { 'a': 1, 'c': 3 }
-       */
-      var assign = createAssigner(function(object, source) {
-        if (isPrototype(source) || isArrayLike(source)) {
-          copyObject(source, keys(source), object);
-          return;
-        }
-        for (var key in source) {
-          if (hasOwnProperty.call(source, key)) {
-            assignValue(object, key, source[key]);
-          }
-        }
-      });
-  
-      /**
-       * This method is like `_.assign` except that it iterates over own and
-       * inherited source properties.
-       *
-       * **Note:** This method mutates `object`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @alias extend
-       * @category Object
-       * @param {Object} object The destination object.
-       * @param {...Object} [sources] The source objects.
-       * @returns {Object} Returns `object`.
-       * @see _.assign
-       * @example
-       *
-       * function Foo() {
-       *   this.a = 1;
-       * }
-       *
-       * function Bar() {
-       *   this.c = 3;
-       * }
-       *
-       * Foo.prototype.b = 2;
-       * Bar.prototype.d = 4;
-       *
-       * _.assignIn({ 'a': 0 }, new Foo, new Bar);
-       * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
-       */
-      var assignIn = createAssigner(function(object, source) {
-        copyObject(source, keysIn(source), object);
-      });
-  
-      /**
-       * This method is like `_.assignIn` except that it accepts `customizer`
-       * which is invoked to produce the assigned values. If `customizer` returns
-       * `undefined`, assignment is handled by the method instead. The `customizer`
-       * is invoked with five arguments: (objValue, srcValue, key, object, source).
-       *
-       * **Note:** This method mutates `object`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @alias extendWith
-       * @category Object
-       * @param {Object} object The destination object.
-       * @param {...Object} sources The source objects.
-       * @param {Function} [customizer] The function to customize assigned values.
-       * @returns {Object} Returns `object`.
-       * @see _.assignWith
-       * @example
-       *
-       * function customizer(objValue, srcValue) {
-       *   return _.isUndefined(objValue) ? srcValue : objValue;
-       * }
-       *
-       * var defaults = _.partialRight(_.assignInWith, customizer);
-       *
-       * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
-       * // => { 'a': 1, 'b': 2 }
-       */
-      var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {
-        copyObject(source, keysIn(source), object, customizer);
-      });
-  
-      /**
-       * This method is like `_.assign` except that it accepts `customizer`
-       * which is invoked to produce the assigned values. If `customizer` returns
-       * `undefined`, assignment is handled by the method instead. The `customizer`
-       * is invoked with five arguments: (objValue, srcValue, key, object, source).
-       *
-       * **Note:** This method mutates `object`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Object
-       * @param {Object} object The destination object.
-       * @param {...Object} sources The source objects.
-       * @param {Function} [customizer] The function to customize assigned values.
-       * @returns {Object} Returns `object`.
-       * @see _.assignInWith
-       * @example
-       *
-       * function customizer(objValue, srcValue) {
-       *   return _.isUndefined(objValue) ? srcValue : objValue;
-       * }
-       *
-       * var defaults = _.partialRight(_.assignWith, customizer);
-       *
-       * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
-       * // => { 'a': 1, 'b': 2 }
-       */
-      var assignWith = createAssigner(function(object, source, srcIndex, customizer) {
-        copyObject(source, keys(source), object, customizer);
-      });
-  
-      /**
-       * Creates an array of values corresponding to `paths` of `object`.
-       *
-       * @static
-       * @memberOf _
-       * @since 1.0.0
-       * @category Object
-       * @param {Object} object The object to iterate over.
-       * @param {...(string|string[])} [paths] The property paths to pick.
-       * @returns {Array} Returns the picked values.
-       * @example
-       *
-       * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
-       *
-       * _.at(object, ['a[0].b.c', 'a[1]']);
-       * // => [3, 4]
-       */
-      var at = flatRest(baseAt);
-  
-      /**
-       * Creates an object that inherits from the `prototype` object. If a
-       * `properties` object is given, its own enumerable string keyed properties
-       * are assigned to the created object.
-       *
-       * @static
-       * @memberOf _
-       * @since 2.3.0
-       * @category Object
-       * @param {Object} prototype The object to inherit from.
-       * @param {Object} [properties] The properties to assign to the object.
-       * @returns {Object} Returns the new object.
-       * @example
-       *
-       * function Shape() {
-       *   this.x = 0;
-       *   this.y = 0;
-       * }
-       *
-       * function Circle() {
-       *   Shape.call(this);
-       * }
-       *
-       * Circle.prototype = _.create(Shape.prototype, {
-       *   'constructor': Circle
-       * });
-       *
-       * var circle = new Circle;
-       * circle instanceof Circle;
-       * // => true
-       *
-       * circle instanceof Shape;
-       * // => true
-       */
-      function create(prototype, properties) {
-        var result = baseCreate(prototype);
-        return properties == null ? result : baseAssign(result, properties);
-      }
-  
-      /**
-       * Assigns own and inherited enumerable string keyed properties of source
-       * objects to the destination object for all destination properties that
-       * resolve to `undefined`. Source objects are applied from left to right.
-       * Once a property is set, additional values of the same property are ignored.
-       *
-       * **Note:** This method mutates `object`.
-       *
-       * @static
-       * @since 0.1.0
-       * @memberOf _
-       * @category Object
-       * @param {Object} object The destination object.
-       * @param {...Object} [sources] The source objects.
-       * @returns {Object} Returns `object`.
-       * @see _.defaultsDeep
-       * @example
-       *
-       * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
-       * // => { 'a': 1, 'b': 2 }
-       */
-      var defaults = baseRest(function(object, sources) {
-        object = Object(object);
-  
-        var index = -1;
-        var length = sources.length;
-        var guard = length > 2 ? sources[2] : undefined;
-  
-        if (guard && isIterateeCall(sources[0], sources[1], guard)) {
-          length = 1;
-        }
-  
-        while (++index < length) {
-          var source = sources[index];
-          var props = keysIn(source);
-          var propsIndex = -1;
-          var propsLength = props.length;
-  
-          while (++propsIndex < propsLength) {
-            var key = props[propsIndex];
-            var value = object[key];
-  
-            if (value === undefined ||
-                (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {
-              object[key] = source[key];
-            }
-          }
-        }
-  
-        return object;
-      });
-  
-      /**
-       * This method is like `_.defaults` except that it recursively assigns
-       * default properties.
-       *
-       * **Note:** This method mutates `object`.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.10.0
-       * @category Object
-       * @param {Object} object The destination object.
-       * @param {...Object} [sources] The source objects.
-       * @returns {Object} Returns `object`.
-       * @see _.defaults
-       * @example
-       *
-       * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });
-       * // => { 'a': { 'b': 2, 'c': 3 } }
-       */
-      var defaultsDeep = baseRest(function(args) {
-        args.push(undefined, customDefaultsMerge);
-        return apply(mergeWith, undefined, args);
-      });
-  
-      /**
-       * This method is like `_.find` except that it returns the key of the first
-       * element `predicate` returns truthy for instead of the element itself.
-       *
-       * @static
-       * @memberOf _
-       * @since 1.1.0
-       * @category Object
-       * @param {Object} object The object to inspect.
-       * @param {Function} [predicate=_.identity] The function invoked per iteration.
-       * @returns {string|undefined} Returns the key of the matched element,
-       *  else `undefined`.
-       * @example
-       *
-       * var users = {
-       *   'barney':  { 'age': 36, 'active': true },
-       *   'fred':    { 'age': 40, 'active': false },
-       *   'pebbles': { 'age': 1,  'active': true }
-       * };
-       *
-       * _.findKey(users, function(o) { return o.age < 40; });
-       * // => 'barney' (iteration order is not guaranteed)
-       *
-       * // The `_.matches` iteratee shorthand.
-       * _.findKey(users, { 'age': 1, 'active': true });
-       * // => 'pebbles'
-       *
-       * // The `_.matchesProperty` iteratee shorthand.
-       * _.findKey(users, ['active', false]);
-       * // => 'fred'
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.findKey(users, 'active');
-       * // => 'barney'
-       */
-      function findKey(object, predicate) {
-        return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);
-      }
-  
-      /**
-       * This method is like `_.findKey` except that it iterates over elements of
-       * a collection in the opposite order.
-       *
-       * @static
-       * @memberOf _
-       * @since 2.0.0
-       * @category Object
-       * @param {Object} object The object to inspect.
-       * @param {Function} [predicate=_.identity] The function invoked per iteration.
-       * @returns {string|undefined} Returns the key of the matched element,
-       *  else `undefined`.
-       * @example
-       *
-       * var users = {
-       *   'barney':  { 'age': 36, 'active': true },
-       *   'fred':    { 'age': 40, 'active': false },
-       *   'pebbles': { 'age': 1,  'active': true }
-       * };
-       *
-       * _.findLastKey(users, function(o) { return o.age < 40; });
-       * // => returns 'pebbles' assuming `_.findKey` returns 'barney'
-       *
-       * // The `_.matches` iteratee shorthand.
-       * _.findLastKey(users, { 'age': 36, 'active': true });
-       * // => 'barney'
-       *
-       * // The `_.matchesProperty` iteratee shorthand.
-       * _.findLastKey(users, ['active', false]);
-       * // => 'fred'
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.findLastKey(users, 'active');
-       * // => 'pebbles'
-       */
-      function findLastKey(object, predicate) {
-        return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);
-      }
-  
-      /**
-       * Iterates over own and inherited enumerable string keyed properties of an
-       * object and invokes `iteratee` for each property. The iteratee is invoked
-       * with three arguments: (value, key, object). Iteratee functions may exit
-       * iteration early by explicitly returning `false`.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.3.0
-       * @category Object
-       * @param {Object} object The object to iterate over.
-       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-       * @returns {Object} Returns `object`.
-       * @see _.forInRight
-       * @example
-       *
-       * function Foo() {
-       *   this.a = 1;
-       *   this.b = 2;
-       * }
-       *
-       * Foo.prototype.c = 3;
-       *
-       * _.forIn(new Foo, function(value, key) {
-       *   console.log(key);
-       * });
-       * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).
-       */
-      function forIn(object, iteratee) {
-        return object == null
-          ? object
-          : baseFor(object, getIteratee(iteratee, 3), keysIn);
-      }
-  
-      /**
-       * This method is like `_.forIn` except that it iterates over properties of
-       * `object` in the opposite order.
-       *
-       * @static
-       * @memberOf _
-       * @since 2.0.0
-       * @category Object
-       * @param {Object} object The object to iterate over.
-       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-       * @returns {Object} Returns `object`.
-       * @see _.forIn
-       * @example
-       *
-       * function Foo() {
-       *   this.a = 1;
-       *   this.b = 2;
-       * }
-       *
-       * Foo.prototype.c = 3;
-       *
-       * _.forInRight(new Foo, function(value, key) {
-       *   console.log(key);
-       * });
-       * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.
-       */
-      function forInRight(object, iteratee) {
-        return object == null
-          ? object
-          : baseForRight(object, getIteratee(iteratee, 3), keysIn);
-      }
-  
-      /**
-       * Iterates over own enumerable string keyed properties of an object and
-       * invokes `iteratee` for each property. The iteratee is invoked with three
-       * arguments: (value, key, object). Iteratee functions may exit iteration
-       * early by explicitly returning `false`.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.3.0
-       * @category Object
-       * @param {Object} object The object to iterate over.
-       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-       * @returns {Object} Returns `object`.
-       * @see _.forOwnRight
-       * @example
-       *
-       * function Foo() {
-       *   this.a = 1;
-       *   this.b = 2;
-       * }
-       *
-       * Foo.prototype.c = 3;
-       *
-       * _.forOwn(new Foo, function(value, key) {
-       *   console.log(key);
-       * });
-       * // => Logs 'a' then 'b' (iteration order is not guaranteed).
-       */
-      function forOwn(object, iteratee) {
-        return object && baseForOwn(object, getIteratee(iteratee, 3));
-      }
-  
-      /**
-       * This method is like `_.forOwn` except that it iterates over properties of
-       * `object` in the opposite order.
-       *
-       * @static
-       * @memberOf _
-       * @since 2.0.0
-       * @category Object
-       * @param {Object} object The object to iterate over.
-       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-       * @returns {Object} Returns `object`.
-       * @see _.forOwn
-       * @example
-       *
-       * function Foo() {
-       *   this.a = 1;
-       *   this.b = 2;
-       * }
-       *
-       * Foo.prototype.c = 3;
-       *
-       * _.forOwnRight(new Foo, function(value, key) {
-       *   console.log(key);
-       * });
-       * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.
-       */
-      function forOwnRight(object, iteratee) {
-        return object && baseForOwnRight(object, getIteratee(iteratee, 3));
-      }
-  
-      /**
-       * Creates an array of function property names from own enumerable properties
-       * of `object`.
-       *
-       * @static
-       * @since 0.1.0
-       * @memberOf _
-       * @category Object
-       * @param {Object} object The object to inspect.
-       * @returns {Array} Returns the function names.
-       * @see _.functionsIn
-       * @example
-       *
-       * function Foo() {
-       *   this.a = _.constant('a');
-       *   this.b = _.constant('b');
-       * }
-       *
-       * Foo.prototype.c = _.constant('c');
-       *
-       * _.functions(new Foo);
-       * // => ['a', 'b']
-       */
-      function functions(object) {
-        return object == null ? [] : baseFunctions(object, keys(object));
-      }
-  
-      /**
-       * Creates an array of function property names from own and inherited
-       * enumerable properties of `object`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Object
-       * @param {Object} object The object to inspect.
-       * @returns {Array} Returns the function names.
-       * @see _.functions
-       * @example
-       *
-       * function Foo() {
-       *   this.a = _.constant('a');
-       *   this.b = _.constant('b');
-       * }
-       *
-       * Foo.prototype.c = _.constant('c');
-       *
-       * _.functionsIn(new Foo);
-       * // => ['a', 'b', 'c']
-       */
-      function functionsIn(object) {
-        return object == null ? [] : baseFunctions(object, keysIn(object));
-      }
-  
-      /**
-       * Gets the value at `path` of `object`. If the resolved value is
-       * `undefined`, the `defaultValue` is returned in its place.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.7.0
-       * @category Object
-       * @param {Object} object The object to query.
-       * @param {Array|string} path The path of the property to get.
-       * @param {*} [defaultValue] The value returned for `undefined` resolved values.
-       * @returns {*} Returns the resolved value.
-       * @example
-       *
-       * var object = { 'a': [{ 'b': { 'c': 3 } }] };
-       *
-       * _.get(object, 'a[0].b.c');
-       * // => 3
-       *
-       * _.get(object, ['a', '0', 'b', 'c']);
-       * // => 3
-       *
-       * _.get(object, 'a.b.c', 'default');
-       * // => 'default'
-       */
-      function get(object, path, defaultValue) {
-        var result = object == null ? undefined : baseGet(object, path);
-        return result === undefined ? defaultValue : result;
-      }
-  
-      /**
-       * Checks if `path` is a direct property of `object`.
-       *
-       * @static
-       * @since 0.1.0
-       * @memberOf _
-       * @category Object
-       * @param {Object} object The object to query.
-       * @param {Array|string} path The path to check.
-       * @returns {boolean} Returns `true` if `path` exists, else `false`.
-       * @example
-       *
-       * var object = { 'a': { 'b': 2 } };
-       * var other = _.create({ 'a': _.create({ 'b': 2 }) });
-       *
-       * _.has(object, 'a');
-       * // => true
-       *
-       * _.has(object, 'a.b');
-       * // => true
-       *
-       * _.has(object, ['a', 'b']);
-       * // => true
-       *
-       * _.has(other, 'a');
-       * // => false
-       */
-      function has(object, path) {
-        return object != null && hasPath(object, path, baseHas);
-      }
-  
-      /**
-       * Checks if `path` is a direct or inherited property of `object`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Object
-       * @param {Object} object The object to query.
-       * @param {Array|string} path The path to check.
-       * @returns {boolean} Returns `true` if `path` exists, else `false`.
-       * @example
-       *
-       * var object = _.create({ 'a': _.create({ 'b': 2 }) });
-       *
-       * _.hasIn(object, 'a');
-       * // => true
-       *
-       * _.hasIn(object, 'a.b');
-       * // => true
-       *
-       * _.hasIn(object, ['a', 'b']);
-       * // => true
-       *
-       * _.hasIn(object, 'b');
-       * // => false
-       */
-      function hasIn(object, path) {
-        return object != null && hasPath(object, path, baseHasIn);
-      }
-  
-      /**
-       * Creates an object composed of the inverted keys and values of `object`.
-       * If `object` contains duplicate values, subsequent values overwrite
-       * property assignments of previous values.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.7.0
-       * @category Object
-       * @param {Object} object The object to invert.
-       * @returns {Object} Returns the new inverted object.
-       * @example
-       *
-       * var object = { 'a': 1, 'b': 2, 'c': 1 };
-       *
-       * _.invert(object);
-       * // => { '1': 'c', '2': 'b' }
-       */
-      var invert = createInverter(function(result, value, key) {
-        if (value != null &&
-            typeof value.toString != 'function') {
-          value = nativeObjectToString.call(value);
-        }
-  
-        result[value] = key;
-      }, constant(identity));
-  
-      /**
-       * This method is like `_.invert` except that the inverted object is generated
-       * from the results of running each element of `object` thru `iteratee`. The
-       * corresponding inverted value of each inverted key is an array of keys
-       * responsible for generating the inverted value. The iteratee is invoked
-       * with one argument: (value).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.1.0
-       * @category Object
-       * @param {Object} object The object to invert.
-       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-       * @returns {Object} Returns the new inverted object.
-       * @example
-       *
-       * var object = { 'a': 1, 'b': 2, 'c': 1 };
-       *
-       * _.invertBy(object);
-       * // => { '1': ['a', 'c'], '2': ['b'] }
-       *
-       * _.invertBy(object, function(value) {
-       *   return 'group' + value;
-       * });
-       * // => { 'group1': ['a', 'c'], 'group2': ['b'] }
-       */
-      var invertBy = createInverter(function(result, value, key) {
-        if (value != null &&
-            typeof value.toString != 'function') {
-          value = nativeObjectToString.call(value);
-        }
-  
-        if (hasOwnProperty.call(result, value)) {
-          result[value].push(key);
-        } else {
-          result[value] = [key];
-        }
-      }, getIteratee);
-  
-      /**
-       * Invokes the method at `path` of `object`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Object
-       * @param {Object} object The object to query.
-       * @param {Array|string} path The path of the method to invoke.
-       * @param {...*} [args] The arguments to invoke the method with.
-       * @returns {*} Returns the result of the invoked method.
-       * @example
-       *
-       * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };
-       *
-       * _.invoke(object, 'a[0].b.c.slice', 1, 3);
-       * // => [2, 3]
-       */
-      var invoke = baseRest(baseInvoke);
-  
-      /**
-       * Creates an array of the own enumerable property names of `object`.
-       *
-       * **Note:** Non-object values are coerced to objects. See the
-       * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
-       * for more details.
-       *
-       * @static
-       * @since 0.1.0
-       * @memberOf _
-       * @category Object
-       * @param {Object} object The object to query.
-       * @returns {Array} Returns the array of property names.
-       * @example
-       *
-       * function Foo() {
-       *   this.a = 1;
-       *   this.b = 2;
-       * }
-       *
-       * Foo.prototype.c = 3;
-       *
-       * _.keys(new Foo);
-       * // => ['a', 'b'] (iteration order is not guaranteed)
-       *
-       * _.keys('hi');
-       * // => ['0', '1']
-       */
-      function keys(object) {
-        return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
-      }
-  
-      /**
-       * Creates an array of the own and inherited enumerable property names of `object`.
-       *
-       * **Note:** Non-object values are coerced to objects.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Object
-       * @param {Object} object The object to query.
-       * @returns {Array} Returns the array of property names.
-       * @example
-       *
-       * function Foo() {
-       *   this.a = 1;
-       *   this.b = 2;
-       * }
-       *
-       * Foo.prototype.c = 3;
-       *
-       * _.keysIn(new Foo);
-       * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
-       */
-      function keysIn(object) {
-        return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
-      }
-  
-      /**
-       * The opposite of `_.mapValues`; this method creates an object with the
-       * same values as `object` and keys generated by running each own enumerable
-       * string keyed property of `object` thru `iteratee`. The iteratee is invoked
-       * with three arguments: (value, key, object).
-       *
-       * @static
-       * @memberOf _
-       * @since 3.8.0
-       * @category Object
-       * @param {Object} object The object to iterate over.
-       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-       * @returns {Object} Returns the new mapped object.
-       * @see _.mapValues
-       * @example
-       *
-       * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {
-       *   return key + value;
-       * });
-       * // => { 'a1': 1, 'b2': 2 }
-       */
-      function mapKeys(object, iteratee) {
-        var result = {};
-        iteratee = getIteratee(iteratee, 3);
-  
-        baseForOwn(object, function(value, key, object) {
-          baseAssignValue(result, iteratee(value, key, object), value);
-        });
-        return result;
-      }
-  
-      /**
-       * Creates an object with the same keys as `object` and values generated
-       * by running each own enumerable string keyed property of `object` thru
-       * `iteratee`. The iteratee is invoked with three arguments:
-       * (value, key, object).
-       *
-       * @static
-       * @memberOf _
-       * @since 2.4.0
-       * @category Object
-       * @param {Object} object The object to iterate over.
-       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-       * @returns {Object} Returns the new mapped object.
-       * @see _.mapKeys
-       * @example
-       *
-       * var users = {
-       *   'fred':    { 'user': 'fred',    'age': 40 },
-       *   'pebbles': { 'user': 'pebbles', 'age': 1 }
-       * };
-       *
-       * _.mapValues(users, function(o) { return o.age; });
-       * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.mapValues(users, 'age');
-       * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
-       */
-      function mapValues(object, iteratee) {
-        var result = {};
-        iteratee = getIteratee(iteratee, 3);
-  
-        baseForOwn(object, function(value, key, object) {
-          baseAssignValue(result, key, iteratee(value, key, object));
-        });
-        return result;
-      }
-  
-      /**
-       * This method is like `_.assign` except that it recursively merges own and
-       * inherited enumerable string keyed properties of source objects into the
-       * destination object. Source properties that resolve to `undefined` are
-       * skipped if a destination value exists. Array and plain object properties
-       * are merged recursively. Other objects and value types are overridden by
-       * assignment. Source objects are applied from left to right. Subsequent
-       * sources overwrite property assignments of previous sources.
-       *
-       * **Note:** This method mutates `object`.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.5.0
-       * @category Object
-       * @param {Object} object The destination object.
-       * @param {...Object} [sources] The source objects.
-       * @returns {Object} Returns `object`.
-       * @example
-       *
-       * var object = {
-       *   'a': [{ 'b': 2 }, { 'd': 4 }]
-       * };
-       *
-       * var other = {
-       *   'a': [{ 'c': 3 }, { 'e': 5 }]
-       * };
-       *
-       * _.merge(object, other);
-       * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
-       */
-      var merge = createAssigner(function(object, source, srcIndex) {
-        baseMerge(object, source, srcIndex);
-      });
-  
-      /**
-       * This method is like `_.merge` except that it accepts `customizer` which
-       * is invoked to produce the merged values of the destination and source
-       * properties. If `customizer` returns `undefined`, merging is handled by the
-       * method instead. The `customizer` is invoked with six arguments:
-       * (objValue, srcValue, key, object, source, stack).
-       *
-       * **Note:** This method mutates `object`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Object
-       * @param {Object} object The destination object.
-       * @param {...Object} sources The source objects.
-       * @param {Function} customizer The function to customize assigned values.
-       * @returns {Object} Returns `object`.
-       * @example
-       *
-       * function customizer(objValue, srcValue) {
-       *   if (_.isArray(objValue)) {
-       *     return objValue.concat(srcValue);
-       *   }
-       * }
-       *
-       * var object = { 'a': [1], 'b': [2] };
-       * var other = { 'a': [3], 'b': [4] };
-       *
-       * _.mergeWith(object, other, customizer);
-       * // => { 'a': [1, 3], 'b': [2, 4] }
-       */
-      var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {
-        baseMerge(object, source, srcIndex, customizer);
-      });
-  
-      /**
-       * The opposite of `_.pick`; this method creates an object composed of the
-       * own and inherited enumerable property paths of `object` that are not omitted.
-       *
-       * **Note:** This method is considerably slower than `_.pick`.
-       *
-       * @static
-       * @since 0.1.0
-       * @memberOf _
-       * @category Object
-       * @param {Object} object The source object.
-       * @param {...(string|string[])} [paths] The property paths to omit.
-       * @returns {Object} Returns the new object.
-       * @example
-       *
-       * var object = { 'a': 1, 'b': '2', 'c': 3 };
-       *
-       * _.omit(object, ['a', 'c']);
-       * // => { 'b': '2' }
-       */
-      var omit = flatRest(function(object, paths) {
-        var result = {};
-        if (object == null) {
-          return result;
-        }
-        var isDeep = false;
-        paths = arrayMap(paths, function(path) {
-          path = castPath(path, object);
-          isDeep || (isDeep = path.length > 1);
-          return path;
-        });
-        copyObject(object, getAllKeysIn(object), result);
-        if (isDeep) {
-          result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
-        }
-        var length = paths.length;
-        while (length--) {
-          baseUnset(result, paths[length]);
-        }
-        return result;
-      });
-  
-      /**
-       * The opposite of `_.pickBy`; this method creates an object composed of
-       * the own and inherited enumerable string keyed properties of `object` that
-       * `predicate` doesn't return truthy for. The predicate is invoked with two
-       * arguments: (value, key).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Object
-       * @param {Object} object The source object.
-       * @param {Function} [predicate=_.identity] The function invoked per property.
-       * @returns {Object} Returns the new object.
-       * @example
-       *
-       * var object = { 'a': 1, 'b': '2', 'c': 3 };
-       *
-       * _.omitBy(object, _.isNumber);
-       * // => { 'b': '2' }
-       */
-      function omitBy(object, predicate) {
-        return pickBy(object, negate(getIteratee(predicate)));
-      }
-  
-      /**
-       * Creates an object composed of the picked `object` properties.
-       *
-       * @static
-       * @since 0.1.0
-       * @memberOf _
-       * @category Object
-       * @param {Object} object The source object.
-       * @param {...(string|string[])} [paths] The property paths to pick.
-       * @returns {Object} Returns the new object.
-       * @example
-       *
-       * var object = { 'a': 1, 'b': '2', 'c': 3 };
-       *
-       * _.pick(object, ['a', 'c']);
-       * // => { 'a': 1, 'c': 3 }
-       */
-      var pick = flatRest(function(object, paths) {
-        return object == null ? {} : basePick(object, paths);
-      });
-  
-      /**
-       * Creates an object composed of the `object` properties `predicate` returns
-       * truthy for. The predicate is invoked with two arguments: (value, key).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Object
-       * @param {Object} object The source object.
-       * @param {Function} [predicate=_.identity] The function invoked per property.
-       * @returns {Object} Returns the new object.
-       * @example
-       *
-       * var object = { 'a': 1, 'b': '2', 'c': 3 };
-       *
-       * _.pickBy(object, _.isNumber);
-       * // => { 'a': 1, 'c': 3 }
-       */
-      function pickBy(object, predicate) {
-        if (object == null) {
-          return {};
-        }
-        var props = arrayMap(getAllKeysIn(object), function(prop) {
-          return [prop];
-        });
-        predicate = getIteratee(predicate);
-        return basePickBy(object, props, function(value, path) {
-          return predicate(value, path[0]);
-        });
-      }
-  
-      /**
-       * This method is like `_.get` except that if the resolved value is a
-       * function it's invoked with the `this` binding of its parent object and
-       * its result is returned.
-       *
-       * @static
-       * @since 0.1.0
-       * @memberOf _
-       * @category Object
-       * @param {Object} object The object to query.
-       * @param {Array|string} path The path of the property to resolve.
-       * @param {*} [defaultValue] The value returned for `undefined` resolved values.
-       * @returns {*} Returns the resolved value.
-       * @example
-       *
-       * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };
-       *
-       * _.result(object, 'a[0].b.c1');
-       * // => 3
-       *
-       * _.result(object, 'a[0].b.c2');
-       * // => 4
-       *
-       * _.result(object, 'a[0].b.c3', 'default');
-       * // => 'default'
-       *
-       * _.result(object, 'a[0].b.c3', _.constant('default'));
-       * // => 'default'
-       */
-      function result(object, path, defaultValue) {
-        path = castPath(path, object);
-  
-        var index = -1,
-            length = path.length;
-  
-        // Ensure the loop is entered when path is empty.
-        if (!length) {
-          length = 1;
-          object = undefined;
-        }
-        while (++index < length) {
-          var value = object == null ? undefined : object[toKey(path[index])];
-          if (value === undefined) {
-            index = length;
-            value = defaultValue;
-          }
-          object = isFunction(value) ? value.call(object) : value;
-        }
-        return object;
-      }
-  
-      /**
-       * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
-       * it's created. Arrays are created for missing index properties while objects
-       * are created for all other missing properties. Use `_.setWith` to customize
-       * `path` creation.
-       *
-       * **Note:** This method mutates `object`.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.7.0
-       * @category Object
-       * @param {Object} object The object to modify.
-       * @param {Array|string} path The path of the property to set.
-       * @param {*} value The value to set.
-       * @returns {Object} Returns `object`.
-       * @example
-       *
-       * var object = { 'a': [{ 'b': { 'c': 3 } }] };
-       *
-       * _.set(object, 'a[0].b.c', 4);
-       * console.log(object.a[0].b.c);
-       * // => 4
-       *
-       * _.set(object, ['x', '0', 'y', 'z'], 5);
-       * console.log(object.x[0].y.z);
-       * // => 5
-       */
-      function set(object, path, value) {
-        return object == null ? object : baseSet(object, path, value);
-      }
-  
-      /**
-       * This method is like `_.set` except that it accepts `customizer` which is
-       * invoked to produce the objects of `path`.  If `customizer` returns `undefined`
-       * path creation is handled by the method instead. The `customizer` is invoked
-       * with three arguments: (nsValue, key, nsObject).
-       *
-       * **Note:** This method mutates `object`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Object
-       * @param {Object} object The object to modify.
-       * @param {Array|string} path The path of the property to set.
-       * @param {*} value The value to set.
-       * @param {Function} [customizer] The function to customize assigned values.
-       * @returns {Object} Returns `object`.
-       * @example
-       *
-       * var object = {};
-       *
-       * _.setWith(object, '[0][1]', 'a', Object);
-       * // => { '0': { '1': 'a' } }
-       */
-      function setWith(object, path, value, customizer) {
-        customizer = typeof customizer == 'function' ? customizer : undefined;
-        return object == null ? object : baseSet(object, path, value, customizer);
-      }
-  
-      /**
-       * Creates an array of own enumerable string keyed-value pairs for `object`
-       * which can be consumed by `_.fromPairs`. If `object` is a map or set, its
-       * entries are returned.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @alias entries
-       * @category Object
-       * @param {Object} object The object to query.
-       * @returns {Array} Returns the key-value pairs.
-       * @example
-       *
-       * function Foo() {
-       *   this.a = 1;
-       *   this.b = 2;
-       * }
-       *
-       * Foo.prototype.c = 3;
-       *
-       * _.toPairs(new Foo);
-       * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)
-       */
-      var toPairs = createToPairs(keys);
-  
-      /**
-       * Creates an array of own and inherited enumerable string keyed-value pairs
-       * for `object` which can be consumed by `_.fromPairs`. If `object` is a map
-       * or set, its entries are returned.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @alias entriesIn
-       * @category Object
-       * @param {Object} object The object to query.
-       * @returns {Array} Returns the key-value pairs.
-       * @example
-       *
-       * function Foo() {
-       *   this.a = 1;
-       *   this.b = 2;
-       * }
-       *
-       * Foo.prototype.c = 3;
-       *
-       * _.toPairsIn(new Foo);
-       * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)
-       */
-      var toPairsIn = createToPairs(keysIn);
-  
-      /**
-       * An alternative to `_.reduce`; this method transforms `object` to a new
-       * `accumulator` object which is the result of running each of its own
-       * enumerable string keyed properties thru `iteratee`, with each invocation
-       * potentially mutating the `accumulator` object. If `accumulator` is not
-       * provided, a new object with the same `[[Prototype]]` will be used. The
-       * iteratee is invoked with four arguments: (accumulator, value, key, object).
-       * Iteratee functions may exit iteration early by explicitly returning `false`.
-       *
-       * @static
-       * @memberOf _
-       * @since 1.3.0
-       * @category Object
-       * @param {Object} object The object to iterate over.
-       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-       * @param {*} [accumulator] The custom accumulator value.
-       * @returns {*} Returns the accumulated value.
-       * @example
-       *
-       * _.transform([2, 3, 4], function(result, n) {
-       *   result.push(n *= n);
-       *   return n % 2 == 0;
-       * }, []);
-       * // => [4, 9]
-       *
-       * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
-       *   (result[value] || (result[value] = [])).push(key);
-       * }, {});
-       * // => { '1': ['a', 'c'], '2': ['b'] }
-       */
-      function transform(object, iteratee, accumulator) {
-        var isArr = isArray(object),
-            isArrLike = isArr || isBuffer(object) || isTypedArray(object);
-  
-        iteratee = getIteratee(iteratee, 4);
-        if (accumulator == null) {
-          var Ctor = object && object.constructor;
-          if (isArrLike) {
-            accumulator = isArr ? new Ctor : [];
-          }
-          else if (isObject(object)) {
-            accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
-          }
-          else {
-            accumulator = {};
-          }
-        }
-        (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {
-          return iteratee(accumulator, value, index, object);
-        });
-        return accumulator;
-      }
-  
-      /**
-       * Removes the property at `path` of `object`.
-       *
-       * **Note:** This method mutates `object`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Object
-       * @param {Object} object The object to modify.
-       * @param {Array|string} path The path of the property to unset.
-       * @returns {boolean} Returns `true` if the property is deleted, else `false`.
-       * @example
-       *
-       * var object = { 'a': [{ 'b': { 'c': 7 } }] };
-       * _.unset(object, 'a[0].b.c');
-       * // => true
-       *
-       * console.log(object);
-       * // => { 'a': [{ 'b': {} }] };
-       *
-       * _.unset(object, ['a', '0', 'b', 'c']);
-       * // => true
-       *
-       * console.log(object);
-       * // => { 'a': [{ 'b': {} }] };
-       */
-      function unset(object, path) {
-        return object == null ? true : baseUnset(object, path);
-      }
-  
-      /**
-       * This method is like `_.set` except that accepts `updater` to produce the
-       * value to set. Use `_.updateWith` to customize `path` creation. The `updater`
-       * is invoked with one argument: (value).
-       *
-       * **Note:** This method mutates `object`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.6.0
-       * @category Object
-       * @param {Object} object The object to modify.
-       * @param {Array|string} path The path of the property to set.
-       * @param {Function} updater The function to produce the updated value.
-       * @returns {Object} Returns `object`.
-       * @example
-       *
-       * var object = { 'a': [{ 'b': { 'c': 3 } }] };
-       *
-       * _.update(object, 'a[0].b.c', function(n) { return n * n; });
-       * console.log(object.a[0].b.c);
-       * // => 9
-       *
-       * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });
-       * console.log(object.x[0].y.z);
-       * // => 0
-       */
-      function update(object, path, updater) {
-        return object == null ? object : baseUpdate(object, path, castFunction(updater));
-      }
-  
-      /**
-       * This method is like `_.update` except that it accepts `customizer` which is
-       * invoked to produce the objects of `path`.  If `customizer` returns `undefined`
-       * path creation is handled by the method instead. The `customizer` is invoked
-       * with three arguments: (nsValue, key, nsObject).
-       *
-       * **Note:** This method mutates `object`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.6.0
-       * @category Object
-       * @param {Object} object The object to modify.
-       * @param {Array|string} path The path of the property to set.
-       * @param {Function} updater The function to produce the updated value.
-       * @param {Function} [customizer] The function to customize assigned values.
-       * @returns {Object} Returns `object`.
-       * @example
-       *
-       * var object = {};
-       *
-       * _.updateWith(object, '[0][1]', _.constant('a'), Object);
-       * // => { '0': { '1': 'a' } }
-       */
-      function updateWith(object, path, updater, customizer) {
-        customizer = typeof customizer == 'function' ? customizer : undefined;
-        return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);
-      }
-  
-      /**
-       * Creates an array of the own enumerable string keyed property values of `object`.
-       *
-       * **Note:** Non-object values are coerced to objects.
-       *
-       * @static
-       * @since 0.1.0
-       * @memberOf _
-       * @category Object
-       * @param {Object} object The object to query.
-       * @returns {Array} Returns the array of property values.
-       * @example
-       *
-       * function Foo() {
-       *   this.a = 1;
-       *   this.b = 2;
-       * }
-       *
-       * Foo.prototype.c = 3;
-       *
-       * _.values(new Foo);
-       * // => [1, 2] (iteration order is not guaranteed)
-       *
-       * _.values('hi');
-       * // => ['h', 'i']
-       */
-      function values(object) {
-        return object == null ? [] : baseValues(object, keys(object));
-      }
-  
-      /**
-       * Creates an array of the own and inherited enumerable string keyed property
-       * values of `object`.
-       *
-       * **Note:** Non-object values are coerced to objects.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Object
-       * @param {Object} object The object to query.
-       * @returns {Array} Returns the array of property values.
-       * @example
-       *
-       * function Foo() {
-       *   this.a = 1;
-       *   this.b = 2;
-       * }
-       *
-       * Foo.prototype.c = 3;
-       *
-       * _.valuesIn(new Foo);
-       * // => [1, 2, 3] (iteration order is not guaranteed)
-       */
-      function valuesIn(object) {
-        return object == null ? [] : baseValues(object, keysIn(object));
-      }
-  
-      /*------------------------------------------------------------------------*/
-  
-      /**
-       * Clamps `number` within the inclusive `lower` and `upper` bounds.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Number
-       * @param {number} number The number to clamp.
-       * @param {number} [lower] The lower bound.
-       * @param {number} upper The upper bound.
-       * @returns {number} Returns the clamped number.
-       * @example
-       *
-       * _.clamp(-10, -5, 5);
-       * // => -5
-       *
-       * _.clamp(10, -5, 5);
-       * // => 5
-       */
-      function clamp(number, lower, upper) {
-        if (upper === undefined) {
-          upper = lower;
-          lower = undefined;
-        }
-        if (upper !== undefined) {
-          upper = toNumber(upper);
-          upper = upper === upper ? upper : 0;
-        }
-        if (lower !== undefined) {
-          lower = toNumber(lower);
-          lower = lower === lower ? lower : 0;
-        }
-        return baseClamp(toNumber(number), lower, upper);
-      }
-  
-      /**
-       * Checks if `n` is between `start` and up to, but not including, `end`. If
-       * `end` is not specified, it's set to `start` with `start` then set to `0`.
-       * If `start` is greater than `end` the params are swapped to support
-       * negative ranges.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.3.0
-       * @category Number
-       * @param {number} number The number to check.
-       * @param {number} [start=0] The start of the range.
-       * @param {number} end The end of the range.
-       * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
-       * @see _.range, _.rangeRight
-       * @example
-       *
-       * _.inRange(3, 2, 4);
-       * // => true
-       *
-       * _.inRange(4, 8);
-       * // => true
-       *
-       * _.inRange(4, 2);
-       * // => false
-       *
-       * _.inRange(2, 2);
-       * // => false
-       *
-       * _.inRange(1.2, 2);
-       * // => true
-       *
-       * _.inRange(5.2, 4);
-       * // => false
-       *
-       * _.inRange(-3, -2, -6);
-       * // => true
-       */
-      function inRange(number, start, end) {
-        start = toFinite(start);
-        if (end === undefined) {
-          end = start;
-          start = 0;
-        } else {
-          end = toFinite(end);
-        }
-        number = toNumber(number);
-        return baseInRange(number, start, end);
-      }
-  
-      /**
-       * Produces a random number between the inclusive `lower` and `upper` bounds.
-       * If only one argument is provided a number between `0` and the given number
-       * is returned. If `floating` is `true`, or either `lower` or `upper` are
-       * floats, a floating-point number is returned instead of an integer.
-       *
-       * **Note:** JavaScript follows the IEEE-754 standard for resolving
-       * floating-point values which can produce unexpected results.
-       *
-       * @static
-       * @memberOf _
-       * @since 0.7.0
-       * @category Number
-       * @param {number} [lower=0] The lower bound.
-       * @param {number} [upper=1] The upper bound.
-       * @param {boolean} [floating] Specify returning a floating-point number.
-       * @returns {number} Returns the random number.
-       * @example
-       *
-       * _.random(0, 5);
-       * // => an integer between 0 and 5
-       *
-       * _.random(5);
-       * // => also an integer between 0 and 5
-       *
-       * _.random(5, true);
-       * // => a floating-point number between 0 and 5
-       *
-       * _.random(1.2, 5.2);
-       * // => a floating-point number between 1.2 and 5.2
-       */
-      function random(lower, upper, floating) {
-        if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {
-          upper = floating = undefined;
-        }
-        if (floating === undefined) {
-          if (typeof upper == 'boolean') {
-            floating = upper;
-            upper = undefined;
-          }
-          else if (typeof lower == 'boolean') {
-            floating = lower;
-            lower = undefined;
-          }
-        }
-        if (lower === undefined && upper === undefined) {
-          lower = 0;
-          upper = 1;
-        }
-        else {
-          lower = toFinite(lower);
-          if (upper === undefined) {
-            upper = lower;
-            lower = 0;
-          } else {
-            upper = toFinite(upper);
-          }
-        }
-        if (lower > upper) {
-          var temp = lower;
-          lower = upper;
-          upper = temp;
-        }
-        if (floating || lower % 1 || upper % 1) {
-          var rand = nativeRandom();
-          return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);
-        }
-        return baseRandom(lower, upper);
-      }
-  
-      /*------------------------------------------------------------------------*/
-  
-      /**
-       * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category String
-       * @param {string} [string=''] The string to convert.
-       * @returns {string} Returns the camel cased string.
-       * @example
-       *
-       * _.camelCase('Foo Bar');
-       * // => 'fooBar'
-       *
-       * _.camelCase('--foo-bar--');
-       * // => 'fooBar'
-       *
-       * _.camelCase('__FOO_BAR__');
-       * // => 'fooBar'
-       */
-      var camelCase = createCompounder(function(result, word, index) {
-        word = word.toLowerCase();
-        return result + (index ? capitalize(word) : word);
-      });
-  
-      /**
-       * Converts the first character of `string` to upper case and the remaining
-       * to lower case.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category String
-       * @param {string} [string=''] The string to capitalize.
-       * @returns {string} Returns the capitalized string.
-       * @example
-       *
-       * _.capitalize('FRED');
-       * // => 'Fred'
-       */
-      function capitalize(string) {
-        return upperFirst(toString(string).toLowerCase());
-      }
-  
-      /**
-       * Deburrs `string` by converting
-       * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)
-       * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)
-       * letters to basic Latin letters and removing
-       * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category String
-       * @param {string} [string=''] The string to deburr.
-       * @returns {string} Returns the deburred string.
-       * @example
-       *
-       * _.deburr('déjà vu');
-       * // => 'deja vu'
-       */
-      function deburr(string) {
-        string = toString(string);
-        return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');
-      }
-  
-      /**
-       * Checks if `string` ends with the given target string.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category String
-       * @param {string} [string=''] The string to inspect.
-       * @param {string} [target] The string to search for.
-       * @param {number} [position=string.length] The position to search up to.
-       * @returns {boolean} Returns `true` if `string` ends with `target`,
-       *  else `false`.
-       * @example
-       *
-       * _.endsWith('abc', 'c');
-       * // => true
-       *
-       * _.endsWith('abc', 'b');
-       * // => false
-       *
-       * _.endsWith('abc', 'b', 2);
-       * // => true
-       */
-      function endsWith(string, target, position) {
-        string = toString(string);
-        target = baseToString(target);
-  
-        var length = string.length;
-        position = position === undefined
-          ? length
-          : baseClamp(toInteger(position), 0, length);
-  
-        var end = position;
-        position -= target.length;
-        return position >= 0 && string.slice(position, end) == target;
-      }
-  
-      /**
-       * Converts the characters "&", "<", ">", '"', and "'" in `string` to their
-       * corresponding HTML entities.
-       *
-       * **Note:** No other characters are escaped. To escape additional
-       * characters use a third-party library like [_he_](https://mths.be/he).
-       *
-       * Though the ">" character is escaped for symmetry, characters like
-       * ">" and "/" don't need escaping in HTML and have no special meaning
-       * unless they're part of a tag or unquoted attribute value. See
-       * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)
-       * (under "semi-related fun fact") for more details.
-       *
-       * When working with HTML you should always
-       * [quote attribute values](http://wonko.com/post/html-escaping) to reduce
-       * XSS vectors.
-       *
-       * @static
-       * @since 0.1.0
-       * @memberOf _
-       * @category String
-       * @param {string} [string=''] The string to escape.
-       * @returns {string} Returns the escaped string.
-       * @example
-       *
-       * _.escape('fred, barney, & pebbles');
-       * // => 'fred, barney, &amp; pebbles'
-       */
-      function escape(string) {
-        string = toString(string);
-        return (string && reHasUnescapedHtml.test(string))
-          ? string.replace(reUnescapedHtml, escapeHtmlChar)
-          : string;
-      }
-  
-      /**
-       * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+",
-       * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category String
-       * @param {string} [string=''] The string to escape.
-       * @returns {string} Returns the escaped string.
-       * @example
-       *
-       * _.escapeRegExp('[lodash](https://lodash.com/)');
-       * // => '\[lodash\]\(https://lodash\.com/\)'
-       */
-      function escapeRegExp(string) {
-        string = toString(string);
-        return (string && reHasRegExpChar.test(string))
-          ? string.replace(reRegExpChar, '\\$&')
-          : string;
-      }
-  
-      /**
-       * Converts `string` to
-       * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category String
-       * @param {string} [string=''] The string to convert.
-       * @returns {string} Returns the kebab cased string.
-       * @example
-       *
-       * _.kebabCase('Foo Bar');
-       * // => 'foo-bar'
-       *
-       * _.kebabCase('fooBar');
-       * // => 'foo-bar'
-       *
-       * _.kebabCase('__FOO_BAR__');
-       * // => 'foo-bar'
-       */
-      var kebabCase = createCompounder(function(result, word, index) {
-        return result + (index ? '-' : '') + word.toLowerCase();
-      });
-  
-      /**
-       * Converts `string`, as space separated words, to lower case.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category String
-       * @param {string} [string=''] The string to convert.
-       * @returns {string} Returns the lower cased string.
-       * @example
-       *
-       * _.lowerCase('--Foo-Bar--');
-       * // => 'foo bar'
-       *
-       * _.lowerCase('fooBar');
-       * // => 'foo bar'
-       *
-       * _.lowerCase('__FOO_BAR__');
-       * // => 'foo bar'
-       */
-      var lowerCase = createCompounder(function(result, word, index) {
-        return result + (index ? ' ' : '') + word.toLowerCase();
-      });
-  
-      /**
-       * Converts the first character of `string` to lower case.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category String
-       * @param {string} [string=''] The string to convert.
-       * @returns {string} Returns the converted string.
-       * @example
-       *
-       * _.lowerFirst('Fred');
-       * // => 'fred'
-       *
-       * _.lowerFirst('FRED');
-       * // => 'fRED'
-       */
-      var lowerFirst = createCaseFirst('toLowerCase');
-  
-      /**
-       * Pads `string` on the left and right sides if it's shorter than `length`.
-       * Padding characters are truncated if they can't be evenly divided by `length`.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category String
-       * @param {string} [string=''] The string to pad.
-       * @param {number} [length=0] The padding length.
-       * @param {string} [chars=' '] The string used as padding.
-       * @returns {string} Returns the padded string.
-       * @example
-       *
-       * _.pad('abc', 8);
-       * // => '  abc   '
-       *
-       * _.pad('abc', 8, '_-');
-       * // => '_-abc_-_'
-       *
-       * _.pad('abc', 3);
-       * // => 'abc'
-       */
-      function pad(string, length, chars) {
-        string = toString(string);
-        length = toInteger(length);
-  
-        var strLength = length ? stringSize(string) : 0;
-        if (!length || strLength >= length) {
-          return string;
-        }
-        var mid = (length - strLength) / 2;
-        return (
-          createPadding(nativeFloor(mid), chars) +
-          string +
-          createPadding(nativeCeil(mid), chars)
-        );
-      }
-  
-      /**
-       * Pads `string` on the right side if it's shorter than `length`. Padding
-       * characters are truncated if they exceed `length`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category String
-       * @param {string} [string=''] The string to pad.
-       * @param {number} [length=0] The padding length.
-       * @param {string} [chars=' '] The string used as padding.
-       * @returns {string} Returns the padded string.
-       * @example
-       *
-       * _.padEnd('abc', 6);
-       * // => 'abc   '
-       *
-       * _.padEnd('abc', 6, '_-');
-       * // => 'abc_-_'
-       *
-       * _.padEnd('abc', 3);
-       * // => 'abc'
-       */
-      function padEnd(string, length, chars) {
-        string = toString(string);
-        length = toInteger(length);
-  
-        var strLength = length ? stringSize(string) : 0;
-        return (length && strLength < length)
-          ? (string + createPadding(length - strLength, chars))
-          : string;
-      }
-  
-      /**
-       * Pads `string` on the left side if it's shorter than `length`. Padding
-       * characters are truncated if they exceed `length`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category String
-       * @param {string} [string=''] The string to pad.
-       * @param {number} [length=0] The padding length.
-       * @param {string} [chars=' '] The string used as padding.
-       * @returns {string} Returns the padded string.
-       * @example
-       *
-       * _.padStart('abc', 6);
-       * // => '   abc'
-       *
-       * _.padStart('abc', 6, '_-');
-       * // => '_-_abc'
-       *
-       * _.padStart('abc', 3);
-       * // => 'abc'
-       */
-      function padStart(string, length, chars) {
-        string = toString(string);
-        length = toInteger(length);
-  
-        var strLength = length ? stringSize(string) : 0;
-        return (length && strLength < length)
-          ? (createPadding(length - strLength, chars) + string)
-          : string;
-      }
-  
-      /**
-       * Converts `string` to an integer of the specified radix. If `radix` is
-       * `undefined` or `0`, a `radix` of `10` is used unless `value` is a
-       * hexadecimal, in which case a `radix` of `16` is used.
-       *
-       * **Note:** This method aligns with the
-       * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.
-       *
-       * @static
-       * @memberOf _
-       * @since 1.1.0
-       * @category String
-       * @param {string} string The string to convert.
-       * @param {number} [radix=10] The radix to interpret `value` by.
-       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-       * @returns {number} Returns the converted integer.
-       * @example
-       *
-       * _.parseInt('08');
-       * // => 8
-       *
-       * _.map(['6', '08', '10'], _.parseInt);
-       * // => [6, 8, 10]
-       */
-      function parseInt(string, radix, guard) {
-        if (guard || radix == null) {
-          radix = 0;
-        } else if (radix) {
-          radix = +radix;
-        }
-        return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);
-      }
-  
-      /**
-       * Repeats the given string `n` times.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category String
-       * @param {string} [string=''] The string to repeat.
-       * @param {number} [n=1] The number of times to repeat the string.
-       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-       * @returns {string} Returns the repeated string.
-       * @example
-       *
-       * _.repeat('*', 3);
-       * // => '***'
-       *
-       * _.repeat('abc', 2);
-       * // => 'abcabc'
-       *
-       * _.repeat('abc', 0);
-       * // => ''
-       */
-      function repeat(string, n, guard) {
-        if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {
-          n = 1;
-        } else {
-          n = toInteger(n);
-        }
-        return baseRepeat(toString(string), n);
-      }
-  
-      /**
-       * Replaces matches for `pattern` in `string` with `replacement`.
-       *
-       * **Note:** This method is based on
-       * [`String#replace`](https://mdn.io/String/replace).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category String
-       * @param {string} [string=''] The string to modify.
-       * @param {RegExp|string} pattern The pattern to replace.
-       * @param {Function|string} replacement The match replacement.
-       * @returns {string} Returns the modified string.
-       * @example
-       *
-       * _.replace('Hi Fred', 'Fred', 'Barney');
-       * // => 'Hi Barney'
-       */
-      function replace() {
-        var args = arguments,
-            string = toString(args[0]);
-  
-        return args.length < 3 ? string : string.replace(args[1], args[2]);
-      }
-  
-      /**
-       * Converts `string` to
-       * [snake case](https://en.wikipedia.org/wiki/Snake_case).
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category String
-       * @param {string} [string=''] The string to convert.
-       * @returns {string} Returns the snake cased string.
-       * @example
-       *
-       * _.snakeCase('Foo Bar');
-       * // => 'foo_bar'
-       *
-       * _.snakeCase('fooBar');
-       * // => 'foo_bar'
-       *
-       * _.snakeCase('--FOO-BAR--');
-       * // => 'foo_bar'
-       */
-      var snakeCase = createCompounder(function(result, word, index) {
-        return result + (index ? '_' : '') + word.toLowerCase();
-      });
-  
-      /**
-       * Splits `string` by `separator`.
-       *
-       * **Note:** This method is based on
-       * [`String#split`](https://mdn.io/String/split).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category String
-       * @param {string} [string=''] The string to split.
-       * @param {RegExp|string} separator The separator pattern to split by.
-       * @param {number} [limit] The length to truncate results to.
-       * @returns {Array} Returns the string segments.
-       * @example
-       *
-       * _.split('a-b-c', '-', 2);
-       * // => ['a', 'b']
-       */
-      function split(string, separator, limit) {
-        if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {
-          separator = limit = undefined;
-        }
-        limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;
-        if (!limit) {
-          return [];
-        }
-        string = toString(string);
-        if (string && (
-              typeof separator == 'string' ||
-              (separator != null && !isRegExp(separator))
-            )) {
-          separator = baseToString(separator);
-          if (!separator && hasUnicode(string)) {
-            return castSlice(stringToArray(string), 0, limit);
-          }
-        }
-        return string.split(separator, limit);
-      }
-  
-      /**
-       * Converts `string` to
-       * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).
-       *
-       * @static
-       * @memberOf _
-       * @since 3.1.0
-       * @category String
-       * @param {string} [string=''] The string to convert.
-       * @returns {string} Returns the start cased string.
-       * @example
-       *
-       * _.startCase('--foo-bar--');
-       * // => 'Foo Bar'
-       *
-       * _.startCase('fooBar');
-       * // => 'Foo Bar'
-       *
-       * _.startCase('__FOO_BAR__');
-       * // => 'FOO BAR'
-       */
-      var startCase = createCompounder(function(result, word, index) {
-        return result + (index ? ' ' : '') + upperFirst(word);
-      });
-  
-      /**
-       * Checks if `string` starts with the given target string.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category String
-       * @param {string} [string=''] The string to inspect.
-       * @param {string} [target] The string to search for.
-       * @param {number} [position=0] The position to search from.
-       * @returns {boolean} Returns `true` if `string` starts with `target`,
-       *  else `false`.
-       * @example
-       *
-       * _.startsWith('abc', 'a');
-       * // => true
-       *
-       * _.startsWith('abc', 'b');
-       * // => false
-       *
-       * _.startsWith('abc', 'b', 1);
-       * // => true
-       */
-      function startsWith(string, target, position) {
-        string = toString(string);
-        position = position == null
-          ? 0
-          : baseClamp(toInteger(position), 0, string.length);
-  
-        target = baseToString(target);
-        return string.slice(position, position + target.length) == target;
-      }
-  
-      /**
-       * Creates a compiled template function that can interpolate data properties
-       * in "interpolate" delimiters, HTML-escape interpolated data properties in
-       * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data
-       * properties may be accessed as free variables in the template. If a setting
-       * object is given, it takes precedence over `_.templateSettings` values.
-       *
-       * **Note:** In the development build `_.template` utilizes
-       * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)
-       * for easier debugging.
-       *
-       * For more information on precompiling templates see
-       * [lodash's custom builds documentation](https://lodash.com/custom-builds).
-       *
-       * For more information on Chrome extension sandboxes see
-       * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).
-       *
-       * @static
-       * @since 0.1.0
-       * @memberOf _
-       * @category String
-       * @param {string} [string=''] The template string.
-       * @param {Object} [options={}] The options object.
-       * @param {RegExp} [options.escape=_.templateSettings.escape]
-       *  The HTML "escape" delimiter.
-       * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]
-       *  The "evaluate" delimiter.
-       * @param {Object} [options.imports=_.templateSettings.imports]
-       *  An object to import into the template as free variables.
-       * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]
-       *  The "interpolate" delimiter.
-       * @param {string} [options.sourceURL='lodash.templateSources[n]']
-       *  The sourceURL of the compiled template.
-       * @param {string} [options.variable='obj']
-       *  The data object variable name.
-       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-       * @returns {Function} Returns the compiled template function.
-       * @example
-       *
-       * // Use the "interpolate" delimiter to create a compiled template.
-       * var compiled = _.template('hello <%= user %>!');
-       * compiled({ 'user': 'fred' });
-       * // => 'hello fred!'
-       *
-       * // Use the HTML "escape" delimiter to escape data property values.
-       * var compiled = _.template('<b><%- value %></b>');
-       * compiled({ 'value': '<script>' });
-       * // => '<b>&lt;script&gt;</b>'
-       *
-       * // Use the "evaluate" delimiter to execute JavaScript and generate HTML.
-       * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');
-       * compiled({ 'users': ['fred', 'barney'] });
-       * // => '<li>fred</li><li>barney</li>'
-       *
-       * // Use the internal `print` function in "evaluate" delimiters.
-       * var compiled = _.template('<% print("hello " + user); %>!');
-       * compiled({ 'user': 'barney' });
-       * // => 'hello barney!'
-       *
-       * // Use the ES template literal delimiter as an "interpolate" delimiter.
-       * // Disable support by replacing the "interpolate" delimiter.
-       * var compiled = _.template('hello ${ user }!');
-       * compiled({ 'user': 'pebbles' });
-       * // => 'hello pebbles!'
-       *
-       * // Use backslashes to treat delimiters as plain text.
-       * var compiled = _.template('<%= "\\<%- value %\\>" %>');
-       * compiled({ 'value': 'ignored' });
-       * // => '<%- value %>'
-       *
-       * // Use the `imports` option to import `jQuery` as `jq`.
-       * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';
-       * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });
-       * compiled({ 'users': ['fred', 'barney'] });
-       * // => '<li>fred</li><li>barney</li>'
-       *
-       * // Use the `sourceURL` option to specify a custom sourceURL for the template.
-       * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });
-       * compiled(data);
-       * // => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector.
-       *
-       * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.
-       * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });
-       * compiled.source;
-       * // => function(data) {
-       * //   var __t, __p = '';
-       * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';
-       * //   return __p;
-       * // }
-       *
-       * // Use custom template delimiters.
-       * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
-       * var compiled = _.template('hello {{ user }}!');
-       * compiled({ 'user': 'mustache' });
-       * // => 'hello mustache!'
-       *
-       * // Use the `source` property to inline compiled templates for meaningful
-       * // line numbers in error messages and stack traces.
-       * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\
-       *   var JST = {\
-       *     "main": ' + _.template(mainText).source + '\
-       *   };\
-       * ');
-       */
-      function template(string, options, guard) {
-        // Based on John Resig's `tmpl` implementation
-        // (http://ejohn.org/blog/javascript-micro-templating/)
-        // and Laura Doktorova's doT.js (https://github.com/olado/doT).
-        var settings = lodash.templateSettings;
-  
-        if (guard && isIterateeCall(string, options, guard)) {
-          options = undefined;
-        }
-        string = toString(string);
-        options = assignInWith({}, options, settings, customDefaultsAssignIn);
-  
-        var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),
-            importsKeys = keys(imports),
-            importsValues = baseValues(imports, importsKeys);
-  
-        var isEscaping,
-            isEvaluating,
-            index = 0,
-            interpolate = options.interpolate || reNoMatch,
-            source = "__p += '";
-  
-        // Compile the regexp to match each delimiter.
-        var reDelimiters = RegExp(
-          (options.escape || reNoMatch).source + '|' +
-          interpolate.source + '|' +
-          (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +
-          (options.evaluate || reNoMatch).source + '|$'
-        , 'g');
-  
-        // Use a sourceURL for easier debugging.
-        // The sourceURL gets injected into the source that's eval-ed, so be careful
-        // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in
-        // and escape the comment, thus injecting code that gets evaled.
-        var sourceURL = '//# sourceURL=' +
-          (hasOwnProperty.call(options, 'sourceURL')
-            ? (options.sourceURL + '').replace(/\s/g, ' ')
-            : ('lodash.templateSources[' + (++templateCounter) + ']')
-          ) + '\n';
-  
-        string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
-          interpolateValue || (interpolateValue = esTemplateValue);
-  
-          // Escape characters that can't be included in string literals.
-          source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);
-  
-          // Replace delimiters with snippets.
-          if (escapeValue) {
-            isEscaping = true;
-            source += "' +\n__e(" + escapeValue + ") +\n'";
-          }
-          if (evaluateValue) {
-            isEvaluating = true;
-            source += "';\n" + evaluateValue + ";\n__p += '";
-          }
-          if (interpolateValue) {
-            source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
-          }
-          index = offset + match.length;
-  
-          // The JS engine embedded in Adobe products needs `match` returned in
-          // order to produce the correct `offset` value.
-          return match;
-        });
-  
-        source += "';\n";
-  
-        // If `variable` is not specified wrap a with-statement around the generated
-        // code to add the data object to the top of the scope chain.
-        var variable = hasOwnProperty.call(options, 'variable') && options.variable;
-        if (!variable) {
-          source = 'with (obj) {\n' + source + '\n}\n';
-        }
-        // Cleanup code by stripping empty strings.
-        source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)
-          .replace(reEmptyStringMiddle, '$1')
-          .replace(reEmptyStringTrailing, '$1;');
-  
-        // Frame code as the function body.
-        source = 'function(' + (variable || 'obj') + ') {\n' +
-          (variable
-            ? ''
-            : 'obj || (obj = {});\n'
-          ) +
-          "var __t, __p = ''" +
-          (isEscaping
-             ? ', __e = _.escape'
-             : ''
-          ) +
-          (isEvaluating
-            ? ', __j = Array.prototype.join;\n' +
-              "function print() { __p += __j.call(arguments, '') }\n"
-            : ';\n'
-          ) +
-          source +
-          'return __p\n}';
-  
-        var result = attempt(function() {
-          return Function(importsKeys, sourceURL + 'return ' + source)
-            .apply(undefined, importsValues);
-        });
-  
-        // Provide the compiled function's source by its `toString` method or
-        // the `source` property as a convenience for inlining compiled templates.
-        result.source = source;
-        if (isError(result)) {
-          throw result;
-        }
-        return result;
-      }
-  
-      /**
-       * Converts `string`, as a whole, to lower case just like
-       * [String#toLowerCase](https://mdn.io/toLowerCase).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category String
-       * @param {string} [string=''] The string to convert.
-       * @returns {string} Returns the lower cased string.
-       * @example
-       *
-       * _.toLower('--Foo-Bar--');
-       * // => '--foo-bar--'
-       *
-       * _.toLower('fooBar');
-       * // => 'foobar'
-       *
-       * _.toLower('__FOO_BAR__');
-       * // => '__foo_bar__'
-       */
-      function toLower(value) {
-        return toString(value).toLowerCase();
-      }
-  
-      /**
-       * Converts `string`, as a whole, to upper case just like
-       * [String#toUpperCase](https://mdn.io/toUpperCase).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category String
-       * @param {string} [string=''] The string to convert.
-       * @returns {string} Returns the upper cased string.
-       * @example
-       *
-       * _.toUpper('--foo-bar--');
-       * // => '--FOO-BAR--'
-       *
-       * _.toUpper('fooBar');
-       * // => 'FOOBAR'
-       *
-       * _.toUpper('__foo_bar__');
-       * // => '__FOO_BAR__'
-       */
-      function toUpper(value) {
-        return toString(value).toUpperCase();
-      }
-  
-      /**
-       * Removes leading and trailing whitespace or specified characters from `string`.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category String
-       * @param {string} [string=''] The string to trim.
-       * @param {string} [chars=whitespace] The characters to trim.
-       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-       * @returns {string} Returns the trimmed string.
-       * @example
-       *
-       * _.trim('  abc  ');
-       * // => 'abc'
-       *
-       * _.trim('-_-abc-_-', '_-');
-       * // => 'abc'
-       *
-       * _.map(['  foo  ', '  bar  '], _.trim);
-       * // => ['foo', 'bar']
-       */
-      function trim(string, chars, guard) {
-        string = toString(string);
-        if (string && (guard || chars === undefined)) {
-          return string.replace(reTrim, '');
-        }
-        if (!string || !(chars = baseToString(chars))) {
-          return string;
-        }
-        var strSymbols = stringToArray(string),
-            chrSymbols = stringToArray(chars),
-            start = charsStartIndex(strSymbols, chrSymbols),
-            end = charsEndIndex(strSymbols, chrSymbols) + 1;
-  
-        return castSlice(strSymbols, start, end).join('');
-      }
-  
-      /**
-       * Removes trailing whitespace or specified characters from `string`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category String
-       * @param {string} [string=''] The string to trim.
-       * @param {string} [chars=whitespace] The characters to trim.
-       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-       * @returns {string} Returns the trimmed string.
-       * @example
-       *
-       * _.trimEnd('  abc  ');
-       * // => '  abc'
-       *
-       * _.trimEnd('-_-abc-_-', '_-');
-       * // => '-_-abc'
-       */
-      function trimEnd(string, chars, guard) {
-        string = toString(string);
-        if (string && (guard || chars === undefined)) {
-          return string.replace(reTrimEnd, '');
-        }
-        if (!string || !(chars = baseToString(chars))) {
-          return string;
-        }
-        var strSymbols = stringToArray(string),
-            end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;
-  
-        return castSlice(strSymbols, 0, end).join('');
-      }
-  
-      /**
-       * Removes leading whitespace or specified characters from `string`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category String
-       * @param {string} [string=''] The string to trim.
-       * @param {string} [chars=whitespace] The characters to trim.
-       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-       * @returns {string} Returns the trimmed string.
-       * @example
-       *
-       * _.trimStart('  abc  ');
-       * // => 'abc  '
-       *
-       * _.trimStart('-_-abc-_-', '_-');
-       * // => 'abc-_-'
-       */
-      function trimStart(string, chars, guard) {
-        string = toString(string);
-        if (string && (guard || chars === undefined)) {
-          return string.replace(reTrimStart, '');
-        }
-        if (!string || !(chars = baseToString(chars))) {
-          return string;
-        }
-        var strSymbols = stringToArray(string),
-            start = charsStartIndex(strSymbols, stringToArray(chars));
-  
-        return castSlice(strSymbols, start).join('');
-      }
-  
-      /**
-       * Truncates `string` if it's longer than the given maximum string length.
-       * The last characters of the truncated string are replaced with the omission
-       * string which defaults to "...".
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category String
-       * @param {string} [string=''] The string to truncate.
-       * @param {Object} [options={}] The options object.
-       * @param {number} [options.length=30] The maximum string length.
-       * @param {string} [options.omission='...'] The string to indicate text is omitted.
-       * @param {RegExp|string} [options.separator] The separator pattern to truncate to.
-       * @returns {string} Returns the truncated string.
-       * @example
-       *
-       * _.truncate('hi-diddly-ho there, neighborino');
-       * // => 'hi-diddly-ho there, neighbo...'
-       *
-       * _.truncate('hi-diddly-ho there, neighborino', {
-       *   'length': 24,
-       *   'separator': ' '
-       * });
-       * // => 'hi-diddly-ho there,...'
-       *
-       * _.truncate('hi-diddly-ho there, neighborino', {
-       *   'length': 24,
-       *   'separator': /,? +/
-       * });
-       * // => 'hi-diddly-ho there...'
-       *
-       * _.truncate('hi-diddly-ho there, neighborino', {
-       *   'omission': ' [...]'
-       * });
-       * // => 'hi-diddly-ho there, neig [...]'
-       */
-      function truncate(string, options) {
-        var length = DEFAULT_TRUNC_LENGTH,
-            omission = DEFAULT_TRUNC_OMISSION;
-  
-        if (isObject(options)) {
-          var separator = 'separator' in options ? options.separator : separator;
-          length = 'length' in options ? toInteger(options.length) : length;
-          omission = 'omission' in options ? baseToString(options.omission) : omission;
-        }
-        string = toString(string);
-  
-        var strLength = string.length;
-        if (hasUnicode(string)) {
-          var strSymbols = stringToArray(string);
-          strLength = strSymbols.length;
-        }
-        if (length >= strLength) {
-          return string;
-        }
-        var end = length - stringSize(omission);
-        if (end < 1) {
-          return omission;
-        }
-        var result = strSymbols
-          ? castSlice(strSymbols, 0, end).join('')
-          : string.slice(0, end);
-  
-        if (separator === undefined) {
-          return result + omission;
-        }
-        if (strSymbols) {
-          end += (result.length - end);
-        }
-        if (isRegExp(separator)) {
-          if (string.slice(end).search(separator)) {
-            var match,
-                substring = result;
-  
-            if (!separator.global) {
-              separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');
-            }
-            separator.lastIndex = 0;
-            while ((match = separator.exec(substring))) {
-              var newEnd = match.index;
-            }
-            result = result.slice(0, newEnd === undefined ? end : newEnd);
-          }
-        } else if (string.indexOf(baseToString(separator), end) != end) {
-          var index = result.lastIndexOf(separator);
-          if (index > -1) {
-            result = result.slice(0, index);
-          }
-        }
-        return result + omission;
-      }
-  
-      /**
-       * The inverse of `_.escape`; this method converts the HTML entities
-       * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to
-       * their corresponding characters.
-       *
-       * **Note:** No other HTML entities are unescaped. To unescape additional
-       * HTML entities use a third-party library like [_he_](https://mths.be/he).
-       *
-       * @static
-       * @memberOf _
-       * @since 0.6.0
-       * @category String
-       * @param {string} [string=''] The string to unescape.
-       * @returns {string} Returns the unescaped string.
-       * @example
-       *
-       * _.unescape('fred, barney, &amp; pebbles');
-       * // => 'fred, barney, & pebbles'
-       */
-      function unescape(string) {
-        string = toString(string);
-        return (string && reHasEscapedHtml.test(string))
-          ? string.replace(reEscapedHtml, unescapeHtmlChar)
-          : string;
-      }
-  
-      /**
-       * Converts `string`, as space separated words, to upper case.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category String
-       * @param {string} [string=''] The string to convert.
-       * @returns {string} Returns the upper cased string.
-       * @example
-       *
-       * _.upperCase('--foo-bar');
-       * // => 'FOO BAR'
-       *
-       * _.upperCase('fooBar');
-       * // => 'FOO BAR'
-       *
-       * _.upperCase('__foo_bar__');
-       * // => 'FOO BAR'
-       */
-      var upperCase = createCompounder(function(result, word, index) {
-        return result + (index ? ' ' : '') + word.toUpperCase();
-      });
-  
-      /**
-       * Converts the first character of `string` to upper case.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category String
-       * @param {string} [string=''] The string to convert.
-       * @returns {string} Returns the converted string.
-       * @example
-       *
-       * _.upperFirst('fred');
-       * // => 'Fred'
-       *
-       * _.upperFirst('FRED');
-       * // => 'FRED'
-       */
-      var upperFirst = createCaseFirst('toUpperCase');
-  
-      /**
-       * Splits `string` into an array of its words.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category String
-       * @param {string} [string=''] The string to inspect.
-       * @param {RegExp|string} [pattern] The pattern to match words.
-       * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-       * @returns {Array} Returns the words of `string`.
-       * @example
-       *
-       * _.words('fred, barney, & pebbles');
-       * // => ['fred', 'barney', 'pebbles']
-       *
-       * _.words('fred, barney, & pebbles', /[^, ]+/g);
-       * // => ['fred', 'barney', '&', 'pebbles']
-       */
-      function words(string, pattern, guard) {
-        string = toString(string);
-        pattern = guard ? undefined : pattern;
-  
-        if (pattern === undefined) {
-          return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
-        }
-        return string.match(pattern) || [];
-      }
-  
-      /*------------------------------------------------------------------------*/
-  
-      /**
-       * Attempts to invoke `func`, returning either the result or the caught error
-       * object. Any additional arguments are provided to `func` when it's invoked.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Util
-       * @param {Function} func The function to attempt.
-       * @param {...*} [args] The arguments to invoke `func` with.
-       * @returns {*} Returns the `func` result or error object.
-       * @example
-       *
-       * // Avoid throwing errors for invalid selectors.
-       * var elements = _.attempt(function(selector) {
-       *   return document.querySelectorAll(selector);
-       * }, '>_>');
-       *
-       * if (_.isError(elements)) {
-       *   elements = [];
-       * }
-       */
-      var attempt = baseRest(function(func, args) {
-        try {
-          return apply(func, undefined, args);
-        } catch (e) {
-          return isError(e) ? e : new Error(e);
-        }
-      });
-  
-      /**
-       * Binds methods of an object to the object itself, overwriting the existing
-       * method.
-       *
-       * **Note:** This method doesn't set the "length" property of bound functions.
-       *
-       * @static
-       * @since 0.1.0
-       * @memberOf _
-       * @category Util
-       * @param {Object} object The object to bind and assign the bound methods to.
-       * @param {...(string|string[])} methodNames The object method names to bind.
-       * @returns {Object} Returns `object`.
-       * @example
-       *
-       * var view = {
-       *   'label': 'docs',
-       *   'click': function() {
-       *     console.log('clicked ' + this.label);
-       *   }
-       * };
-       *
-       * _.bindAll(view, ['click']);
-       * jQuery(element).on('click', view.click);
-       * // => Logs 'clicked docs' when clicked.
-       */
-      var bindAll = flatRest(function(object, methodNames) {
-        arrayEach(methodNames, function(key) {
-          key = toKey(key);
-          baseAssignValue(object, key, bind(object[key], object));
-        });
-        return object;
-      });
-  
-      /**
-       * Creates a function that iterates over `pairs` and invokes the corresponding
-       * function of the first predicate to return truthy. The predicate-function
-       * pairs are invoked with the `this` binding and arguments of the created
-       * function.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Util
-       * @param {Array} pairs The predicate-function pairs.
-       * @returns {Function} Returns the new composite function.
-       * @example
-       *
-       * var func = _.cond([
-       *   [_.matches({ 'a': 1 }),           _.constant('matches A')],
-       *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],
-       *   [_.stubTrue,                      _.constant('no match')]
-       * ]);
-       *
-       * func({ 'a': 1, 'b': 2 });
-       * // => 'matches A'
-       *
-       * func({ 'a': 0, 'b': 1 });
-       * // => 'matches B'
-       *
-       * func({ 'a': '1', 'b': '2' });
-       * // => 'no match'
-       */
-      function cond(pairs) {
-        var length = pairs == null ? 0 : pairs.length,
-            toIteratee = getIteratee();
-  
-        pairs = !length ? [] : arrayMap(pairs, function(pair) {
-          if (typeof pair[1] != 'function') {
-            throw new TypeError(FUNC_ERROR_TEXT);
-          }
-          return [toIteratee(pair[0]), pair[1]];
-        });
-  
-        return baseRest(function(args) {
-          var index = -1;
-          while (++index < length) {
-            var pair = pairs[index];
-            if (apply(pair[0], this, args)) {
-              return apply(pair[1], this, args);
-            }
-          }
-        });
-      }
-  
-      /**
-       * Creates a function that invokes the predicate properties of `source` with
-       * the corresponding property values of a given object, returning `true` if
-       * all predicates return truthy, else `false`.
-       *
-       * **Note:** The created function is equivalent to `_.conformsTo` with
-       * `source` partially applied.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Util
-       * @param {Object} source The object of property predicates to conform to.
-       * @returns {Function} Returns the new spec function.
-       * @example
-       *
-       * var objects = [
-       *   { 'a': 2, 'b': 1 },
-       *   { 'a': 1, 'b': 2 }
-       * ];
-       *
-       * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));
-       * // => [{ 'a': 1, 'b': 2 }]
-       */
-      function conforms(source) {
-        return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
-      }
-  
-      /**
-       * Creates a function that returns `value`.
-       *
-       * @static
-       * @memberOf _
-       * @since 2.4.0
-       * @category Util
-       * @param {*} value The value to return from the new function.
-       * @returns {Function} Returns the new constant function.
-       * @example
-       *
-       * var objects = _.times(2, _.constant({ 'a': 1 }));
-       *
-       * console.log(objects);
-       * // => [{ 'a': 1 }, { 'a': 1 }]
-       *
-       * console.log(objects[0] === objects[1]);
-       * // => true
-       */
-      function constant(value) {
-        return function() {
-          return value;
-        };
-      }
-  
-      /**
-       * Checks `value` to determine whether a default value should be returned in
-       * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,
-       * or `undefined`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.14.0
-       * @category Util
-       * @param {*} value The value to check.
-       * @param {*} defaultValue The default value.
-       * @returns {*} Returns the resolved value.
-       * @example
-       *
-       * _.defaultTo(1, 10);
-       * // => 1
-       *
-       * _.defaultTo(undefined, 10);
-       * // => 10
-       */
-      function defaultTo(value, defaultValue) {
-        return (value == null || value !== value) ? defaultValue : value;
-      }
-  
-      /**
-       * Creates a function that returns the result of invoking the given functions
-       * with the `this` binding of the created function, where each successive
-       * invocation is supplied the return value of the previous.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Util
-       * @param {...(Function|Function[])} [funcs] The functions to invoke.
-       * @returns {Function} Returns the new composite function.
-       * @see _.flowRight
-       * @example
-       *
-       * function square(n) {
-       *   return n * n;
-       * }
-       *
-       * var addSquare = _.flow([_.add, square]);
-       * addSquare(1, 2);
-       * // => 9
-       */
-      var flow = createFlow();
-  
-      /**
-       * This method is like `_.flow` except that it creates a function that
-       * invokes the given functions from right to left.
-       *
-       * @static
-       * @since 3.0.0
-       * @memberOf _
-       * @category Util
-       * @param {...(Function|Function[])} [funcs] The functions to invoke.
-       * @returns {Function} Returns the new composite function.
-       * @see _.flow
-       * @example
-       *
-       * function square(n) {
-       *   return n * n;
-       * }
-       *
-       * var addSquare = _.flowRight([square, _.add]);
-       * addSquare(1, 2);
-       * // => 9
-       */
-      var flowRight = createFlow(true);
-  
-      /**
-       * This method returns the first argument it receives.
-       *
-       * @static
-       * @since 0.1.0
-       * @memberOf _
-       * @category Util
-       * @param {*} value Any value.
-       * @returns {*} Returns `value`.
-       * @example
-       *
-       * var object = { 'a': 1 };
-       *
-       * console.log(_.identity(object) === object);
-       * // => true
-       */
-      function identity(value) {
-        return value;
-      }
-  
-      /**
-       * Creates a function that invokes `func` with the arguments of the created
-       * function. If `func` is a property name, the created function returns the
-       * property value for a given element. If `func` is an array or object, the
-       * created function returns `true` for elements that contain the equivalent
-       * source properties, otherwise it returns `false`.
-       *
-       * @static
-       * @since 4.0.0
-       * @memberOf _
-       * @category Util
-       * @param {*} [func=_.identity] The value to convert to a callback.
-       * @returns {Function} Returns the callback.
-       * @example
-       *
-       * var users = [
-       *   { 'user': 'barney', 'age': 36, 'active': true },
-       *   { 'user': 'fred',   'age': 40, 'active': false }
-       * ];
-       *
-       * // The `_.matches` iteratee shorthand.
-       * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));
-       * // => [{ 'user': 'barney', 'age': 36, 'active': true }]
-       *
-       * // The `_.matchesProperty` iteratee shorthand.
-       * _.filter(users, _.iteratee(['user', 'fred']));
-       * // => [{ 'user': 'fred', 'age': 40 }]
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.map(users, _.iteratee('user'));
-       * // => ['barney', 'fred']
-       *
-       * // Create custom iteratee shorthands.
-       * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {
-       *   return !_.isRegExp(func) ? iteratee(func) : function(string) {
-       *     return func.test(string);
-       *   };
-       * });
-       *
-       * _.filter(['abc', 'def'], /ef/);
-       * // => ['def']
-       */
-      function iteratee(func) {
-        return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));
-      }
-  
-      /**
-       * Creates a function that performs a partial deep comparison between a given
-       * object and `source`, returning `true` if the given object has equivalent
-       * property values, else `false`.
-       *
-       * **Note:** The created function is equivalent to `_.isMatch` with `source`
-       * partially applied.
-       *
-       * Partial comparisons will match empty array and empty object `source`
-       * values against any array or object value, respectively. See `_.isEqual`
-       * for a list of supported value comparisons.
-       *
-       * **Note:** Multiple values can be checked by combining several matchers
-       * using `_.overSome`
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Util
-       * @param {Object} source The object of property values to match.
-       * @returns {Function} Returns the new spec function.
-       * @example
-       *
-       * var objects = [
-       *   { 'a': 1, 'b': 2, 'c': 3 },
-       *   { 'a': 4, 'b': 5, 'c': 6 }
-       * ];
-       *
-       * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));
-       * // => [{ 'a': 4, 'b': 5, 'c': 6 }]
-       *
-       * // Checking for several possible values
-       * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));
-       * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]
-       */
-      function matches(source) {
-        return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
-      }
-  
-      /**
-       * Creates a function that performs a partial deep comparison between the
-       * value at `path` of a given object to `srcValue`, returning `true` if the
-       * object value is equivalent, else `false`.
-       *
-       * **Note:** Partial comparisons will match empty array and empty object
-       * `srcValue` values against any array or object value, respectively. See
-       * `_.isEqual` for a list of supported value comparisons.
-       *
-       * **Note:** Multiple values can be checked by combining several matchers
-       * using `_.overSome`
-       *
-       * @static
-       * @memberOf _
-       * @since 3.2.0
-       * @category Util
-       * @param {Array|string} path The path of the property to get.
-       * @param {*} srcValue The value to match.
-       * @returns {Function} Returns the new spec function.
-       * @example
-       *
-       * var objects = [
-       *   { 'a': 1, 'b': 2, 'c': 3 },
-       *   { 'a': 4, 'b': 5, 'c': 6 }
-       * ];
-       *
-       * _.find(objects, _.matchesProperty('a', 4));
-       * // => { 'a': 4, 'b': 5, 'c': 6 }
-       *
-       * // Checking for several possible values
-       * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));
-       * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]
-       */
-      function matchesProperty(path, srcValue) {
-        return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
-      }
-  
-      /**
-       * Creates a function that invokes the method at `path` of a given object.
-       * Any additional arguments are provided to the invoked method.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.7.0
-       * @category Util
-       * @param {Array|string} path The path of the method to invoke.
-       * @param {...*} [args] The arguments to invoke the method with.
-       * @returns {Function} Returns the new invoker function.
-       * @example
-       *
-       * var objects = [
-       *   { 'a': { 'b': _.constant(2) } },
-       *   { 'a': { 'b': _.constant(1) } }
-       * ];
-       *
-       * _.map(objects, _.method('a.b'));
-       * // => [2, 1]
-       *
-       * _.map(objects, _.method(['a', 'b']));
-       * // => [2, 1]
-       */
-      var method = baseRest(function(path, args) {
-        return function(object) {
-          return baseInvoke(object, path, args);
-        };
-      });
-  
-      /**
-       * The opposite of `_.method`; this method creates a function that invokes
-       * the method at a given path of `object`. Any additional arguments are
-       * provided to the invoked method.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.7.0
-       * @category Util
-       * @param {Object} object The object to query.
-       * @param {...*} [args] The arguments to invoke the method with.
-       * @returns {Function} Returns the new invoker function.
-       * @example
-       *
-       * var array = _.times(3, _.constant),
-       *     object = { 'a': array, 'b': array, 'c': array };
-       *
-       * _.map(['a[2]', 'c[0]'], _.methodOf(object));
-       * // => [2, 0]
-       *
-       * _.map([['a', '2'], ['c', '0']], _.methodOf(object));
-       * // => [2, 0]
-       */
-      var methodOf = baseRest(function(object, args) {
-        return function(path) {
-          return baseInvoke(object, path, args);
-        };
-      });
-  
-      /**
-       * Adds all own enumerable string keyed function properties of a source
-       * object to the destination object. If `object` is a function, then methods
-       * are added to its prototype as well.
-       *
-       * **Note:** Use `_.runInContext` to create a pristine `lodash` function to
-       * avoid conflicts caused by modifying the original.
-       *
-       * @static
-       * @since 0.1.0
-       * @memberOf _
-       * @category Util
-       * @param {Function|Object} [object=lodash] The destination object.
-       * @param {Object} source The object of functions to add.
-       * @param {Object} [options={}] The options object.
-       * @param {boolean} [options.chain=true] Specify whether mixins are chainable.
-       * @returns {Function|Object} Returns `object`.
-       * @example
-       *
-       * function vowels(string) {
-       *   return _.filter(string, function(v) {
-       *     return /[aeiou]/i.test(v);
-       *   });
-       * }
-       *
-       * _.mixin({ 'vowels': vowels });
-       * _.vowels('fred');
-       * // => ['e']
-       *
-       * _('fred').vowels().value();
-       * // => ['e']
-       *
-       * _.mixin({ 'vowels': vowels }, { 'chain': false });
-       * _('fred').vowels();
-       * // => ['e']
-       */
-      function mixin(object, source, options) {
-        var props = keys(source),
-            methodNames = baseFunctions(source, props);
-  
-        if (options == null &&
-            !(isObject(source) && (methodNames.length || !props.length))) {
-          options = source;
-          source = object;
-          object = this;
-          methodNames = baseFunctions(source, keys(source));
-        }
-        var chain = !(isObject(options) && 'chain' in options) || !!options.chain,
-            isFunc = isFunction(object);
-  
-        arrayEach(methodNames, function(methodName) {
-          var func = source[methodName];
-          object[methodName] = func;
-          if (isFunc) {
-            object.prototype[methodName] = function() {
-              var chainAll = this.__chain__;
-              if (chain || chainAll) {
-                var result = object(this.__wrapped__),
-                    actions = result.__actions__ = copyArray(this.__actions__);
-  
-                actions.push({ 'func': func, 'args': arguments, 'thisArg': object });
-                result.__chain__ = chainAll;
-                return result;
-              }
-              return func.apply(object, arrayPush([this.value()], arguments));
-            };
-          }
-        });
-  
-        return object;
-      }
-  
-      /**
-       * Reverts the `_` variable to its previous value and returns a reference to
-       * the `lodash` function.
-       *
-       * @static
-       * @since 0.1.0
-       * @memberOf _
-       * @category Util
-       * @returns {Function} Returns the `lodash` function.
-       * @example
-       *
-       * var lodash = _.noConflict();
-       */
-      function noConflict() {
-        if (root._ === this) {
-          root._ = oldDash;
-        }
-        return this;
-      }
-  
-      /**
-       * This method returns `undefined`.
-       *
-       * @static
-       * @memberOf _
-       * @since 2.3.0
-       * @category Util
-       * @example
-       *
-       * _.times(2, _.noop);
-       * // => [undefined, undefined]
-       */
-      function noop() {
-        // No operation performed.
-      }
-  
-      /**
-       * Creates a function that gets the argument at index `n`. If `n` is negative,
-       * the nth argument from the end is returned.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Util
-       * @param {number} [n=0] The index of the argument to return.
-       * @returns {Function} Returns the new pass-thru function.
-       * @example
-       *
-       * var func = _.nthArg(1);
-       * func('a', 'b', 'c', 'd');
-       * // => 'b'
-       *
-       * var func = _.nthArg(-2);
-       * func('a', 'b', 'c', 'd');
-       * // => 'c'
-       */
-      function nthArg(n) {
-        n = toInteger(n);
-        return baseRest(function(args) {
-          return baseNth(args, n);
-        });
-      }
-  
-      /**
-       * Creates a function that invokes `iteratees` with the arguments it receives
-       * and returns their results.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Util
-       * @param {...(Function|Function[])} [iteratees=[_.identity]]
-       *  The iteratees to invoke.
-       * @returns {Function} Returns the new function.
-       * @example
-       *
-       * var func = _.over([Math.max, Math.min]);
-       *
-       * func(1, 2, 3, 4);
-       * // => [4, 1]
-       */
-      var over = createOver(arrayMap);
-  
-      /**
-       * Creates a function that checks if **all** of the `predicates` return
-       * truthy when invoked with the arguments it receives.
-       *
-       * Following shorthands are possible for providing predicates.
-       * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.
-       * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Util
-       * @param {...(Function|Function[])} [predicates=[_.identity]]
-       *  The predicates to check.
-       * @returns {Function} Returns the new function.
-       * @example
-       *
-       * var func = _.overEvery([Boolean, isFinite]);
-       *
-       * func('1');
-       * // => true
-       *
-       * func(null);
-       * // => false
-       *
-       * func(NaN);
-       * // => false
-       */
-      var overEvery = createOver(arrayEvery);
-  
-      /**
-       * Creates a function that checks if **any** of the `predicates` return
-       * truthy when invoked with the arguments it receives.
-       *
-       * Following shorthands are possible for providing predicates.
-       * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.
-       * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Util
-       * @param {...(Function|Function[])} [predicates=[_.identity]]
-       *  The predicates to check.
-       * @returns {Function} Returns the new function.
-       * @example
-       *
-       * var func = _.overSome([Boolean, isFinite]);
-       *
-       * func('1');
-       * // => true
-       *
-       * func(null);
-       * // => true
-       *
-       * func(NaN);
-       * // => false
-       *
-       * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])
-       * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])
-       */
-      var overSome = createOver(arraySome);
-  
-      /**
-       * Creates a function that returns the value at `path` of a given object.
-       *
-       * @static
-       * @memberOf _
-       * @since 2.4.0
-       * @category Util
-       * @param {Array|string} path The path of the property to get.
-       * @returns {Function} Returns the new accessor function.
-       * @example
-       *
-       * var objects = [
-       *   { 'a': { 'b': 2 } },
-       *   { 'a': { 'b': 1 } }
-       * ];
-       *
-       * _.map(objects, _.property('a.b'));
-       * // => [2, 1]
-       *
-       * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
-       * // => [1, 2]
-       */
-      function property(path) {
-        return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
-      }
-  
-      /**
-       * The opposite of `_.property`; this method creates a function that returns
-       * the value at a given path of `object`.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.0.0
-       * @category Util
-       * @param {Object} object The object to query.
-       * @returns {Function} Returns the new accessor function.
-       * @example
-       *
-       * var array = [0, 1, 2],
-       *     object = { 'a': array, 'b': array, 'c': array };
-       *
-       * _.map(['a[2]', 'c[0]'], _.propertyOf(object));
-       * // => [2, 0]
-       *
-       * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));
-       * // => [2, 0]
-       */
-      function propertyOf(object) {
-        return function(path) {
-          return object == null ? undefined : baseGet(object, path);
-        };
-      }
-  
-      /**
-       * Creates an array of numbers (positive and/or negative) progressing from
-       * `start` up to, but not including, `end`. A step of `-1` is used if a negative
-       * `start` is specified without an `end` or `step`. If `end` is not specified,
-       * it's set to `start` with `start` then set to `0`.
-       *
-       * **Note:** JavaScript follows the IEEE-754 standard for resolving
-       * floating-point values which can produce unexpected results.
-       *
-       * @static
-       * @since 0.1.0
-       * @memberOf _
-       * @category Util
-       * @param {number} [start=0] The start of the range.
-       * @param {number} end The end of the range.
-       * @param {number} [step=1] The value to increment or decrement by.
-       * @returns {Array} Returns the range of numbers.
-       * @see _.inRange, _.rangeRight
-       * @example
-       *
-       * _.range(4);
-       * // => [0, 1, 2, 3]
-       *
-       * _.range(-4);
-       * // => [0, -1, -2, -3]
-       *
-       * _.range(1, 5);
-       * // => [1, 2, 3, 4]
-       *
-       * _.range(0, 20, 5);
-       * // => [0, 5, 10, 15]
-       *
-       * _.range(0, -4, -1);
-       * // => [0, -1, -2, -3]
-       *
-       * _.range(1, 4, 0);
-       * // => [1, 1, 1]
-       *
-       * _.range(0);
-       * // => []
-       */
-      var range = createRange();
-  
-      /**
-       * This method is like `_.range` except that it populates values in
-       * descending order.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Util
-       * @param {number} [start=0] The start of the range.
-       * @param {number} end The end of the range.
-       * @param {number} [step=1] The value to increment or decrement by.
-       * @returns {Array} Returns the range of numbers.
-       * @see _.inRange, _.range
-       * @example
-       *
-       * _.rangeRight(4);
-       * // => [3, 2, 1, 0]
-       *
-       * _.rangeRight(-4);
-       * // => [-3, -2, -1, 0]
-       *
-       * _.rangeRight(1, 5);
-       * // => [4, 3, 2, 1]
-       *
-       * _.rangeRight(0, 20, 5);
-       * // => [15, 10, 5, 0]
-       *
-       * _.rangeRight(0, -4, -1);
-       * // => [-3, -2, -1, 0]
-       *
-       * _.rangeRight(1, 4, 0);
-       * // => [1, 1, 1]
-       *
-       * _.rangeRight(0);
-       * // => []
-       */
-      var rangeRight = createRange(true);
-  
-      /**
-       * This method returns a new empty array.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.13.0
-       * @category Util
-       * @returns {Array} Returns the new empty array.
-       * @example
-       *
-       * var arrays = _.times(2, _.stubArray);
-       *
-       * console.log(arrays);
-       * // => [[], []]
-       *
-       * console.log(arrays[0] === arrays[1]);
-       * // => false
-       */
-      function stubArray() {
-        return [];
-      }
-  
-      /**
-       * This method returns `false`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.13.0
-       * @category Util
-       * @returns {boolean} Returns `false`.
-       * @example
-       *
-       * _.times(2, _.stubFalse);
-       * // => [false, false]
-       */
-      function stubFalse() {
-        return false;
-      }
-  
-      /**
-       * This method returns a new empty object.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.13.0
-       * @category Util
-       * @returns {Object} Returns the new empty object.
-       * @example
-       *
-       * var objects = _.times(2, _.stubObject);
-       *
-       * console.log(objects);
-       * // => [{}, {}]
-       *
-       * console.log(objects[0] === objects[1]);
-       * // => false
-       */
-      function stubObject() {
-        return {};
-      }
-  
-      /**
-       * This method returns an empty string.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.13.0
-       * @category Util
-       * @returns {string} Returns the empty string.
-       * @example
-       *
-       * _.times(2, _.stubString);
-       * // => ['', '']
-       */
-      function stubString() {
-        return '';
-      }
-  
-      /**
-       * This method returns `true`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.13.0
-       * @category Util
-       * @returns {boolean} Returns `true`.
-       * @example
-       *
-       * _.times(2, _.stubTrue);
-       * // => [true, true]
-       */
-      function stubTrue() {
-        return true;
-      }
-  
-      /**
-       * Invokes the iteratee `n` times, returning an array of the results of
-       * each invocation. The iteratee is invoked with one argument; (index).
-       *
-       * @static
-       * @since 0.1.0
-       * @memberOf _
-       * @category Util
-       * @param {number} n The number of times to invoke `iteratee`.
-       * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-       * @returns {Array} Returns the array of results.
-       * @example
-       *
-       * _.times(3, String);
-       * // => ['0', '1', '2']
-       *
-       *  _.times(4, _.constant(0));
-       * // => [0, 0, 0, 0]
-       */
-      function times(n, iteratee) {
-        n = toInteger(n);
-        if (n < 1 || n > MAX_SAFE_INTEGER) {
-          return [];
-        }
-        var index = MAX_ARRAY_LENGTH,
-            length = nativeMin(n, MAX_ARRAY_LENGTH);
-  
-        iteratee = getIteratee(iteratee);
-        n -= MAX_ARRAY_LENGTH;
-  
-        var result = baseTimes(length, iteratee);
-        while (++index < n) {
-          iteratee(index);
-        }
-        return result;
-      }
-  
-      /**
-       * Converts `value` to a property path array.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Util
-       * @param {*} value The value to convert.
-       * @returns {Array} Returns the new property path array.
-       * @example
-       *
-       * _.toPath('a.b.c');
-       * // => ['a', 'b', 'c']
-       *
-       * _.toPath('a[0].b.c');
-       * // => ['a', '0', 'b', 'c']
-       */
-      function toPath(value) {
-        if (isArray(value)) {
-          return arrayMap(value, toKey);
-        }
-        return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));
-      }
-  
-      /**
-       * Generates a unique ID. If `prefix` is given, the ID is appended to it.
-       *
-       * @static
-       * @since 0.1.0
-       * @memberOf _
-       * @category Util
-       * @param {string} [prefix=''] The value to prefix the ID with.
-       * @returns {string} Returns the unique ID.
-       * @example
-       *
-       * _.uniqueId('contact_');
-       * // => 'contact_104'
-       *
-       * _.uniqueId();
-       * // => '105'
-       */
-      function uniqueId(prefix) {
-        var id = ++idCounter;
-        return toString(prefix) + id;
-      }
-  
-      /*------------------------------------------------------------------------*/
-  
-      /**
-       * Adds two numbers.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.4.0
-       * @category Math
-       * @param {number} augend The first number in an addition.
-       * @param {number} addend The second number in an addition.
-       * @returns {number} Returns the total.
-       * @example
-       *
-       * _.add(6, 4);
-       * // => 10
-       */
-      var add = createMathOperation(function(augend, addend) {
-        return augend + addend;
-      }, 0);
-  
-      /**
-       * Computes `number` rounded up to `precision`.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.10.0
-       * @category Math
-       * @param {number} number The number to round up.
-       * @param {number} [precision=0] The precision to round up to.
-       * @returns {number} Returns the rounded up number.
-       * @example
-       *
-       * _.ceil(4.006);
-       * // => 5
-       *
-       * _.ceil(6.004, 2);
-       * // => 6.01
-       *
-       * _.ceil(6040, -2);
-       * // => 6100
-       */
-      var ceil = createRound('ceil');
-  
-      /**
-       * Divide two numbers.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.7.0
-       * @category Math
-       * @param {number} dividend The first number in a division.
-       * @param {number} divisor The second number in a division.
-       * @returns {number} Returns the quotient.
-       * @example
-       *
-       * _.divide(6, 4);
-       * // => 1.5
-       */
-      var divide = createMathOperation(function(dividend, divisor) {
-        return dividend / divisor;
-      }, 1);
-  
-      /**
-       * Computes `number` rounded down to `precision`.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.10.0
-       * @category Math
-       * @param {number} number The number to round down.
-       * @param {number} [precision=0] The precision to round down to.
-       * @returns {number} Returns the rounded down number.
-       * @example
-       *
-       * _.floor(4.006);
-       * // => 4
-       *
-       * _.floor(0.046, 2);
-       * // => 0.04
-       *
-       * _.floor(4060, -2);
-       * // => 4000
-       */
-      var floor = createRound('floor');
-  
-      /**
-       * Computes the maximum value of `array`. If `array` is empty or falsey,
-       * `undefined` is returned.
-       *
-       * @static
-       * @since 0.1.0
-       * @memberOf _
-       * @category Math
-       * @param {Array} array The array to iterate over.
-       * @returns {*} Returns the maximum value.
-       * @example
-       *
-       * _.max([4, 2, 8, 6]);
-       * // => 8
-       *
-       * _.max([]);
-       * // => undefined
-       */
-      function max(array) {
-        return (array && array.length)
-          ? baseExtremum(array, identity, baseGt)
-          : undefined;
-      }
-  
-      /**
-       * This method is like `_.max` except that it accepts `iteratee` which is
-       * invoked for each element in `array` to generate the criterion by which
-       * the value is ranked. The iteratee is invoked with one argument: (value).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Math
-       * @param {Array} array The array to iterate over.
-       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-       * @returns {*} Returns the maximum value.
-       * @example
-       *
-       * var objects = [{ 'n': 1 }, { 'n': 2 }];
-       *
-       * _.maxBy(objects, function(o) { return o.n; });
-       * // => { 'n': 2 }
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.maxBy(objects, 'n');
-       * // => { 'n': 2 }
-       */
-      function maxBy(array, iteratee) {
-        return (array && array.length)
-          ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)
-          : undefined;
-      }
-  
-      /**
-       * Computes the mean of the values in `array`.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Math
-       * @param {Array} array The array to iterate over.
-       * @returns {number} Returns the mean.
-       * @example
-       *
-       * _.mean([4, 2, 8, 6]);
-       * // => 5
-       */
-      function mean(array) {
-        return baseMean(array, identity);
-      }
-  
-      /**
-       * This method is like `_.mean` except that it accepts `iteratee` which is
-       * invoked for each element in `array` to generate the value to be averaged.
-       * The iteratee is invoked with one argument: (value).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.7.0
-       * @category Math
-       * @param {Array} array The array to iterate over.
-       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-       * @returns {number} Returns the mean.
-       * @example
-       *
-       * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
-       *
-       * _.meanBy(objects, function(o) { return o.n; });
-       * // => 5
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.meanBy(objects, 'n');
-       * // => 5
-       */
-      function meanBy(array, iteratee) {
-        return baseMean(array, getIteratee(iteratee, 2));
-      }
-  
-      /**
-       * Computes the minimum value of `array`. If `array` is empty or falsey,
-       * `undefined` is returned.
-       *
-       * @static
-       * @since 0.1.0
-       * @memberOf _
-       * @category Math
-       * @param {Array} array The array to iterate over.
-       * @returns {*} Returns the minimum value.
-       * @example
-       *
-       * _.min([4, 2, 8, 6]);
-       * // => 2
-       *
-       * _.min([]);
-       * // => undefined
-       */
-      function min(array) {
-        return (array && array.length)
-          ? baseExtremum(array, identity, baseLt)
-          : undefined;
-      }
-  
-      /**
-       * This method is like `_.min` except that it accepts `iteratee` which is
-       * invoked for each element in `array` to generate the criterion by which
-       * the value is ranked. The iteratee is invoked with one argument: (value).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Math
-       * @param {Array} array The array to iterate over.
-       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-       * @returns {*} Returns the minimum value.
-       * @example
-       *
-       * var objects = [{ 'n': 1 }, { 'n': 2 }];
-       *
-       * _.minBy(objects, function(o) { return o.n; });
-       * // => { 'n': 1 }
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.minBy(objects, 'n');
-       * // => { 'n': 1 }
-       */
-      function minBy(array, iteratee) {
-        return (array && array.length)
-          ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)
-          : undefined;
-      }
-  
-      /**
-       * Multiply two numbers.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.7.0
-       * @category Math
-       * @param {number} multiplier The first number in a multiplication.
-       * @param {number} multiplicand The second number in a multiplication.
-       * @returns {number} Returns the product.
-       * @example
-       *
-       * _.multiply(6, 4);
-       * // => 24
-       */
-      var multiply = createMathOperation(function(multiplier, multiplicand) {
-        return multiplier * multiplicand;
-      }, 1);
-  
-      /**
-       * Computes `number` rounded to `precision`.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.10.0
-       * @category Math
-       * @param {number} number The number to round.
-       * @param {number} [precision=0] The precision to round to.
-       * @returns {number} Returns the rounded number.
-       * @example
-       *
-       * _.round(4.006);
-       * // => 4
-       *
-       * _.round(4.006, 2);
-       * // => 4.01
-       *
-       * _.round(4060, -2);
-       * // => 4100
-       */
-      var round = createRound('round');
-  
-      /**
-       * Subtract two numbers.
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Math
-       * @param {number} minuend The first number in a subtraction.
-       * @param {number} subtrahend The second number in a subtraction.
-       * @returns {number} Returns the difference.
-       * @example
-       *
-       * _.subtract(6, 4);
-       * // => 2
-       */
-      var subtract = createMathOperation(function(minuend, subtrahend) {
-        return minuend - subtrahend;
-      }, 0);
-  
-      /**
-       * Computes the sum of the values in `array`.
-       *
-       * @static
-       * @memberOf _
-       * @since 3.4.0
-       * @category Math
-       * @param {Array} array The array to iterate over.
-       * @returns {number} Returns the sum.
-       * @example
-       *
-       * _.sum([4, 2, 8, 6]);
-       * // => 20
-       */
-      function sum(array) {
-        return (array && array.length)
-          ? baseSum(array, identity)
-          : 0;
-      }
-  
-      /**
-       * This method is like `_.sum` except that it accepts `iteratee` which is
-       * invoked for each element in `array` to generate the value to be summed.
-       * The iteratee is invoked with one argument: (value).
-       *
-       * @static
-       * @memberOf _
-       * @since 4.0.0
-       * @category Math
-       * @param {Array} array The array to iterate over.
-       * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-       * @returns {number} Returns the sum.
-       * @example
-       *
-       * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
-       *
-       * _.sumBy(objects, function(o) { return o.n; });
-       * // => 20
-       *
-       * // The `_.property` iteratee shorthand.
-       * _.sumBy(objects, 'n');
-       * // => 20
-       */
-      function sumBy(array, iteratee) {
-        return (array && array.length)
-          ? baseSum(array, getIteratee(iteratee, 2))
-          : 0;
-      }
-  
-      /*------------------------------------------------------------------------*/
-  
-      // Add methods that return wrapped values in chain sequences.
-      lodash.after = after;
-      lodash.ary = ary;
-      lodash.assign = assign;
-      lodash.assignIn = assignIn;
-      lodash.assignInWith = assignInWith;
-      lodash.assignWith = assignWith;
-      lodash.at = at;
-      lodash.before = before;
-      lodash.bind = bind;
-      lodash.bindAll = bindAll;
-      lodash.bindKey = bindKey;
-      lodash.castArray = castArray;
-      lodash.chain = chain;
-      lodash.chunk = chunk;
-      lodash.compact = compact;
-      lodash.concat = concat;
-      lodash.cond = cond;
-      lodash.conforms = conforms;
-      lodash.constant = constant;
-      lodash.countBy = countBy;
-      lodash.create = create;
-      lodash.curry = curry;
-      lodash.curryRight = curryRight;
-      lodash.debounce = debounce;
-      lodash.defaults = defaults;
-      lodash.defaultsDeep = defaultsDeep;
-      lodash.defer = defer;
-      lodash.delay = delay;
-      lodash.difference = difference;
-      lodash.differenceBy = differenceBy;
-      lodash.differenceWith = differenceWith;
-      lodash.drop = drop;
-      lodash.dropRight = dropRight;
-      lodash.dropRightWhile = dropRightWhile;
-      lodash.dropWhile = dropWhile;
-      lodash.fill = fill;
-      lodash.filter = filter;
-      lodash.flatMap = flatMap;
-      lodash.flatMapDeep = flatMapDeep;
-      lodash.flatMapDepth = flatMapDepth;
-      lodash.flatten = flatten;
-      lodash.flattenDeep = flattenDeep;
-      lodash.flattenDepth = flattenDepth;
-      lodash.flip = flip;
-      lodash.flow = flow;
-      lodash.flowRight = flowRight;
-      lodash.fromPairs = fromPairs;
-      lodash.functions = functions;
-      lodash.functionsIn = functionsIn;
-      lodash.groupBy = groupBy;
-      lodash.initial = initial;
-      lodash.intersection = intersection;
-      lodash.intersectionBy = intersectionBy;
-      lodash.intersectionWith = intersectionWith;
-      lodash.invert = invert;
-      lodash.invertBy = invertBy;
-      lodash.invokeMap = invokeMap;
-      lodash.iteratee = iteratee;
-      lodash.keyBy = keyBy;
-      lodash.keys = keys;
-      lodash.keysIn = keysIn;
-      lodash.map = map;
-      lodash.mapKeys = mapKeys;
-      lodash.mapValues = mapValues;
-      lodash.matches = matches;
-      lodash.matchesProperty = matchesProperty;
-      lodash.memoize = memoize;
-      lodash.merge = merge;
-      lodash.mergeWith = mergeWith;
-      lodash.method = method;
-      lodash.methodOf = methodOf;
-      lodash.mixin = mixin;
-      lodash.negate = negate;
-      lodash.nthArg = nthArg;
-      lodash.omit = omit;
-      lodash.omitBy = omitBy;
-      lodash.once = once;
-      lodash.orderBy = orderBy;
-      lodash.over = over;
-      lodash.overArgs = overArgs;
-      lodash.overEvery = overEvery;
-      lodash.overSome = overSome;
-      lodash.partial = partial;
-      lodash.partialRight = partialRight;
-      lodash.partition = partition;
-      lodash.pick = pick;
-      lodash.pickBy = pickBy;
-      lodash.property = property;
-      lodash.propertyOf = propertyOf;
-      lodash.pull = pull;
-      lodash.pullAll = pullAll;
-      lodash.pullAllBy = pullAllBy;
-      lodash.pullAllWith = pullAllWith;
-      lodash.pullAt = pullAt;
-      lodash.range = range;
-      lodash.rangeRight = rangeRight;
-      lodash.rearg = rearg;
-      lodash.reject = reject;
-      lodash.remove = remove;
-      lodash.rest = rest;
-      lodash.reverse = reverse;
-      lodash.sampleSize = sampleSize;
-      lodash.set = set;
-      lodash.setWith = setWith;
-      lodash.shuffle = shuffle;
-      lodash.slice = slice;
-      lodash.sortBy = sortBy;
-      lodash.sortedUniq = sortedUniq;
-      lodash.sortedUniqBy = sortedUniqBy;
-      lodash.split = split;
-      lodash.spread = spread;
-      lodash.tail = tail;
-      lodash.take = take;
-      lodash.takeRight = takeRight;
-      lodash.takeRightWhile = takeRightWhile;
-      lodash.takeWhile = takeWhile;
-      lodash.tap = tap;
-      lodash.throttle = throttle;
-      lodash.thru = thru;
-      lodash.toArray = toArray;
-      lodash.toPairs = toPairs;
-      lodash.toPairsIn = toPairsIn;
-      lodash.toPath = toPath;
-      lodash.toPlainObject = toPlainObject;
-      lodash.transform = transform;
-      lodash.unary = unary;
-      lodash.union = union;
-      lodash.unionBy = unionBy;
-      lodash.unionWith = unionWith;
-      lodash.uniq = uniq;
-      lodash.uniqBy = uniqBy;
-      lodash.uniqWith = uniqWith;
-      lodash.unset = unset;
-      lodash.unzip = unzip;
-      lodash.unzipWith = unzipWith;
-      lodash.update = update;
-      lodash.updateWith = updateWith;
-      lodash.values = values;
-      lodash.valuesIn = valuesIn;
-      lodash.without = without;
-      lodash.words = words;
-      lodash.wrap = wrap;
-      lodash.xor = xor;
-      lodash.xorBy = xorBy;
-      lodash.xorWith = xorWith;
-      lodash.zip = zip;
-      lodash.zipObject = zipObject;
-      lodash.zipObjectDeep = zipObjectDeep;
-      lodash.zipWith = zipWith;
-  
-      // Add aliases.
-      lodash.entries = toPairs;
-      lodash.entriesIn = toPairsIn;
-      lodash.extend = assignIn;
-      lodash.extendWith = assignInWith;
-  
-      // Add methods to `lodash.prototype`.
-      mixin(lodash, lodash);
-  
-      /*------------------------------------------------------------------------*/
-  
-      // Add methods that return unwrapped values in chain sequences.
-      lodash.add = add;
-      lodash.attempt = attempt;
-      lodash.camelCase = camelCase;
-      lodash.capitalize = capitalize;
-      lodash.ceil = ceil;
-      lodash.clamp = clamp;
-      lodash.clone = clone;
-      lodash.cloneDeep = cloneDeep;
-      lodash.cloneDeepWith = cloneDeepWith;
-      lodash.cloneWith = cloneWith;
-      lodash.conformsTo = conformsTo;
-      lodash.deburr = deburr;
-      lodash.defaultTo = defaultTo;
-      lodash.divide = divide;
-      lodash.endsWith = endsWith;
-      lodash.eq = eq;
-      lodash.escape = escape;
-      lodash.escapeRegExp = escapeRegExp;
-      lodash.every = every;
-      lodash.find = find;
-      lodash.findIndex = findIndex;
-      lodash.findKey = findKey;
-      lodash.findLast = findLast;
-      lodash.findLastIndex = findLastIndex;
-      lodash.findLastKey = findLastKey;
-      lodash.floor = floor;
-      lodash.forEach = forEach;
-      lodash.forEachRight = forEachRight;
-      lodash.forIn = forIn;
-      lodash.forInRight = forInRight;
-      lodash.forOwn = forOwn;
-      lodash.forOwnRight = forOwnRight;
-      lodash.get = get;
-      lodash.gt = gt;
-      lodash.gte = gte;
-      lodash.has = has;
-      lodash.hasIn = hasIn;
-      lodash.head = head;
-      lodash.identity = identity;
-      lodash.includes = includes;
-      lodash.indexOf = indexOf;
-      lodash.inRange = inRange;
-      lodash.invoke = invoke;
-      lodash.isArguments = isArguments;
-      lodash.isArray = isArray;
-      lodash.isArrayBuffer = isArrayBuffer;
-      lodash.isArrayLike = isArrayLike;
-      lodash.isArrayLikeObject = isArrayLikeObject;
-      lodash.isBoolean = isBoolean;
-      lodash.isBuffer = isBuffer;
-      lodash.isDate = isDate;
-      lodash.isElement = isElement;
-      lodash.isEmpty = isEmpty;
-      lodash.isEqual = isEqual;
-      lodash.isEqualWith = isEqualWith;
-      lodash.isError = isError;
-      lodash.isFinite = isFinite;
-      lodash.isFunction = isFunction;
-      lodash.isInteger = isInteger;
-      lodash.isLength = isLength;
-      lodash.isMap = isMap;
-      lodash.isMatch = isMatch;
-      lodash.isMatchWith = isMatchWith;
-      lodash.isNaN = isNaN;
-      lodash.isNative = isNative;
-      lodash.isNil = isNil;
-      lodash.isNull = isNull;
-      lodash.isNumber = isNumber;
-      lodash.isObject = isObject;
-      lodash.isObjectLike = isObjectLike;
-      lodash.isPlainObject = isPlainObject;
-      lodash.isRegExp = isRegExp;
-      lodash.isSafeInteger = isSafeInteger;
-      lodash.isSet = isSet;
-      lodash.isString = isString;
-      lodash.isSymbol = isSymbol;
-      lodash.isTypedArray = isTypedArray;
-      lodash.isUndefined = isUndefined;
-      lodash.isWeakMap = isWeakMap;
-      lodash.isWeakSet = isWeakSet;
-      lodash.join = join;
-      lodash.kebabCase = kebabCase;
-      lodash.last = last;
-      lodash.lastIndexOf = lastIndexOf;
-      lodash.lowerCase = lowerCase;
-      lodash.lowerFirst = lowerFirst;
-      lodash.lt = lt;
-      lodash.lte = lte;
-      lodash.max = max;
-      lodash.maxBy = maxBy;
-      lodash.mean = mean;
-      lodash.meanBy = meanBy;
-      lodash.min = min;
-      lodash.minBy = minBy;
-      lodash.stubArray = stubArray;
-      lodash.stubFalse = stubFalse;
-      lodash.stubObject = stubObject;
-      lodash.stubString = stubString;
-      lodash.stubTrue = stubTrue;
-      lodash.multiply = multiply;
-      lodash.nth = nth;
-      lodash.noConflict = noConflict;
-      lodash.noop = noop;
-      lodash.now = now;
-      lodash.pad = pad;
-      lodash.padEnd = padEnd;
-      lodash.padStart = padStart;
-      lodash.parseInt = parseInt;
-      lodash.random = random;
-      lodash.reduce = reduce;
-      lodash.reduceRight = reduceRight;
-      lodash.repeat = repeat;
-      lodash.replace = replace;
-      lodash.result = result;
-      lodash.round = round;
-      lodash.runInContext = runInContext;
-      lodash.sample = sample;
-      lodash.size = size;
-      lodash.snakeCase = snakeCase;
-      lodash.some = some;
-      lodash.sortedIndex = sortedIndex;
-      lodash.sortedIndexBy = sortedIndexBy;
-      lodash.sortedIndexOf = sortedIndexOf;
-      lodash.sortedLastIndex = sortedLastIndex;
-      lodash.sortedLastIndexBy = sortedLastIndexBy;
-      lodash.sortedLastIndexOf = sortedLastIndexOf;
-      lodash.startCase = startCase;
-      lodash.startsWith = startsWith;
-      lodash.subtract = subtract;
-      lodash.sum = sum;
-      lodash.sumBy = sumBy;
-      lodash.template = template;
-      lodash.times = times;
-      lodash.toFinite = toFinite;
-      lodash.toInteger = toInteger;
-      lodash.toLength = toLength;
-      lodash.toLower = toLower;
-      lodash.toNumber = toNumber;
-      lodash.toSafeInteger = toSafeInteger;
-      lodash.toString = toString;
-      lodash.toUpper = toUpper;
-      lodash.trim = trim;
-      lodash.trimEnd = trimEnd;
-      lodash.trimStart = trimStart;
-      lodash.truncate = truncate;
-      lodash.unescape = unescape;
-      lodash.uniqueId = uniqueId;
-      lodash.upperCase = upperCase;
-      lodash.upperFirst = upperFirst;
-  
-      // Add aliases.
-      lodash.each = forEach;
-      lodash.eachRight = forEachRight;
-      lodash.first = head;
-  
-      mixin(lodash, (function() {
-        var source = {};
-        baseForOwn(lodash, function(func, methodName) {
-          if (!hasOwnProperty.call(lodash.prototype, methodName)) {
-            source[methodName] = func;
-          }
-        });
-        return source;
-      }()), { 'chain': false });
-  
-      /*------------------------------------------------------------------------*/
-  
-      /**
-       * The semantic version number.
-       *
-       * @static
-       * @memberOf _
-       * @type {string}
-       */
-      lodash.VERSION = VERSION;
-  
-      // Assign default placeholders.
-      arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {
-        lodash[methodName].placeholder = lodash;
-      });
-  
-      // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.
-      arrayEach(['drop', 'take'], function(methodName, index) {
-        LazyWrapper.prototype[methodName] = function(n) {
-          n = n === undefined ? 1 : nativeMax(toInteger(n), 0);
-  
-          var result = (this.__filtered__ && !index)
-            ? new LazyWrapper(this)
-            : this.clone();
-  
-          if (result.__filtered__) {
-            result.__takeCount__ = nativeMin(n, result.__takeCount__);
-          } else {
-            result.__views__.push({
-              'size': nativeMin(n, MAX_ARRAY_LENGTH),
-              'type': methodName + (result.__dir__ < 0 ? 'Right' : '')
-            });
-          }
-          return result;
-        };
-  
-        LazyWrapper.prototype[methodName + 'Right'] = function(n) {
-          return this.reverse()[methodName](n).reverse();
-        };
-      });
-  
-      // Add `LazyWrapper` methods that accept an `iteratee` value.
-      arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {
-        var type = index + 1,
-            isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;
-  
-        LazyWrapper.prototype[methodName] = function(iteratee) {
-          var result = this.clone();
-          result.__iteratees__.push({
-            'iteratee': getIteratee(iteratee, 3),
-            'type': type
-          });
-          result.__filtered__ = result.__filtered__ || isFilter;
-          return result;
-        };
-      });
-  
-      // Add `LazyWrapper` methods for `_.head` and `_.last`.
-      arrayEach(['head', 'last'], function(methodName, index) {
-        var takeName = 'take' + (index ? 'Right' : '');
-  
-        LazyWrapper.prototype[methodName] = function() {
-          return this[takeName](1).value()[0];
-        };
-      });
-  
-      // Add `LazyWrapper` methods for `_.initial` and `_.tail`.
-      arrayEach(['initial', 'tail'], function(methodName, index) {
-        var dropName = 'drop' + (index ? '' : 'Right');
-  
-        LazyWrapper.prototype[methodName] = function() {
-          return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);
-        };
-      });
-  
-      LazyWrapper.prototype.compact = function() {
-        return this.filter(identity);
-      };
-  
-      LazyWrapper.prototype.find = function(predicate) {
-        return this.filter(predicate).head();
-      };
-  
-      LazyWrapper.prototype.findLast = function(predicate) {
-        return this.reverse().find(predicate);
-      };
-  
-      LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {
-        if (typeof path == 'function') {
-          return new LazyWrapper(this);
-        }
-        return this.map(function(value) {
-          return baseInvoke(value, path, args);
-        });
-      });
-  
-      LazyWrapper.prototype.reject = function(predicate) {
-        return this.filter(negate(getIteratee(predicate)));
-      };
-  
-      LazyWrapper.prototype.slice = function(start, end) {
-        start = toInteger(start);
-  
-        var result = this;
-        if (result.__filtered__ && (start > 0 || end < 0)) {
-          return new LazyWrapper(result);
-        }
-        if (start < 0) {
-          result = result.takeRight(-start);
-        } else if (start) {
-          result = result.drop(start);
-        }
-        if (end !== undefined) {
-          end = toInteger(end);
-          result = end < 0 ? result.dropRight(-end) : result.take(end - start);
-        }
-        return result;
-      };
-  
-      LazyWrapper.prototype.takeRightWhile = function(predicate) {
-        return this.reverse().takeWhile(predicate).reverse();
-      };
-  
-      LazyWrapper.prototype.toArray = function() {
-        return this.take(MAX_ARRAY_LENGTH);
-      };
-  
-      // Add `LazyWrapper` methods to `lodash.prototype`.
-      baseForOwn(LazyWrapper.prototype, function(func, methodName) {
-        var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),
-            isTaker = /^(?:head|last)$/.test(methodName),
-            lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],
-            retUnwrapped = isTaker || /^find/.test(methodName);
-  
-        if (!lodashFunc) {
-          return;
-        }
-        lodash.prototype[methodName] = function() {
-          var value = this.__wrapped__,
-              args = isTaker ? [1] : arguments,
-              isLazy = value instanceof LazyWrapper,
-              iteratee = args[0],
-              useLazy = isLazy || isArray(value);
-  
-          var interceptor = function(value) {
-            var result = lodashFunc.apply(lodash, arrayPush([value], args));
-            return (isTaker && chainAll) ? result[0] : result;
-          };
-  
-          if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {
-            // Avoid lazy use if the iteratee has a "length" value other than `1`.
-            isLazy = useLazy = false;
-          }
-          var chainAll = this.__chain__,
-              isHybrid = !!this.__actions__.length,
-              isUnwrapped = retUnwrapped && !chainAll,
-              onlyLazy = isLazy && !isHybrid;
-  
-          if (!retUnwrapped && useLazy) {
-            value = onlyLazy ? value : new LazyWrapper(this);
-            var result = func.apply(value, args);
-            result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });
-            return new LodashWrapper(result, chainAll);
-          }
-          if (isUnwrapped && onlyLazy) {
-            return func.apply(this, args);
-          }
-          result = this.thru(interceptor);
-          return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;
-        };
-      });
-  
-      // Add `Array` methods to `lodash.prototype`.
-      arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {
-        var func = arrayProto[methodName],
-            chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',
-            retUnwrapped = /^(?:pop|shift)$/.test(methodName);
-  
-        lodash.prototype[methodName] = function() {
-          var args = arguments;
-          if (retUnwrapped && !this.__chain__) {
-            var value = this.value();
-            return func.apply(isArray(value) ? value : [], args);
-          }
-          return this[chainName](function(value) {
-            return func.apply(isArray(value) ? value : [], args);
-          });
-        };
-      });
-  
-      // Map minified method names to their real names.
-      baseForOwn(LazyWrapper.prototype, function(func, methodName) {
-        var lodashFunc = lodash[methodName];
-        if (lodashFunc) {
-          var key = lodashFunc.name + '';
-          if (!hasOwnProperty.call(realNames, key)) {
-            realNames[key] = [];
-          }
-          realNames[key].push({ 'name': methodName, 'func': lodashFunc });
-        }
-      });
-  
-      realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{
-        'name': 'wrapper',
-        'func': undefined
-      }];
-  
-      // Add methods to `LazyWrapper`.
-      LazyWrapper.prototype.clone = lazyClone;
-      LazyWrapper.prototype.reverse = lazyReverse;
-      LazyWrapper.prototype.value = lazyValue;
-  
-      // Add chain sequence methods to the `lodash` wrapper.
-      lodash.prototype.at = wrapperAt;
-      lodash.prototype.chain = wrapperChain;
-      lodash.prototype.commit = wrapperCommit;
-      lodash.prototype.next = wrapperNext;
-      lodash.prototype.plant = wrapperPlant;
-      lodash.prototype.reverse = wrapperReverse;
-      lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
-  
-      // Add lazy aliases.
-      lodash.prototype.first = lodash.prototype.head;
-  
-      if (symIterator) {
-        lodash.prototype[symIterator] = wrapperToIterator;
-      }
-      return lodash;
-    });
-  
-    /*--------------------------------------------------------------------------*/
-  
-    // Export lodash.
-    var _ = runInContext();
-  
-    // Some AMD build optimizers, like r.js, check for condition patterns like:
-    if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {
-      // Expose Lodash on the global object to prevent errors when Lodash is
-      // loaded by a script tag in the presence of an AMD loader.
-      // See http://requirejs.org/docs/errors.html#mismatch for more details.
-      // Use `_.noConflict` to remove Lodash from the global object.
-      root._ = _;
-  
-      // Define as an anonymous module so, through path mapping, it can be
-      // referenced as the "underscore" module.
-      define(function() {
-        return _;
-      });
-    }
-    // Check for `exports` after `define` in case a build optimizer adds it.
-    else if (freeModule) {
-      // Export for Node.js.
-      (freeModule.exports = _)._ = _;
-      // Export for CommonJS support.
-      freeExports._ = _;
-    }
-    else {
-      // Export to the global object.
-      root._ = _;
-    }
-  }.call(this));
\ No newline at end of file
diff --git a/public/snippets/tvox/js/ng-flow-standalone.min.js b/public/snippets/tvox/js/ng-flow-standalone.min.js
deleted file mode 100644
index a1f6284..0000000
--- a/public/snippets/tvox/js/ng-flow-standalone.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! @flowjs/ng-flow 2.7.8 */
\ No newline at end of file
diff --git a/public/snippets/tvox/js/tvox_integration.js b/public/snippets/tvox/js/tvox_integration.js
deleted file mode 100644
index 0234e16..0000000
--- a/public/snippets/tvox/js/tvox_integration.js
+++ /dev/null
@@ -1,150 +0,0 @@
-/* Private variables */
-var _primaryCallInfo = null;
-var _callsInfo = new Map();
-var _userInfo = null;
-var _tabIndex = 0;
-var _callInfoCallback = null; 
-
-function tvoxReceiveMessage(event) {
-
-
-    let message = event.data;
-    if (message == null || message.namespace == null || message.namespace != 'webclient.teleniasoftware.com') {
-        console.info("Received Unknown message", message);
-        return;
-    }
-
-    console.log("CALLH", tvoxGetCallHandle())
-    if (message.event == 'callEvent') {
-        
-        console.log("CRISCALLEVENT", message)
-        if (!_primaryCallInfo) {
-            _primaryCallInfo = message.data;
-            if (_callInfoCallback !== null)
-                _callInfoCallback(_primaryCallInfo);
-        } 
-    } else if (message.event == 'allCallsStateEvent') {
-        _callsInfo = new Map();
-        message.data.forEach(function (element) {
-            _callsInfo.set(element.callId, element);
-        });        
-    } else if (message.event == 'userStateEvent') {
-        console.info('userStateEvent received', message.data);
-        _userInfo = message.data;
-    }
-}
-
-function tvoxSendReadyEvent() {
-    let message = {
-        namespace: 'iframe.webclient.teleniasoftware.com',
-        event: 'iframeReadyEvent',
-        data: null
-    };
-
-    tvoxSendMessage(message);
-}
-
-function tvoxSendMessage(message) {
-    window.parent.postMessage(message, '*');
-}
-
-// Close the interaction inside the PBX client
-function tvoxCloseInteraction(callHandle) {
-    let message = {
-        namespace: 'iframe.webclient.teleniasoftware.com',
-        event: 'interactionClose',
-        data: {
-            callId: callHandle
-        }
-    };
-
-    tvoxSendMessage(message);
-    return true;
-}
-
-function tvoxCloseTab(callHandle) {
-    let message = {
-        namespace: 'iframe.webclient.teleniasoftware.com',
-        event: 'callCloseTab',
-        data: {
-            callId: callHandle,
-            tabId:'0'
-        }
-    };
-
-    tvoxSendMessage(message);
-    return true;
-}
-
-
-// Notify the user when a generic event occurs
-function pbxNotifyUser() {
-    let message = {
-        namespace: 'iframe.webclient.teleniasoftware.com',
-        event: 'notifyGenericEventCommand',
-        data: {}
-    };
-
-    tvoxSendMessage(message);
-}
-
-// Get the current call handle
-function tvoxGetCallHandle() {
-    if (_primaryCallInfo)
-        return _primaryCallInfo.callId;
-    return "";
-} 
-
-function tvoxAnswerCall(callHandle) {
-    let message = {
-        namespace: 'iframe.webclient.teleniasoftware.com',
-        event: 'callAnswerCommand',
-        data: {
-            callId: callHandle
-        }
-    };
-
-    tvoxSendMessage(message);
-    return true;
-} 
-
-function tvoxDropCall(callHandle) {
-    let message = {
-        namespace: 'iframe.webclient.teleniasoftware.com',
-        event: 'callDropCommand',
-        data: {
-            callId: callHandle
-        }
-    };
-
-    tvoxSendMessage(message);
-    return true;
-} 
-
-// Sets a callback for the call info
-function pbxSetNewCallInfoCallback(f) {
-    _callInfoCallback = f;
-    if (_primaryCallInfo !== null)
-        _callInfoCallback(_primaryCallInfo);
-}
-
-// Focus the given interacxtion
-function pbxFocusInteraction(callHandle) {
-    pbxFocusTab(callHandle, null);
-    return true;
-}
-
-// Focus the given tab
-function pbxFocusTab(callHandle, tabId) {
-    let message = {
-        namespace: 'iframe.webclient.teleniasoftware.com',
-        event: 'callFocusTab',
-        data: {
-            callId: callHandle,
-            tabId: tabId
-        }
-    };
-
-    tvoxSendMessage(message);
-    return true; 
-}
\ No newline at end of file
diff --git a/public/snippets/tvox/ring.controller.js b/public/snippets/tvox/ring.controller.js
deleted file mode 100644
index bc268fe..0000000
--- a/public/snippets/tvox/ring.controller.js
+++ /dev/null
@@ -1,52 +0,0 @@
-angular.module('RingApp', ['ngMaterial', 'ngCookies'])
-    .controller("RingController", function($scope, $http, $cookies) {
-
-        $scope.motion_url="";
-        $scope.logo="";
-        $scope.error_message="";
-        $scope.welcome_message="";
-
-        this.$onInit=function() {
-            $scope.token=$cookies.get('motion.token');
-
-            if(_.isNil($scope.token))
-                $scope.error_message="XCally motion token not valid, please connect to XCally Motion, then retry";
-            else {
-                var urlParams = new URLSearchParams(window.location.search);
-                var params=urlParams.get("params");
-                var arr=params.split("|");
-                if(arr) {
-                    $scope.messageId=arr[0];
-                    $scope.motionUrl=arr[1];
-                    $scope.chatWebsiteId=arr[2];
-                    $scope.interactionId=arr[3];
-                    $scope.contactId=arr[4];
-                    $scope.welcome_message=arr[5];
-                }
-
-                window.addEventListener("message", tvoxReceiveMessage, false);
-                tvoxSendReadyEvent();
-
-                $http.get($scope.motion_url+"/api/chat/websites/"+$scope.chatWebsiteId,{
-                headers: { 'Authorization': 'Bearer '+$scope.token }
-                }).
-                then(
-                    function successCallback(response) {
-                        $scope.logo=$scope.motion_url+"/api/chat/websites/"+$scope.chatWebsiteId+"/logo?token=";
-                    },
-                    function errorCallback(response) {
-                        console.log("Unable to perform get request", response);
-                    }
-                );   
-            }
-        }
-
-        $scope.accept = function(event) {
-            tvoxAnswerCall(tvoxGetCallHandle());
-    	}
-        $scope.refuse = function(event) {
-            tvoxDropCall(tvoxGetCallHandle());
-    	}
-});
-
-
diff --git a/public/snippets/tvox/ring.html b/public/snippets/tvox/ring.html
deleted file mode 100644
index 823f959..0000000
--- a/public/snippets/tvox/ring.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html>
-<head>
-    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
-    <link rel="stylesheet" href="css/angular-material.min.css">
-    <link rel="stylesheet" href="css/style.css">
-</head>  
-<body ng-app="RingApp">
-    <div ng-controller="RingController" layout="column" layout-align="center center">
-        <div ng-if="error_message!=''">{{error_message}}</div>
-        <div ng-if="error_message==''">
-            <md-progress-linear md-mode="indeterminate"></md-progress-linear>
-            <div>{{welcome_message}}</div>
-            <img width=280 src="{{logo}}">
-            <br>
-            <div layout="row">
-                <md-button class="md-raised btn-accept" ng-click="accept()">Accept</md-button>
-                &nbsp;
-                <!--
-                <md-button class="md-raised btn-refuse" ng-click="refuse()">Refuse</md-button>
-                -->
-            </div>
-        </div>
-    </div>
-</body>
-</html>
-<script src="js/angular.min.js"></script>
-<script src="js/angular-aria.min.js"></script>
-<script src="js/angular-animate.min.js"></script>
-<script src="js/angular-messages.min.js"></script>
-<script src="js/angular-material.min.js"></script>
-<script src="js/angular-cookies.min.js"></script>
-<script src="js/tvox_integration.js"></script>
-<script src="js/lodash.min.js"></script>
-<script type="text/javascript" src="ring.controller.js"></script>
-
diff --git a/public/snippets/tvox/script.js b/public/snippets/tvox/script.js
deleted file mode 100644
index d603451..0000000
--- a/public/snippets/tvox/script.js
+++ /dev/null
@@ -1,12 +0,0 @@
-angular.module('webapp', ['ngMaterial'])
-  .controller('AppCtrl', function($scope) {
-    $scope.todos = [];
-    for (var i = 0; i < 45; i++) {
-      $scope.todos.push({
-        face: 'https://avatars0.githubusercontent.com/u/598463?v=3&s=60',
-        what: "Brunch this weekend?",
-        who: "Markus Thiel",
-        notes: "I'll be in your neighborhood doing errands."
-      });
-    }
-  });
diff --git a/public/snippets/tvox/test.html b/public/snippets/tvox/test.html
deleted file mode 100644
index 1310b17..0000000
--- a/public/snippets/tvox/test.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no" />
-  <link rel="stylesheet" href="css/angular-material.min.css">
-</head>
-  <body ng-app="YourApp">
-  <div ng-controller="YourController">
-	test
-	{{test}}
-        <md-button class="md-raised md-cornered">Button</md-button>
-<section layout="row" layout-sm="column" layout-align="center center" layout-wrap>
-      <md-button class="md-raised">Button</md-button>
-      <md-button class="md-raised md-primary">Primary</md-button>
-      <md-button ng-disabled="true" class="md-raised md-primary">Disabled</md-button>
-      <md-button class="md-raised md-accent">Accent</md-button>
-      <div class="label">Raised</div>
-    </section>
-    <md-divider></md-divider>
-  </div>
-
-  <script src="js/angular.min.js"></script>
-  <script src="js/angular-aria.min.js"></script>
-  <script src="js/angular-animate.min.js"></script>
-  <script src="js/angular-messages.min.js"></script>
-  <script src="js/angular-material.min.js"></script>
-  <script>
-    // Include app dependency on ngMaterial
-    angular.module('YourApp', ['ngMaterial', 'ngMessages'])
-      .controller("YourController", function($scope) {
-	$scope.test="Esempio 1";
-   });
-  </script>
-</body>
-</html>
diff --git a/public/styles/app.6b5b73e3.css b/public/styles/app.6b5b73e3.css
deleted file mode 100644
index d91f1f6..0000000
--- a/public/styles/app.6b5b73e3.css
+++ /dev/null
@@ -1 +0,0 @@
\ No newline at end of file
diff --git a/public/styles/app.7031ba1e.css b/public/styles/app.7031ba1e.css
new file mode 100644
index 0000000..ac2a9c2
--- /dev/null
+++ b/public/styles/app.7031ba1e.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 1b53da2..e9d71ab 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 ebb750c..7aef12a 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 54162d8..df2ba78 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 8bce944..f59b015 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 06ec1fb..3cc7b8c 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 26099f2..d2e4ae1 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 9a70cbb..7180f17 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 7350fab..5a8b642 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 9d11203..07fd25d 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 027095c..48e653f 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 8f586ff..20fae77 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 bc2bd6e..c40c235 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 2ddc825..10808a2 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 7a58ceb..ddd0408 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 845f017..ea754ed 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 4ad3a6b..d670698 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 5c1d44c..7f31ba8 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 eb30877..0c1cf63 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 c0ec417..b15d143 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 b6a8960..d4b4b47 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 5682d9a..8636451 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 8e65e8b..bd8692f 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 7e8c6d9..ac2e5b2 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 6ea4692..97a4ad9 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 7533c7c..e7fbd42 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 bfdece5..bce4d87 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 7f28732..3433bf7 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 9009d43..be5e1c4 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 b56d2c3..2f0c3b5 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 ae9e69d..6cd164e 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 77dfba5..8d96696 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 _0x9976=['TEXT','sequelize'];(function(_0x1c25ea,_0x1162b8){var _0x1dfd37=function(_0x2b0e4c){while(--_0x2b0e4c){_0x1c25ea['push'](_0x1c25ea['shift']());}};_0x1dfd37(++_0x1162b8);}(_0x9976,0x8f));var _0x6997=function(_0x314144,_0x5c3a52){_0x314144=_0x314144-0x0;var _0x4a0624=_0x9976[_0x314144];return _0x4a0624;};'use strict';var Sequelize=require(_0x6997('0x0'));module['exports']={'tree':{'type':Sequelize[_0x6997('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x10af=['TEXT','sequelize','exports'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x10af,0x73));var _0xf10a=function(_0x1ae5ab,_0xc5d441){_0x1ae5ab=_0x1ae5ab-0x0;var _0x1ce001=_0x10af[_0x1ae5ab];return _0x1ce001;};'use strict';var Sequelize=require(_0xf10a('0x0'));module[_0xf10a('0x1')]={'tree':{'type':Sequelize[_0xf10a('0x2')],'allowNull':![]}};
\ No newline at end of file
diff --git a/server/api/analyticTreeReport/analyticTreeReport.controller.js b/server/api/analyticTreeReport/analyticTreeReport.controller.js
index 7dcd371..59f478d 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 a533ba5..53e1b36 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 d0425b8..05fb649 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 3af4424..f90ea92 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 4a7ed71..163e28f 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 a0cd40f..f7264ab 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 eaa93c8..23863b2 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 b049166..b715fe4 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 1c6c847..c76019c 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 0e16748..558df04 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 c0ecf26..4c55ee4 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 7ee9404..c75d36b 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 a38ee2a..a59c3d2 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 1c94293..babdcad 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 06f41ce..4ce65cf 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 b3bfa62..45bb85c 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 213798b..bc67f80 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 8ae0191..81d740a 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 1f753bd..831805d 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 4fb8851..bfac26d 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 37df4ae..2010fee 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 34c3317..0c11e02 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 16c420d..ed95ce4 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 d8b85c4..f74793c 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 9ba821a..3d79c21 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 f0278fc..3463798 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 430a866..a0c8478 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 089d5f7..6168f75 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 92bca53..c5dd250 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 6cd6e9f..513b6d3 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 f4f383f..41bc138 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 246b2f8..5b57f08 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 256b0e3..294299e 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 a806576..483fd2c 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 e190719..833d36f 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 51f2fdd..f0135e4 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 53ccb9d..3681ab9 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 e1aecf4..3db9f57 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 d0830f1..f999064 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 66fff1d..d53d0c4 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 bc0e5f6..fd5bbed 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 de495ca..7cf0b15 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 e9123be..a60c8c8 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 b2d77c7..33f80e7 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 079dd30..cbe02a0 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 82dea8f..71edab4 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 43022a3..b485f1e 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 22e271b..8af3a33 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 bafc8f4..c828862 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 6ca8e9d..e090be8 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 2ccc33b..19e9160 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 be5f1a6..5a98252 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 d9ea3f0..27b2d5f 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 943f28c..dc21aac 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 5731546..1ab53ce 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 f72c1b1..119cd98 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 a470780..91a8ff0 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 80d4df9..b7509bb 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 e4d319f..fe692d0 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 87a1602..e305d6e 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 796305e..fa9c9d6 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 d098acc..26b37b8 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 d3cf88f..6313dce 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 90eac6d..dda8d49 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 240a7b5..5f2e22a 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 5ecda65..d90fc19 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 72cbb0d..e377354 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 _0x30b5=['exports','TEXT','medium','sequelize'];(function(_0x2050f7,_0x3833c6){var _0x219da1=function(_0x554dc1){while(--_0x554dc1){_0x2050f7['push'](_0x2050f7['shift']());}};_0x219da1(++_0x3833c6);}(_0x30b5,0x83));var _0x530b=function(_0x1f1511,_0x4ea911){_0x1f1511=_0x1f1511-0x0;var _0x1d9ab8=_0x30b5[_0x1f1511];return _0x1d9ab8;};'use strict';var Sequelize=require(_0x530b('0x0'));module[_0x530b('0x1')]={'body':{'type':Sequelize[_0x530b('0x2')](_0x530b('0x3')),'allowNull':![]}};
\ No newline at end of file
+var _0x4494=['medium','sequelize'];(function(_0x7ea168,_0x19fd7f){var _0x1f8a07=function(_0x2cc9a9){while(--_0x2cc9a9){_0x7ea168['push'](_0x7ea168['shift']());}};_0x1f8a07(++_0x19fd7f);}(_0x4494,0xb3));var _0x4449=function(_0x678bd0,_0x4faa71){_0x678bd0=_0x678bd0-0x0;var _0xdf99e1=_0x4494[_0x678bd0];return _0xdf99e1;};'use strict';var Sequelize=require(_0x4449('0x0'));module['exports']={'body':{'type':Sequelize['TEXT'](_0x4449('0x1')),'allowNull':![]}};
\ No newline at end of file
diff --git a/server/api/chatOfflineMessage/chatOfflineMessage.controller.js b/server/api/chatOfflineMessage/chatOfflineMessage.controller.js
index 06a2ca0..909d743 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 9b96ba0..fa0b54d 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 7bf06af..ea9218f 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 bba82aa..f7147f3 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 67a8d1e..74c8187 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 9d86892..64222a8 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 d672071..b3f740e 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 a21ee07..006ac66 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 64257df..695f002 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 424c2db..365a2c5 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 2c583a9..8aa09a6 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 f100d37..81aca8b 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 8b34ad6..9b7ecad 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 5791414..881f0f5 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 7e798fa..a2861c4 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 95f2398..4fa5680 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 eda3b66..d41500a 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 dc0f4b5..88f0c23 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 3779bc0..f32b8c0 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 cdb7f30..817c526 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 19fac4f..c2b4399 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 f715eff..ee656f5 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 3a2bd94..253ed7e 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 538a922..9363a15 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 43d1b41..0eda75b 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 b8584ca..6cd7659 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 c475669..57ff72c 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 b9f41fa..f74e06b 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 ccd754f..e0cf44e 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 8cc61b5..d98da13 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 16cac0e..4ec1ebc 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 5441b70..bf5368d 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 143c8b4..123a701 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 8f70103..55e74a9 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 668fd42..6c7a233 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 9484a0b..05ac9d6 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 ba36d77..762d336 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 e71af42..21fbf3e 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 da84063..6fbe418 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 360c2f6..241f918 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 7d4674a..3af5519 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 f685efc..5a74747 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 1838ed9..abd2e13 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 357deab..d1c339e 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 adf20b1..1e90c96 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 3b39fbf..b89f308 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 e2d1f20..0a67989 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 8d24de4..996619a 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 dfc7ba7..937d614 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 23b4dfe..bd36c56 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/cmContactHasItem/cmContactHasItem.attributes.js b/server/api/cmContactHasItem/cmContactHasItem.attributes.js
new file mode 100644
index 0000000..26848f6
--- /dev/null
+++ b/server/api/cmContactHasItem/cmContactHasItem.attributes.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/server/api/cmContactHasItem/cmContactHasItem.controller.js b/server/api/cmContactHasItem/cmContactHasItem.controller.js
new file mode 100644
index 0000000..df7ce15
--- /dev/null
+++ b/server/api/cmContactHasItem/cmContactHasItem.controller.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/server/api/cmContactHasItem/cmContactHasItem.model.js b/server/api/cmContactHasItem/cmContactHasItem.model.js
new file mode 100644
index 0000000..94ae22d
--- /dev/null
+++ b/server/api/cmContactHasItem/cmContactHasItem.model.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/server/api/cmContactHasItem/cmContactHasItem.rpc.js b/server/api/cmContactHasItem/cmContactHasItem.rpc.js
new file mode 100644
index 0000000..532fe80
--- /dev/null
+++ b/server/api/cmContactHasItem/cmContactHasItem.rpc.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/server/api/cmContactHasItem/index.js b/server/api/cmContactHasItem/index.js
new file mode 100644
index 0000000..9d00c29
--- /dev/null
+++ b/server/api/cmContactHasItem/index.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/server/api/cmContactHasPhone/cmContactHasPhone.attributes.js b/server/api/cmContactHasPhone/cmContactHasPhone.attributes.js
new file mode 100644
index 0000000..b1dd607
--- /dev/null
+++ b/server/api/cmContactHasPhone/cmContactHasPhone.attributes.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/server/api/cmContactHasPhone/cmContactHasPhone.controller.js b/server/api/cmContactHasPhone/cmContactHasPhone.controller.js
new file mode 100644
index 0000000..492452b
--- /dev/null
+++ b/server/api/cmContactHasPhone/cmContactHasPhone.controller.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/server/api/cmContactHasPhone/cmContactHasPhone.model.js b/server/api/cmContactHasPhone/cmContactHasPhone.model.js
new file mode 100644
index 0000000..59b3b12
--- /dev/null
+++ b/server/api/cmContactHasPhone/cmContactHasPhone.model.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/server/api/cmContactHasPhone/cmContactHasPhone.rpc.js b/server/api/cmContactHasPhone/cmContactHasPhone.rpc.js
new file mode 100644
index 0000000..e3b1a48
--- /dev/null
+++ b/server/api/cmContactHasPhone/cmContactHasPhone.rpc.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/server/api/cmContactHasPhone/index.js b/server/api/cmContactHasPhone/index.js
new file mode 100644
index 0000000..770ee1b
--- /dev/null
+++ b/server/api/cmContactHasPhone/index.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/server/api/cmCustomField/cmCustomField.attributes.js b/server/api/cmCustomField/cmCustomField.attributes.js
index 6571afe..ea6f27e 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 23bacf3..5d980c6 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 4902d32..9a81106 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 4f4950c..343c0f5 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 e2594a5..1339b1f 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 030d2ad..b93f4ca 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 4245cae..af88fd0 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 ab7824c..eb70345 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 f613f2b..8a44e99 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 eebe3f2..59502da 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/cmHopperAdditionalPhone/cmHopperAdditionalPhone.attributes.js b/server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.attributes.js
new file mode 100644
index 0000000..5579aed
--- /dev/null
+++ b/server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.attributes.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/server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.controller.js b/server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.controller.js
new file mode 100644
index 0000000..dda8f57
--- /dev/null
+++ b/server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.controller.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/server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model.js b/server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model.js
new file mode 100644
index 0000000..a585eb1
--- /dev/null
+++ b/server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model.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/server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc.js b/server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc.js
new file mode 100644
index 0000000..e70121f
--- /dev/null
+++ b/server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc.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/server/api/cmHopperAdditionalPhone/index.js b/server/api/cmHopperAdditionalPhone/index.js
new file mode 100644
index 0000000..2883ee2
--- /dev/null
+++ b/server/api/cmHopperAdditionalPhone/index.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/server/api/cmHopperBlack/cmHopperBlack.attributes.js b/server/api/cmHopperBlack/cmHopperBlack.attributes.js
index 7f6b788..d4fa5ce 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 e9b0f14..e555ec5 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 ed395a5..88baf71 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 2468c10..9aa8f14 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 ef1b37b..5005854 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 f197595..2fb28c8 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 dc4b86f..55c68b5 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 a4add79..21a9fb0 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 408ca32..c6775f2 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 0df5441..0ce0b70 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 bc9252d..7c3602e 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 6e0619c..7cc51e3 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 54b3152..c4dce46 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 a93e6a5..d189c11 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 76dd2b4..eb29e84 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 dbc490a..a44c860 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 46cc353..735a2b6 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 9137710..1062573 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 c96b551..4a3242c 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 cfa29d9..9a1eb21 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 f61c8bc..2737978 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 f943efa..8513cab 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 e90eebe..6de9f50 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 48c987e..ee4363e 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 341e9ee..14c611a 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 983df04..10c001a 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 fe98de7..1136861 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/contactItemType/contactItemType.attributes.js b/server/api/contactItemType/contactItemType.attributes.js
new file mode 100644
index 0000000..fa792a9
--- /dev/null
+++ b/server/api/contactItemType/contactItemType.attributes.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/server/api/contactItemType/contactItemType.controller.js b/server/api/contactItemType/contactItemType.controller.js
new file mode 100644
index 0000000..e895759
--- /dev/null
+++ b/server/api/contactItemType/contactItemType.controller.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/server/api/contactItemType/contactItemType.model.js b/server/api/contactItemType/contactItemType.model.js
new file mode 100644
index 0000000..2b8cdaa
--- /dev/null
+++ b/server/api/contactItemType/contactItemType.model.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/server/api/contactItemType/contactItemType.rpc.js b/server/api/contactItemType/contactItemType.rpc.js
new file mode 100644
index 0000000..97a07e7
--- /dev/null
+++ b/server/api/contactItemType/contactItemType.rpc.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/server/api/contactItemType/index.js b/server/api/contactItemType/index.js
new file mode 100644
index 0000000..3860304
--- /dev/null
+++ b/server/api/contactItemType/index.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/server/api/dashboard/dashboard.attributes.js b/server/api/dashboard/dashboard.attributes.js
index 57b7abb..72c0760 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 5c20d9a..6df80b6 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 a18ef8a..7341555 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 dfc75ce..a5447b0 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 c081720..f6dc040 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 0ea29bb..faf25ed 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 a5909f0..08e0e30 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 dde1fa5..8a068db 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 b450c2b..e3dfdf9 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 ed99956..a143e3b 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 8337c21..90af50f 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 f7a6210..380be57 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 a9d5245..b08d56d 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 fbc049e..e5c66ac 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 4cb62e7..22ca606 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. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/disposition/disposition.controller.js b/server/api/disposition/disposition.controller.js
index 8b6b8be..6f803ab 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 1710772..f5aad55 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 ccfc598..f8b1f31 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 752bd4e..ddb727e 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 212b4e1..6cf17b4 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 4b06274..f59278d 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 745a79c..c84188a 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 c38b7c7..801cee6 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 9f5651e..dd75416 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 6473f13..3b2a61f 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 269905b..ea31589 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 1d75860..110e066 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 14c271e..b37cfda 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 0c24076..04a10ea 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 a6e4a8d..c68af56 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 ffc17d7..4962a7b 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 9c0bb97..d33da9e 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 6097186..8a629ad 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 fb4c91c..75802c3 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 3094cb6..a707a25 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 1a8ffd6..689bc8f 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 f1923ac..b60a45d 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 cd850ed..c44858f 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 8369f21..543ce81 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 2af27ed..83c2c71 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 2d59544..34e8a8c 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 0bdbb08..80e2d54 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 12cdcb7..d9436bf 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 95c8540..123089c 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 990df86..8384814 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 a670f28..55aee81 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 523e569..e336a49 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 93648b2..b1ce3fd 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 8871d93..b07e8db 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 75fed26..cbf7d0e 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 77acb7d..f184da1 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 49cf3fc..530e877 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 538de6e..7d659a2 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 b9a3ed4..7c4712f 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 26c3c36..96d115b 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 a039fea..c76f3d6 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 0153e32..74c52d6 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 d65238c..1587cbb 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 b8b6bc0..5e37b94 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 476d60e..483e6f7 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 d8704d8..30ea828 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 792bf79..42973c7 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 b40d8e3..afd9e96 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 33dbb76..31cb64f 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 f47e48f..afaa1b3 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 21e1742..a00eef2 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 27d5320..7bf9286 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 07e27ec..6bb321a 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 7a9e14d..f60c000 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 _0x6168=['STRING','exports'];(function(_0x5bba00,_0x262966){var _0x522ade=function(_0x4e378a){while(--_0x4e378a){_0x5bba00['push'](_0x5bba00['shift']());}};_0x522ade(++_0x262966);}(_0x6168,0xfb));var _0x8616=function(_0x2235bf,_0x3a06a7){_0x2235bf=_0x2235bf-0x0;var _0x4c3a64=_0x6168[_0x2235bf];return _0x4c3a64;};'use strict';var Sequelize=require('sequelize');module[_0x8616('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x8616('0x1')]}};
\ No newline at end of file
+var _0xb0a0=['sequelize','STRING'];(function(_0x99868f,_0xbdb8e7){var _0x27a71b=function(_0x41feca){while(--_0x41feca){_0x99868f['push'](_0x99868f['shift']());}};_0x27a71b(++_0xbdb8e7);}(_0xb0a0,0x1f2));var _0x0b0a=function(_0x4b6d4d,_0x211c58){_0x4b6d4d=_0x4b6d4d-0x0;var _0x2a109c=_0xb0a0[_0x4b6d4d];return _0x2a109c;};'use strict';var Sequelize=require(_0x0b0a('0x0'));module['exports']={'name':{'type':Sequelize[_0x0b0a('0x1')]},'description':{'type':Sequelize[_0x0b0a('0x1')]}};
\ No newline at end of file
diff --git a/server/api/intDeskConfiguration/intDeskConfiguration.controller.js b/server/api/intDeskConfiguration/intDeskConfiguration.controller.js
index 15c5c92..cfc9020 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 ef5d353..66b4191 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 16a04a7..c04a140 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 29f361c..8d2acb6 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 479b16a..317317e 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 e1f459b..0697711 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 ced4ca4..99fd1cc 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 df208ec..3204005 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 d65959e..226d155 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 7c85ea2..b0d87fb 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 c3da787..bc37292 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 d521a6d..f7ef37e 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 c3b572f..654c2fb 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 56829ab..672f02e 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 e398a60..d696e18 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 f60f411..d496750 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 0ba6ee8..5beaf04 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 4aa7b10..92725c2 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 2d9372c..83d4c34 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 736172c..3dd4d8f 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 fcd498e..9031ea6 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 b83fd59..67c97b0 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 928391a..663ec2e 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 24538f8..1aadb8a 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 9af53bc..98e341e 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 cbaa34e..8330f8f 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 33d8a37..cd3991a 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 e8cad24..5f350b8 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 a40fb53..2501da2 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 7a827b5..a836b57 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 _0x596a=['exports','STRING','sequelize'];(function(_0x3ad676,_0x25d01d){var _0x34f0b4=function(_0x5aeea5){while(--_0x5aeea5){_0x3ad676['push'](_0x3ad676['shift']());}};_0x34f0b4(++_0x25d01d);}(_0x596a,0x1ac));var _0xa596=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x596a[_0x167cc1];return _0x10bc4b;};'use strict';var Sequelize=require(_0xa596('0x0'));module[_0xa596('0x1')]={'name':{'type':Sequelize[_0xa596('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x3a4a=['STRING','sequelize'];(function(_0xacea21,_0x158b7c){var _0x2a7dae=function(_0x53ef6c){while(--_0x53ef6c){_0xacea21['push'](_0xacea21['shift']());}};_0x2a7dae(++_0x158b7c);}(_0x3a4a,0x83));var _0xa3a4=function(_0x43747e,_0x13b832){_0x43747e=_0x43747e-0x0;var _0x7fb853=_0x3a4a[_0x43747e];return _0x7fb853;};'use strict';var Sequelize=require(_0xa3a4('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xa3a4('0x1')]}};
\ No newline at end of file
diff --git a/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.controller.js b/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.controller.js
index d0fb12d..ba35ba0 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 40b3470..1142844 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 0e3e519..69064ff 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 c1f8f52..91ac415 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 049a4ee..89af052 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 4191534..8c0b161 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 0c358e6..b3f3e45 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 3fe5f0e..6c48e26 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 c569646..3899925 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 0c0cc81..f8b0ae5 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 8663750..d1fc981 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 6f88884..ff135ec 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 37a6339..bef43bf 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 dc2cc7a..dd4a05b 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 9d77dbf..23f35b1 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 _0xf822=['sequelize','exports','STRING'];(function(_0x1f4970,_0xe2ae9f){var _0xb4df89=function(_0x583b61){while(--_0x583b61){_0x1f4970['push'](_0x1f4970['shift']());}};_0xb4df89(++_0xe2ae9f);}(_0xf822,0xcf));var _0x2f82=function(_0x535c55,_0x3fcc9a){_0x535c55=_0x535c55-0x0;var _0x3ab44a=_0xf822[_0x535c55];return _0x3ab44a;};'use strict';var Sequelize=require(_0x2f82('0x0'));module[_0x2f82('0x1')]={'name':{'type':Sequelize[_0x2f82('0x2')]},'description':{'type':Sequelize[_0x2f82('0x2')]}};
\ No newline at end of file
+var _0x47b9=['STRING','sequelize','exports'];(function(_0x1a03fb,_0x3b9f5d){var _0x3d769d=function(_0x3871d3){while(--_0x3871d3){_0x1a03fb['push'](_0x1a03fb['shift']());}};_0x3d769d(++_0x3b9f5d);}(_0x47b9,0xa0));var _0x947b=function(_0x438fe1,_0x3308d5){_0x438fe1=_0x438fe1-0x0;var _0x3c8e1b=_0x47b9[_0x438fe1];return _0x3c8e1b;};'use strict';var Sequelize=require(_0x947b('0x0'));module[_0x947b('0x1')]={'name':{'type':Sequelize[_0x947b('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
diff --git a/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.controller.js b/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.controller.js
index 475a48d..6e6282d 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 72dbff2..a036884 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 2da8f14..477caf8 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 f3d5e4e..b949547 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 facb2f5..cf3e219 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 fa5afda..09dbeab 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 a98598a..b4af003 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 0d02713..38eb541 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 4d16881..62e8b16 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 3a32226..a4978de 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 c2652da..4677632 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 dd316f9..f28d8d2 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 f721b15..7d53a4e 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 8944ec0..f64e451 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 0160c37..fa40998 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 a66308d..7a5582d 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 a124809..92c17cb 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 3e6ced8..cd89dc9 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 3e0163f..ab9c681 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 e01fb75..5bca0bc 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 074dc82..21f3790 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 1af3d67..c29c71b 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 fb5f4db..cae85a5 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 023876c..4325b7b 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 1601860..68a58a9 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 e07dd5d..a93b429 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 7be2742..4611934 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 5723a54..a77263a 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 2c4b37a..38e8d07 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 652dba3..0d48f88 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 _0xfb0a=['sequelize','exports','STRING'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xfb0a,0x129));var _0xafb0=function(_0x2cf2e9,_0xd58ea1){_0x2cf2e9=_0x2cf2e9-0x0;var _0xd3670d=_0xfb0a[_0x2cf2e9];return _0xd3670d;};'use strict';var Sequelize=require(_0xafb0('0x0'));module[_0xafb0('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xafb0('0x2')]}};
\ No newline at end of file
+var _0xa254=['STRING','sequelize'];(function(_0xbd3fbd,_0x1f1561){var _0x1d58e9=function(_0x15d6cb){while(--_0x15d6cb){_0xbd3fbd['push'](_0xbd3fbd['shift']());}};_0x1d58e9(++_0x1f1561);}(_0xa254,0x1cd));var _0x4a25=function(_0x264eeb,_0xc05998){_0x264eeb=_0x264eeb-0x0;var _0xa45c83=_0xa254[_0x264eeb];return _0xa45c83;};'use strict';var Sequelize=require(_0x4a25('0x0'));module['exports']={'name':{'type':Sequelize[_0x4a25('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
diff --git a/server/api/intServicenowConfiguration/intServicenowConfiguration.controller.js b/server/api/intServicenowConfiguration/intServicenowConfiguration.controller.js
index a3c255a..d3b5e9b 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 db0168e..a7e67c8 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 8b77d2f..f59869b 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 19fe6db..1ba1e7e 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 fd6fd54..aa9d4c0 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 3ac3715..15d249a 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 a517dc4..17d092e 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 7994f1d..96b4ecd 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 80f164c..9db48ec 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 99f0995..1df06eb 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 0ecf543..eb1c92e 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 30142e8..c5db3c6 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 a92e769..9c38241 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 5c7022b..d4f28ef 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 b2b3671..9f73a0f 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 _0x1a9d=['sequelize'];(function(_0x3e16b2,_0x29eec0){var _0x43fd1e=function(_0x22dad4){while(--_0x22dad4){_0x3e16b2['push'](_0x3e16b2['shift']());}};_0x43fd1e(++_0x29eec0);}(_0x1a9d,0xde));var _0xd1a9=function(_0x2aa006,_0x8e2b26){_0x2aa006=_0x2aa006-0x0;var _0x2a214a=_0x1a9d[_0x2aa006];return _0x2a214a;};'use strict';var Sequelize=require(_0xd1a9('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xfaae=['sequelize','exports','STRING'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xfaae,0x1a4));var _0xefaa=function(_0x26f3ef,_0x2add06){_0x26f3ef=_0x26f3ef-0x0;var _0x5c837e=_0xfaae[_0x26f3ef];return _0x5c837e;};'use strict';var Sequelize=require(_0xefaa('0x0'));module[_0xefaa('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xefaa('0x2')]}};
\ No newline at end of file
diff --git a/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.controller.js b/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.controller.js
index 1538c54..3df60f8 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 3c61474..701db6e 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 50cda82..9b44291 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 d638481..3d020c0 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 71789df..f98532a 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 0748858..1158652 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 b7f5dcd..b122883 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 5739352..3d1b860 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 e95d3b7..42d4889 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 9911863..ace17f8 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 76ccd2a..da111a6 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 2ce9977..1f7344c 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 689cdfb..41a53b1 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 4e1ed7e..3601b29 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 d7f1c79..713e1af 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 _0x30c5=['sequelize','STRING'];(function(_0x295314,_0x17b250){var _0x584b0c=function(_0x51cc84){while(--_0x51cc84){_0x295314['push'](_0x295314['shift']());}};_0x584b0c(++_0x17b250);}(_0x30c5,0x144));var _0x530c=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x30c5[_0x6c993a];return _0x27f547;};'use strict';var Sequelize=require(_0x530c('0x0'));module['exports']={'name':{'type':Sequelize[_0x530c('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x6316=['sequelize','exports','STRING'];(function(_0x42c2ca,_0x29705d){var _0x58662e=function(_0x1fe752){while(--_0x1fe752){_0x42c2ca['push'](_0x42c2ca['shift']());}};_0x58662e(++_0x29705d);}(_0x6316,0xb4));var _0x6631=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x6316[_0x5b644e];return _0x49c6bf;};'use strict';var Sequelize=require(_0x6631('0x0'));module[_0x6631('0x1')]={'name':{'type':Sequelize[_0x6631('0x2')]},'description':{'type':Sequelize[_0x6631('0x2')]}};
\ No newline at end of file
diff --git a/server/api/intVtigerConfiguration/intVtigerConfiguration.controller.js b/server/api/intVtigerConfiguration/intVtigerConfiguration.controller.js
index 6e58579..a3de530 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 9b4ebbc..5f82197 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 c846ad4..a28bb8e 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 166d576..1c896f5 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 b3d688b..08aa3cd 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 b07ef37..b123576 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 5b0f9ee..e64983c 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 5a11dfb..8e32094 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 f403a7e..0ccdd40 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 6c4ada3..d324c11 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 a194d48..fb17ca4 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 bc02c8c..b43ef83 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 0d4746c..88c2844 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 e466772..f9f20b6 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 0a6164c..82ee1d4 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 _0x0a70=['sequelize','exports','STRING'];(function(_0x4a741d,_0x3a236a){var _0x37f0b8=function(_0x178a3b){while(--_0x178a3b){_0x4a741d['push'](_0x4a741d['shift']());}};_0x37f0b8(++_0x3a236a);}(_0x0a70,0x1dd));var _0x00a7=function(_0x3f2233,_0x2475f7){_0x3f2233=_0x3f2233-0x0;var _0x37a065=_0x0a70[_0x3f2233];return _0x37a065;};'use strict';var Sequelize=require(_0x00a7('0x0'));module[_0x00a7('0x1')]={'name':{'type':Sequelize[_0x00a7('0x2')]},'description':{'type':Sequelize[_0x00a7('0x2')]}};
\ No newline at end of file
+var _0xef5b=['sequelize','exports','STRING'];(function(_0x30fb53,_0xb7e79e){var _0x3c3aad=function(_0x147fe8){while(--_0x147fe8){_0x30fb53['push'](_0x30fb53['shift']());}};_0x3c3aad(++_0xb7e79e);}(_0xef5b,0x156));var _0xbef5=function(_0x57a336,_0x22ea48){_0x57a336=_0x57a336-0x0;var _0x580a52=_0xef5b[_0x57a336];return _0x580a52;};'use strict';var Sequelize=require(_0xbef5('0x0'));module[_0xbef5('0x1')]={'name':{'type':Sequelize[_0xbef5('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
diff --git a/server/api/intZendeskConfiguration/intZendeskConfiguration.controller.js b/server/api/intZendeskConfiguration/intZendeskConfiguration.controller.js
index 3810708..427ca3b 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 c02b643..6e1f34c 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 15c334a..0d0ecef 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 7b23433..1d30875 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 7798ead..1b2a106 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 f4dcb26..4e1af7c 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 600c866..01633b3 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 779d6f4..fefec0b 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 52ad213..391f6fa 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 7fea4bf..7148efd 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 003b5ce..5ec7551 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 efe6b76..7e15afb 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 331c1bd..7413e9d 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 f4d97c4..7efe8a6 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 b3c19cc..b9c6ca2 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 3e679ae..c65aaba 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 5586f27..c488b38 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 068f691..fd1adab 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 001a78c..47c6e8f 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 2a6185f..34b9a04 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 0e51d03..0668e1a 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 ed01694..9298803 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 4c7d910..3062669 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 1b41f4b..4105431 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 90289dc..3eba481 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 977ffc2..fac7f37 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 bae897f..1429667 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 167c89e..083f4e1 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 72771c3..4ef4d6f 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 50d60e6..9ab4e7c 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 2738564..81b1c32 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 8a6d3f5..e8c1ba7 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 5d57243..129cfac 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 188214c..b3de2a9 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 40b01d4..4aee08b 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 93c76fc..13b2d88 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 18378bd..71ac76c 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 ff077b1..63a6979 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 180b2ff..e0818cc 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 6cdfd41..1519c93 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 cd7963e..2eba440 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 1b5394c..5482f9a 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 9930800..65373a3 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 354e9c4..b27ebf3 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 c1ad55f..09c7b66 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 cbe36fd..aef2e1c 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 6cd34d2..85c42e9 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 ed5ff25..59eecc3 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 24fcac5..9ac4698 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 95757e1..1321a74 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 568b5cc..03366e5 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 831328b..26e5649 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 d9dde07..978354d 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 7dd8461..3888b0e 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 44dda1b..f72f57a 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 e384b05..b2b97ed 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 d5f3f64..15d220c 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 030a597..6ae373e 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 532178d..13f57e3 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 7a02574..fb730a5 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 a6ae077..35978ce 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 697547f..8b5cb3f 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 80bfef8..a81283a 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 491eafa..2d5b119 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 37519ac..42935e2 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 e8b740b..b13b79c 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 b57ac1f..619c4fe 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 21093cd..a77d8eb 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 f553a4a..800c17d 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 0b39df5..25dc8f2 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 5b96313..5d7d893 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 af9b51f..b95d4d4 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 60bf5ff..972b133 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 de99283..b10c901 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 c17b5bb..44c730f 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 6adcb5b..e47728e 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 642bebc..5238145 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 4243a56..1e59ae7 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 4d05398..20d096b 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 aa67de8..55ddf83 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 83fc504..fec7919 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 faf1045..2c1c310 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 30e216f..0a416c7 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 22d0bfb..c1ed062 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 ea3a59a..02fddbf 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 31b007f..fd7bd1a 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 c8818aa..77ec568 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 16d993a..fac24f3 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 a5902d1..e1928b5 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 a34882c..4baf763 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 6b700a9..64a40bd 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 ac1c738..d854747 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 06b42ab..6677759 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 0101a6b..92f9e4d 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 26c7f1b..72cc164 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 efab49e..c1f5de9 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 98dd570..6be9a30 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 0b5803f..9494a39 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 114df09..39b7eee 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 03e29d5..764ec19 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 86cf3cd..d281c4b 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 0f237f1..12e2a01 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 3605ee3..83233b1 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 cf614ba..48fd904 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 64ec761..a26f1cf 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 8e36f4a..7946063 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 4d59def..6fbc7e0 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 638223b..45eaef8 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 d104dae..211fb78 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 a20639a..591e16c 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 f422383..f429df8 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 202bdbb..816812e 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 f1b24a5..4007875 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 a53b947..a42b414 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 d86b9aa..2e5a65d 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 555213f..cbf2fff 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 05ec7cd..7b73379 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 02a145d..6fdaeae 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 d2dc795..83cd885 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 6b859ee..479976e 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 7b6689a..0409f48 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 dae2eb2..76de5dc 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 1a6ed48..0da1faf 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 e3b7dc4..59d9d63 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 01eb301..00891b6 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 2f4f7a5..335aaab 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 292c0d4..a070000 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 4ce36a6..1e16211 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 9f374f8..4c11bf3 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 _0x8244=['sequelize','STRING'];(function(_0x5398a5,_0x17025b){var _0x3f19aa=function(_0x2d7379){while(--_0x2d7379){_0x5398a5['push'](_0x5398a5['shift']());}};_0x3f19aa(++_0x17025b);}(_0x8244,0x12e));var _0x4824=function(_0x4237a8,_0xacb28d){_0x4237a8=_0x4237a8-0x0;var _0xb3c67d=_0x8244[_0x4237a8];return _0xb3c67d;};'use strict';var Sequelize=require(_0x4824('0x0'));module['exports']={'version':{'type':Sequelize[_0x4824('0x1')],'unique':'version'}};
\ No newline at end of file
+var _0xa389=['version','sequelize','STRING'];(function(_0x493160,_0x53dbb5){var _0x31fcab=function(_0x1098d8){while(--_0x1098d8){_0x493160['push'](_0x493160['shift']());}};_0x31fcab(++_0x53dbb5);}(_0xa389,0xfd));var _0x9a38=function(_0x2291a7,_0x14d1a3){_0x2291a7=_0x2291a7-0x0;var _0x254a44=_0xa389[_0x2291a7];return _0x254a44;};'use strict';var Sequelize=require(_0x9a38('0x0'));module['exports']={'version':{'type':Sequelize[_0x9a38('0x1')],'unique':_0x9a38('0x2')}};
\ No newline at end of file
diff --git a/server/api/migration/migration.controller.js b/server/api/migration/migration.controller.js
index 0041bf1..3e50cf5 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 cc245f9..07a61e7 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 2ea56d5..f40c5cd 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 c7acb23..8cef307 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 fe10170..6810300 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 502f322..15e7de2 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 d6f7752..5dc33fc 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 9a2f389..43db2ec 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/openchannelAccount/index.js b/server/api/openchannelAccount/index.js
index c7a0078..c866fd7 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 42cd84b..a656d45 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 21ad068..1626cdb 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 21e099b..a0d862d 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 0b3978b..f52e122 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 a486a96..76fe937 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 f0d3669..e4e762c 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 2a40d33..0edebb4 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 44a8ec6..f904e4f 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 788c7ec..e20acf5 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 caf76b3..0b956d0 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 62ae271..66c14d9 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 f3c6dba..540e51d 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 1f56526..59f60fc 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 1ad69a9..193b2bb 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 0740169..6d95bd3 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 0441cb1..3e9203c 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 43edcda..fcd657b 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 da0ffeb..bd8b003 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 a9d30f3..676033a 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 1568da7..36a5aea 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 647fc69..305b33c 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 6075d67..7534c31 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 62ad3a9..c6389fa 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 d7af7e7..bd913ea 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 3de3841..a459005 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 dc3d6b1..6605afe 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 4eb90fc..6b9b2ff 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 2d64854..34d8cee 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 2238d46..ce62f09 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 02978bd..d0294df 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 7136271..2c94c65 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 f4ccf43..181c41e 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 50e6601..8bd97fb 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 1812eab..c4b21af 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 cdad946..b3ece43 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 dfda574..294699e 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 20185cc..d0236f7 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 6f0cfe8..b287137 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 3bdf6a0..b015a33 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 dfcdd76..0c21002 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 e2e98bb..975b2ec 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 15e2440..4eb45a0 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 877f0fb..872fe89 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 cfb43d7..f9dc485 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 1696642..f4d613a 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 5832271..20e6c69 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 166c7f0..90b55ae 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 92f4fe1..be41e5b 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 30fbba8..acdfa02 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 ad30983..37d27b9 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 ec5395a..14dc39c 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 053df58..4480ad4 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 f3aca67..821eca4 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 732a638..a27d3e8 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 034cfd5..65459f4 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 9ca485c..f5d1f62 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 d4bf155..92d074f 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 352d57a..471df80 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 49fe795..d2dd7fb 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 5af1afd..778416d 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 44b719b..ed182c7 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 fba659e..db34f2e 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 a48bd69..630cb29 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 a5c6b7d..51a864b 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 ac6fbb1..055bacf 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 2be9a3e..35dfe57 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 d12c2c4..84ec4c3 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 6ce84d7..4f22b22 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 d5db708..c540f94 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 6af4473..8515d58 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 c783a88..f88b839 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 02b475e..63d98bd 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 c0c4c85..c1793d8 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 27cbbd9..c72f11d 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 f7a8613..b4c86d1 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 62ad667..e0ed916 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 a04a043..34417b9 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 c71da7a..d9bb1b2 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 68947cd..d637718 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 7c1769a..a72314a 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 daad348..56dcfd9 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 e1e23c4..d609acf 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 37030b3..2df2e33 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 82014d7..7969e17 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 0ea7fb2..614ff34 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 17cb6f1..492df81 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 6edf1d4..ce93eb3 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 cb1c193..61cc47c 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 5135fc5..045c456 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 682bbac..0d39450 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 0273c8c..d2b2b63 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 c330c68..b885e40 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 2b84686..dd630e1 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 8ca7b1d..9c418d6 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 92b0be1..b6fcfc5 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 aadc58b..4e28fa2 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 37f8b21..5da8446 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 6c56339..f2e99f3 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 9e6b3a3..a21fdcd 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 000aee2..4361552 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 313351d..bbbf0ad 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 78bf452..c8d108f 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 56c3d4d..17985ff 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 e513799..6315197 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 208485c..ab9f24d 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 df021ef..33aff3f 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 8b489e9..ae0a066 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 eab23ac..b1c57d4 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 ebdc2e7..041746c 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 899fef9..f090ef1 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 ec7d12c..d137b3b 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 8d54a51..419ffd7 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 233f86a..2d888b1 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 1874322..b1af3ab 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 a3c40f9..a4fd24a 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 2af3282..00fcc1a 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 c96bad8..5804621 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 c9bca7e..78ceab1 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 3922088..06f21ea 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 4e1e39f..b8dc637 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 1ded291..32a8443 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 ddf7d3c..69f5dd6 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 d3c2c9d..7097bef 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 09fb09f..c51c702 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 6bf5234..8ed5f01 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 220dd09..9801028 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 0b671ba..d98b476 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 7448b0f..57f5d49 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 363d1b6..e0f392f 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 fee8c7b..3bf56e1 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 3129c80..6cc023c 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 5276c63..b4ad400 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 06812f4..33cbf3f 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 ff2b898..7df2f1a 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 4c219bd..9220efc 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 9134cc7..f0bd0e2 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 1a54a6a..af471e6 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 44230e8..84659a7 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 c03643f..085af0c 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 f1b01a5..33a24eb 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 9d56d76..d1da9cf 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 f7e9799..c16db74 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 63a703c..2cf29cb 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 afb8933..9f2cb79 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 a3ae84b..b390191 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 4f4e0dc..c078218 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 d948f27..e3a7e3c 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 9f18cb3..c3dd12b 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 b694ca0..a90978c 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 b15c4a9..3b5b198 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 24a98f4..e38b2e6 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 f6aba5e..2e6a406 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 4cc46f9..5abd5c2 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 0588760..19dbcc0 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 40a315f..337bb52 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 cdd2706..27a1814 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 c62ae4b..ad6fc57 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 3664ef7..7706a36 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 fdb1b73..a22c25f 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 ada0de2..7cda9f4 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 3862fd3..6bb85e5 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 b170d40..ba48cf7 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 793f8d5..e4f50b3 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 b12c938..0e42c52 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 a4f4d05..fa82fe9 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 f6e32c5..f2427dd 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 51e7be7..926e648 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 4548186..b808df9 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 d3a08b0..d59e3ed 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 070725d..443461d 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 3efd91a..bba3a7c 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/teamVoiceQueue/index.js b/server/api/teamVoiceQueue/index.js
index 95e2604..8829fe1 100644
--- a/server/api/teamVoiceQueue/index.js
+++ b/server/api/teamVoiceQueue/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/teamVoiceQueue/teamVoiceQueue.attributes.js b/server/api/teamVoiceQueue/teamVoiceQueue.attributes.js
index d8adc99..bd5d483 100644
--- a/server/api/teamVoiceQueue/teamVoiceQueue.attributes.js
+++ b/server/api/teamVoiceQueue/teamVoiceQueue.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['sequelize','INTEGER'];(function(_0x30a751,_0x18dc1b){var _0x163d5d=function(_0x5a1252){while(--_0x5a1252){_0x30a751['push'](_0x30a751['shift']());}};_0x163d5d(++_0x18dc1b);}(_0xb10b,0x12a));var _0xbb10=function(_0x33b259,_0x2036be){_0x33b259=_0x33b259-0x0;var _0xf95548=_0xb10b[_0x33b259];return _0xf95548;};'use strict';var Sequelize=require(_0xbb10('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xbb10('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe706=['INTEGER','sequelize','exports'];(function(_0x52eddc,_0x54d001){var _0x2dbabf=function(_0x60f89c){while(--_0x60f89c){_0x52eddc['push'](_0x52eddc['shift']());}};_0x2dbabf(++_0x54d001);}(_0xe706,0xa3));var _0x6e70=function(_0xbc25e1,_0x27007d){_0xbc25e1=_0xbc25e1-0x0;var _0xaf0a85=_0xe706[_0xbc25e1];return _0xaf0a85;};'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/teamVoiceQueue/teamVoiceQueue.model.js b/server/api/teamVoiceQueue/teamVoiceQueue.model.js
index f2bbedd..26779e8 100644
--- a/server/api/teamVoiceQueue/teamVoiceQueue.model.js
+++ b/server/api/teamVoiceQueue/teamVoiceQueue.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/teamVoiceQueue/teamVoiceQueue.rpc.js b/server/api/teamVoiceQueue/teamVoiceQueue.rpc.js
index 0df6186..80e75fd 100644
--- a/server/api/teamVoiceQueue/teamVoiceQueue.rpc.js
+++ b/server/api/teamVoiceQueue/teamVoiceQueue.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/template/index.js b/server/api/template/index.js
index f5bb937..3af8393 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 fbdbef0..c9eefb4 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. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0xbc7e=['TEXT'];(function(_0x343dfb,_0xed8587){var _0x297fe2=function(_0x19cbbd){while(--_0x19cbbd){_0x343dfb['push'](_0x343dfb['shift']());}};_0x297fe2(++_0xed8587);}(_0xbc7e,0xea));var _0xebc7=function(_0x42f5d5,_0x5b70b9){_0x42f5d5=_0x42f5d5-0x0;var _0x5e9214=_0xbc7e[_0x42f5d5];return _0x5e9214;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'html':{'type':Sequelize[_0xebc7('0x0')]}};
\ 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 4902f1e..7f873d1 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 fa1ba3d..733e243 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 20bca0a..ec0eb34 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 886860f..394d89f 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 9a134f2..144733b 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 abcb035..53608b6 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 f358379..1c534a3 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 64bd541..b73f2bb 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 9ae43c1..dbd7588 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 e1ed354..bbd96a8 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 7998647..c06ee7e 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 3f37e6f..fefc7b1 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 37dcbcf..b823dd4 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 075011d..752bd0e 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 6e47eac..faa73d2 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 6705560..04e41d8 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 20ae8d9..85a37a2 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 d0cc93f..89224f2 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 f6daca6..f66f682 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 e4c8768..2c6270a 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 8c88ecc..746cb6a 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 ae8f041..dfc2f88 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(_0x3a6ca2,_0xd280b2){var _0x6558e4=function(_0x22ac87){while(--_0x22ac87){_0x3a6ca2['push'](_0x3a6ca2['shift']());}};_0x6558e4(++_0xd280b2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xa9e0[_0x2576d7];return _0x16a08c;};'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(_0x5ec365,_0x49930c){var _0xab187d=function(_0x4d4bbd){while(--_0x4d4bbd){_0x5ec365['push'](_0x5ec365['shift']());}};_0xab187d(++_0x49930c);}(_0xbaf0,0x12a));var _0x0baf=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xbaf0[_0x2b4411];return _0x8e41ef;};'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 52c3c6f..1418cf2 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 021bf9c..38fc15d 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 e4ea720..cb58335 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 02eb4c0..27ca0d4 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 527f27a..40afc5d 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 2beb1a5..83e7ab9 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 a4b1f59..6126a3b 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 ccca1cf..e5c0f81 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(_0x225b4e,_0x179ee4){var _0x24237a=function(_0x4ac970){while(--_0x4ac970){_0x225b4e['push'](_0x225b4e['shift']());}};_0x24237a(++_0x179ee4);}(_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 _0xd8b0=['exports','sequelize'];(function(_0x28d71d,_0x3f8321){var _0x4c5c0e=function(_0x1be7a1){while(--_0x1be7a1){_0x28d71d['push'](_0x28d71d['shift']());}};_0x4c5c0e(++_0x3f8321);}(_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
diff --git a/server/api/userMailQueue/userMailQueue.model.js b/server/api/userMailQueue/userMailQueue.model.js
index abb69fc..ba81fe2 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 b9efbc2..722fb4a 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/userNotification/index.js b/server/api/userNotification/index.js
index ea3e166..57ef0a1 100644
--- a/server/api/userNotification/index.js
+++ b/server/api/userNotification/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/userNotification/userNotification.attributes.js b/server/api/userNotification/userNotification.attributes.js
index 837e593..f0ecb54 100644
--- a/server/api/userNotification/userNotification.attributes.js
+++ b/server/api/userNotification/userNotification.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/userNotification/userNotification.controller.js b/server/api/userNotification/userNotification.controller.js
index 6fded4c..02fe068 100644
--- a/server/api/userNotification/userNotification.controller.js
+++ b/server/api/userNotification/userNotification.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/userNotification/userNotification.events.js b/server/api/userNotification/userNotification.events.js
index b1743dd..0d3aae6 100644
--- a/server/api/userNotification/userNotification.events.js
+++ b/server/api/userNotification/userNotification.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/userNotification/userNotification.model.js b/server/api/userNotification/userNotification.model.js
index c3dc9d5..76533e1 100644
--- a/server/api/userNotification/userNotification.model.js
+++ b/server/api/userNotification/userNotification.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/userNotification/userNotification.rpc.js b/server/api/userNotification/userNotification.rpc.js
index 064b06a..17c4616 100644
--- a/server/api/userNotification/userNotification.rpc.js
+++ b/server/api/userNotification/userNotification.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/userNotification/userNotification.socket.js b/server/api/userNotification/userNotification.socket.js
index 3eaa299..bd135a5 100644
--- a/server/api/userNotification/userNotification.socket.js
+++ b/server/api/userNotification/userNotification.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/userOpenchannelQueue/index.js b/server/api/userOpenchannelQueue/index.js
index c1e8ecc..81f6ed7 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 4e84202..cd8f25e 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(_0x1ec836,_0x1ce2d6){var _0x4baf71=function(_0x5b640e){while(--_0x5b640e){_0x1ec836['push'](_0x1ec836['shift']());}};_0x4baf71(++_0x1ce2d6);}(_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 _0xbaf0=['exports','INTEGER'];(function(_0x4ea69d,_0x290f53){var _0x5318e0=function(_0x18e081){while(--_0x18e081){_0x4ea69d['push'](_0x4ea69d['shift']());}};_0x5318e0(++_0x290f53);}(_0xbaf0,0x12a));var _0x0baf=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xbaf0[_0x432682];return _0x463d05;};'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/userOpenchannelQueue/userOpenchannelQueue.model.js b/server/api/userOpenchannelQueue/userOpenchannelQueue.model.js
index 371ef71..57aad43 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 dd3628e..42a3e78 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 ae10cb4..d36346c 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 d3a2888..24255fd 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 8c89a63..79f0524 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 e60ff77..ecb8916 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 a1db023..f460e92 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 fbb2b2a..89fcfdf 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 ddceebf..50d9609 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 7d5f200..7599e53 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 6d61aa9..100e826 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 8b869d4..f241b30 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 554b80e..ff06573 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 995976b..13b6f13 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 931c3e7..74e504e 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 fd8f4bb..cd85b1e 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 65db68c..25ac542 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 a632f8c..279cb3f 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 5cd7a1b..efee537 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 846103c..596cc17 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 94a296f..6bb60e0 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(_0x301da2,_0x46e6bd){var _0x214922=function(_0x13b91e){while(--_0x13b91e){_0x301da2['push'](_0x301da2['shift']());}};_0x214922(++_0x46e6bd);}(_0xe706,0xa3));var _0x6e70=function(_0x87239,_0x38c793){_0x87239=_0x87239-0x0;var _0x53af1e=_0xe706[_0x87239];return _0x53af1e;};'use strict';var Sequelize=require(_0x6e70('0x0'));module[_0x6e70('0x1')]={'penalty':{'type':Sequelize[_0x6e70('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd8b0=['exports','sequelize'];(function(_0x2f4de8,_0x313395){var _0x4569cb=function(_0x17572f){while(--_0x17572f){_0x2f4de8['push'](_0x2f4de8['shift']());}};_0x4569cb(++_0x313395);}(_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
diff --git a/server/api/userSmsQueue/userSmsQueue.model.js b/server/api/userSmsQueue/userSmsQueue.model.js
index 44c5a15..fcbc3a3 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 ca3ffad..b10f13a 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 b96630c..0b20801 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 2fc27b4..1092bce 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(_0x18ae4b,_0x3fccea){var _0x409b8b=function(_0x2d611c){while(--_0x2d611c){_0x18ae4b['push'](_0x18ae4b['shift']());}};_0x409b8b(++_0x3fccea);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require(_0x0d8b('0x0'));module[_0x0d8b('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xbaf0=['exports','INTEGER'];(function(_0x4fbaf9,_0x3b8190){var _0x1d89a0=function(_0x3b650b){while(--_0x3b650b){_0x4fbaf9['push'](_0x4fbaf9['shift']());}};_0x1d89a0(++_0x3b8190);}(_0xbaf0,0x12a));var _0x0baf=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xbaf0[_0x3947c9];return _0x2e7871;};'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/userVoiceQueue/userVoiceQueue.model.js b/server/api/userVoiceQueue/userVoiceQueue.model.js
index 69fc2fb..c1b0ba1 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 a900089..a3642eb 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 288b76e..44fce5b 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 7729ded..cdd7889 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 d5bbd62..8b422b9 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 b4e7765..d7edadf 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 d160194..5f6f2a5 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 fe4e101..97104b7 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 64b4bed..279a540 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 d1e3e40..74a1bc0 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 _0xa9e0=['sequelize','exports','INTEGER'];(function(_0xb12fb,_0x1634d0){var _0x225859=function(_0x4e2d53){while(--_0x4e2d53){_0xb12fb['push'](_0xb12fb['shift']());}};_0x225859(++_0x1634d0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0xa9e0[_0x3e112d];return _0x531c31;};'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(_0x7b341f,_0x11e481){var _0x46d0a1=function(_0x6f779d){while(--_0x6f779d){_0x7b341f['push'](_0x7b341f['shift']());}};_0x46d0a1(++_0x11e481);}(_0xbaf0,0x12a));var _0x0baf=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xbaf0[_0x14add3];return _0x4a174f;};'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/userWhatsappQueue/userWhatsappQueue.model.js b/server/api/userWhatsappQueue/userWhatsappQueue.model.js
index 7faf9c8..155631c 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 532c405..f87b35d 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 e9ee336..0d74723 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 33ec32f..9b85139 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 dfdc5fe..3dfa296 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 00a799b..2d0d9c4 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 e29363f..72aad31 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 aae4b91..9af3995 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 4543fd6..19e13c1 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 f5ed15d..ece65d7 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 436f3c8..e5f1523 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 c41b2b3..afdb1ce 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 f0179e3..1be992c 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 086df5e..42a1a01 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 3b4c5ec..e4441de 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 0d1e637..7cff1b4 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 dd399a2..baf54ee 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 a97d033..1a7f39b 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 9951ed4..3e31247 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 319e6a1..07c852a 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 374377d..9735fe8 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 32fdbd4..bd7891b 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 9a9f429..f5750b0 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 a9f7fae..8b397f1 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 433e055..e57aabe 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 eb62294..cdf132d 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 844b278..75c524a 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 64478f8..a85454e 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 30b797e..3bc4e0c 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 1f4de11..2e8f45a 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 06e0fa0..9bc2426 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 2c082db..3fd1da8 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 acf616b..c41b8b4 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 aeafa9e..0821afb 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 4c53819..bdd8581 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 8b9b549..04e875f 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 cfa6fd7..c6af014 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 027030d..94ac88d 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 50eff77..e30c998 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 534fc73..f0e1136 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 c9ec2c7..df40713 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 9fddbb0..917f2a7 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 dcdc4b8..d47b69a 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 92d2180..a3e6e03 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 c0fba23..6b0b062 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 2de750f..0a113b9 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 6aab1c8..78f0a5e 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 ef983d0..22fef5a 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 71cd91d..995768e 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 b02020c..5aa76f9 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 637995f..25de11b 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 4acd5a9..d197f33 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 b28e343..90130d8 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 e0c9e7c..b16f9e0 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 29a3292..2a76c4e 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 0e0747a..e63b690 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 f811c8d..22b78c0 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 a9d9140..68f71e1 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 ffdd561..ae3bd25 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 9b4d02a..99c579d 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 d949214..a69d3ed 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 4404b18..e03d500 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 af17567..91d4944 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 26eb2a5..f6ba7e5 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 3913501..1405f4d 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 07a249e..f660c82 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 da8931c..1086e3a 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 7f262ef..0599a7e 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 729dbe0..056f3ae 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 b440a28..adac66f 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 3939d9e..5a0c7e3 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 ea7957a..de6e83e 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 a6404c5..8dccaca 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 1c6da5a..190bbb8 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 d3d7102..a4ea716 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 53a77b4..6ce098b 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 110688d..52f3c88 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 dd8131f..fde3bb8 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 cf5dfca..97551d0 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 7f0ef25..bfcc9db 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 99650df..a1dc296 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 8f2caa0..3c132bf 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 30a4ce2..534bd77 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 7429203..5d579b0 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 6a67ca0..a712e42 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 19d5ade..337f677 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 a1ad8de..3fe9c58 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 165e401..40395d6 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 2a46c46..ab1c7f1 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 ded75d1..69df1cd 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 16f920b..7d8ffdd 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 b31d6c5..89b2966 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 ccbff29..8282eb0 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 4951e7e..4f89838 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 93e3116..3921b4a 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 393c087..b9969b7 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 19645cb..c31c700 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 050c2ba..a6a6962 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 7c0cf61..196a731 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 b93050c..aab0f5f 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 d9d8229..7a8690f 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 c64a713..5e9a9bb 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 36e225a..3d94b61 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 b4a3065..c4fcf1c 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 4978b20..d99c243 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 a2e3386..36749e2 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 573134a..0fb8933 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 111e1c8..a646909 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 c06a509..8191f15 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 2b8b072..5e9e513 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 0f9d990..f89db26 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 270d748..c544155 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 39ca206..855d2bc 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 ec70060..d9b18aa 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 8124a1f..723764c 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 5a97552..bf490ac 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 f72ecc1..8dc248a 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 f07296a..82d593b 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 0a41efc..6f66bb6 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 bb50c06..6869561 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 4fad16e..d7d1684 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 a321d55..3f61dda 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 250fd7c..86c0212 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 43f7eda..4f488fe 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 d850210..dba01e5 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 37f46f5..264b258 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 325f69c..0c17f20 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 37292ba..74d690f 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 36cd70e..d15c73c 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 b39b525..3f0ccfc 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 7eab60a..1ef73cd 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 c8e27f0..6b7b74d 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 1fcadea..79876d7 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 72b0659..e39ff36 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 7498943..29b0bb6 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 ee591f9..8ba9bfe 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 7c2ee54..a320b73 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 89c7113..4770255 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 6f2933d..9314113 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 c2d065a..e044a14 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 f00a508..497894a 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 a10587d..0325130 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 f84bee9..ce4c5c2 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 a54e987..c0fe88e 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 8b9b437..37efcaa 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 7e86689..e15742c 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/import/cm/csvUpdates.js b/server/components/import/cm/csvUpdates.js
new file mode 100644
index 0000000..e7958e4
--- /dev/null
+++ b/server/components/import/cm/csvUpdates.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/server/components/integrations/configuration.js b/server/components/integrations/configuration.js
index 669fb67..b89abf0 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 e42d09e..25bf90e 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 33cf750..8fd252a 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 5758381..c256633 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 24cae9b..00648fc 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 4cf9e69..30f27f6 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: '127.0.0.1',
+      host: '192.168.1.204',
       port: 3306,
       dialect: 'mysql',
       dialectOptions: {
@@ -32,7 +32,7 @@ module.exports = {
     username: 'xcall',
     password: 'xC@LL1234',
     options: {
-      host: '127.0.0.1',
+      host: '192.168.1.204',
       port: 3306,
       dialect: 'mysql',
       dialectOptions: {
@@ -47,7 +47,7 @@ module.exports = {
     }
   },
   asterisk: {
-    ip: '127.0.0.1',
+    ip: '192.168.1.204',
     port: '5038',
     username: 'xcall',
     password: 'xcall1234'
@@ -77,8 +77,5 @@ module.exports = {
   },
   xdr: {
     disabled: false
-  },
-  encrypt: {
-    algorithm: 'aes192'
   }
 };
diff --git a/server/config/express.js b/server/config/express.js
index 483abea..20fff53 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 d8b6106..54ee63c 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 6a00c97..31016c0 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 485a6bf..b435390 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 32c7f1a..34681b3 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. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
+var _0x6323=['secret','app-id'];(function(_0x5235a6,_0x680b76){var _0x1cf37e=function(_0x31c173){while(--_0x31c173){_0x5235a6['push'](_0x5235a6['shift']());}};_0x1cf37e(++_0x680b76);}(_0x6323,0x1b7));var _0x3632=function(_0x160a60,_0xb3bea5){_0x160a60=_0x160a60-0x0;var _0x1ac7cb=_0x6323[_0x160a60];return _0x1ac7cb;};'use strict';module['exports']={'DOMAIN':'http://localhost:9000','SESSION_SECRET':'myappanuglar-secret','GOOGLE_ID':_0x3632('0x0'),'GOOGLE_SECRET':_0x3632('0x1'),'DEBUG':''};
\ No newline at end of file
diff --git a/server/config/logger.js b/server/config/logger.js
index ba8abd8..99cc673 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 199dd77..e097925 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 6de08b1..fd5b6ea 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 e750caa..bc71975 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 fab6c95..a92b92f 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 d9cc2de..b49395d 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/schedule/whatsapp.js b/server/config/schedule/whatsapp.js
index 67f5fda..38ca4b0 100644
--- a/server/config/schedule/whatsapp.js
+++ b/server/config/schedule/whatsapp.js
@@ -15,4 +15,4 @@
 // * 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 4ee43a1..0a217ec 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/seedUsers.js b/server/config/seedUsers.js
index ac0e873..cf0fd7d 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 469d33d..7bb5193 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 24767db..65a8213 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 e7d8c68..d9adf14 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 d4c167c..60dbc93 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/1624887183415-cloroplasti.jpg b/server/files/attachments/1624887183415-cloroplasti.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..48597b0983ccf86f61b55f4028c9b4b5532e24aa
GIT binary patch
literal 109857
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

literal 0
HcmV?d00001

diff --git a/server/files/attachments/1624887197137-palestra.jpg b/server/files/attachments/1624887197137-palestra.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..6baa009919f0eb01d3ae112b514b62efd63c54ca
GIT binary patch
literal 667893
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%0DA8r5`;$Oe=b
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
T!@(IA(B8O{WAvL-F=66=rVEhJ

literal 0
HcmV?d00001

diff --git a/server/files/templates/chatOfflineMessage.ejs b/server/files/templates/chatOfflineMessage.ejs
index cbe4548..80cbf5b 100644
--- a/server/files/templates/chatOfflineMessage.ejs
+++ b/server/files/templates/chatOfflineMessage.ejs
@@ -1,5 +1,16 @@
-<%- bodyTitle %>
-
-<% body.forEach(function(data) { -%>
-<%= data[0] %>: <%= data[1] %>
-<% }); -%>
+<!doctype html>
+<html lang="en">
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+</head>
+<body>
+    <p>
+        <%- bodyTitle %>
+    </p>
+        <% body.forEach(function(data) { -%>
+            <span>
+                <%= data[0] %>: <%= data[1] %>
+            </span><br >
+            <% }); -%>
+</body>
+</html>
\ No newline at end of file
diff --git a/server/migrations/2.5.29.js b/server/migrations/2.5.29.js
index f3b60f5..ae1d1f7 100644
--- a/server/migrations/2.5.29.js
+++ b/server/migrations/2.5.29.js
@@ -169,4 +169,4 @@ module.exports = {
   down: function (queryInterface, Sequelize) {
     // var migration = new Migration(queryInterface);
   }
-};
\ No newline at end of file
+};
diff --git a/server/migrations/2.5.30.js b/server/migrations/2.5.30.js
index 49fb895..d7fab18 100644
--- a/server/migrations/2.5.30.js
+++ b/server/migrations/2.5.30.js
@@ -153,10 +153,63 @@ module.exports = {
     return new BPromise(function (resolve) {
       var migration = new Migration(queryInterface);
 
-      migration.addColumn('settings', 'secureCookieEnabled', {
+      // START users
+      migration.changeColumn('users', 'previousPasswords', {
+        type: Sequelize.TEXT
+      });
+
+      migration.addColumn('users', 'downloadAttachments', {
+        type: Sequelize.BOOLEAN,
+        defaultValue: true
+      });
+
+      migration.addColumn('users', 'downloadOmnichannelInteractions', {
+        type: Sequelize.BOOLEAN,
+        defaultValue: true
+      });
+
+      migration.addColumn('users', 'downloadVoiceRecordings', {
         type: Sequelize.BOOLEAN,
         defaultValue: true
       });
+      // END users
+
+      // START user_profiles
+      migration.addColumn('user_profiles', 'downloadAttachments', {
+        type: Sequelize.BOOLEAN,
+        defaultValue: true
+      });
+
+      migration.addColumn('user_profiles', 'downloadCallySquareRecordings', {
+        type: Sequelize.BOOLEAN,
+        defaultValue: true
+      });
+
+      migration.addColumn('user_profiles', 'downloadContactManagerLists', {
+        type: Sequelize.BOOLEAN,
+        defaultValue: true
+      });
+
+      migration.addColumn('user_profiles', 'downloadJscriptySessions', {
+        type: Sequelize.BOOLEAN,
+        defaultValue: true
+      });
+
+      migration.addColumn('user_profiles', 'downloadOmnichannelInteractions', {
+        type: Sequelize.BOOLEAN,
+        defaultValue: true
+      });
+
+      migration.addColumn('user_profiles', 'downloadScreenRecordings', {
+        type: Sequelize.BOOLEAN,
+        defaultValue: true
+      });
+
+      migration.addColumn('user_profiles', 'downloadVoiceRecordings', {
+        type: Sequelize.BOOLEAN,
+        defaultValue: true
+      });
+      // END user_profiles
 
       // START FINAL
       migration.final(resolve);
@@ -167,4 +220,4 @@ module.exports = {
   down: function (queryInterface, Sequelize) {
     // var migration = new Migration(queryInterface);
   }
-};
+};
\ No newline at end of file
diff --git a/server/migrations/2.5.31.js b/server/migrations/2.5.31.js
new file mode 100644
index 0000000..3e46123
--- /dev/null
+++ b/server/migrations/2.5.31.js
@@ -0,0 +1,182 @@
+'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, indexName) {
+  var _this = this;
+  this.sequence.enqueue(function () {
+    return _this.queryInterface
+      .addIndex(table, column, {
+        indexName: indexName
+      })
+      .then(function () {
+        logger.info('addIndex %s %s %s', table, column.join(','), indexName);
+      })
+      .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);
+
+      //STAR chat_websites
+      migration.addColumn('chat_websites', 'vidaooTopic', {
+        type: Sequelize.STRING,
+        defaultValue: 'Generated by XCALLY Motion'
+      });
+
+      migration.addColumn('chat_websites', 'vidaooNote', {
+        type: Sequelize.STRING,
+        defaultValue: 'Meeting generated for interaction  #{{interaction.id}} by {{agent.name}}'
+      });
+      
+      migration.addColumn('chat_websites', 'vidaooMetadata', {
+        type: Sequelize.TEXT,
+        defaultValue: null
+      });
+      //END chat_websites
+
+      // 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/migrations/2.5.7.js b/server/migrations/2.5.7.js
index 6d79d6e..1bcbecd 100644
--- a/server/migrations/2.5.7.js
+++ b/server/migrations/2.5.7.js
@@ -5,7 +5,7 @@ var util = require('util');
 
 var logger = require('../config/logger')('migration');
 
-var Sequence = function () {};
+var Sequence = function () { };
 
 Sequence.prototype.enqueue = function (fn) {
   this.tail = this.tail ? this.tail.finally(fn) : fn();
@@ -157,43 +157,43 @@ module.exports = {
 
       //START dialogflow
       migration.addColumn('chat_messages', 'providerName', {
-				type: Sequelize.STRING
+        type: Sequelize.STRING
       });
 
       migration.addColumn('chat_messages', 'providerResponse', {
-				type: Sequelize.TEXT
+        type: Sequelize.TEXT
       });
-      
+
       migration.addColumn('openchannel_messages', 'providerName', {
-				type: Sequelize.STRING
+        type: Sequelize.STRING
       });
 
       migration.addColumn('openchannel_messages', 'providerResponse', {
-				type: Sequelize.TEXT
+        type: Sequelize.TEXT
       });
-      
+
       migration.addColumn('sms_messages', 'providerName', {
-				type: Sequelize.STRING
+        type: Sequelize.STRING
       });
 
       migration.addColumn('sms_messages', 'providerResponse', {
-				type: Sequelize.TEXT
+        type: Sequelize.TEXT
       });
-      
+
       migration.addColumn('whatsapp_messages', 'providerName', {
-				type: Sequelize.STRING
+        type: Sequelize.STRING
       });
 
       migration.addColumn('whatsapp_messages', 'providerResponse', {
-				type: Sequelize.TEXT
+        type: Sequelize.TEXT
       });
-      
+
       migration.addColumn('square_messages', 'providerName', {
-				type: Sequelize.STRING
+        type: Sequelize.STRING
       });
 
       migration.addColumn('square_messages', 'providerResponse', {
-				type: Sequelize.TEXT
+        type: Sequelize.TEXT
       });
       //END dialogflow
 
diff --git a/server/migrations/2.6.0.js b/server/migrations/2.6.0.js
new file mode 100644
index 0000000..20eb41a
--- /dev/null
+++ b/server/migrations/2.6.0.js
@@ -0,0 +1,228 @@
+'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, indexName) {
+  var _this = this;
+  this.sequence.enqueue(function () {
+    return _this.queryInterface
+      .addIndex(table, column, {
+        indexName: indexName
+      })
+      .then(function () {
+        logger.info('addIndex %s %s %s', table, column.join(','), indexName);
+      })
+      .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);
+
+      migration.query('CREATE TABLE `tools_contact_item_types` (' +
+        '  `id` INT AUTO_INCREMENT NOT NULL,' +
+        '  `name` varchar(255) NOT NULL,' +
+        '  `OrderBy` INT NULL,' +
+        '  `rgbBackgroundColor` varchar(20) NULL,' +
+        '  `createdAt` datetime NOT NULL,' +
+        '  `updatedAt` datetime NOT NULL,' +
+        '  UNIQUE  INDEX `item_type_id` (id) ' +
+        ') ENGINE=InnoDB DEFAULT CHARSET=utf8;');
+
+      // START CM_HOPPER_HAS_NUMBERS
+      migration.query('CREATE TABLE `cm_contact_has_items` (' +
+        '  `CmContactId` INT NOT NULL,' +
+        '  `item` varchar(255) NOT NULL,' +
+        '  `ItemTypeId` INT NULL,' +
+        '  `ItemClass` VARCHAR(20) NOT NULL,' +
+        '  `OrderBy` INT NULL,' +
+        '  `createdAt` datetime NOT NULL,' +
+        '  `updatedAt` datetime NOT NULL,' +
+        '  UNIQUE  INDEX `contact_item` (CmContactId,item), ' +
+        '  CONSTRAINT `cm_contact_has_items_ibfk_1` FOREIGN KEY (`CmContactId`) REFERENCES `cm_contacts` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, ' +
+        '  CONSTRAINT `cm_contact_has_items_ibfk_2` FOREIGN KEY (`ItemTypeId`) REFERENCES `tools_contact_item_types` (`id`) ON DELETE CASCADE ON UPDATE CASCADE' +
+        ') ENGINE=InnoDB DEFAULT CHARSET=utf8;');
+
+      migration.query('CREATE TABLE `cm_hopper_additional_phones` (' +
+        '  `id` INT AUTO_INCREMENT NOT NULL,' +
+        '  `CmHopperId` INT NOT NULL,' +
+        '  `phone` varchar(255) NOT NULL,' +
+        '  `OrderBy` INT NULL default 0,' +
+        '  `scheduledat` datetime NULL,' +
+        '  `countbusyretry` INT NULL default 0,' +
+        '  `countcongestionretry` INT NULL default 0,' +
+        '  `countnoanswerretry` INT NULL default 0,' +
+        '  `countnosuchnumberretry` INT NULL default 0,' +
+        '  `countdropretry` INT NULL default 0,' +
+        '  `countabandonedretry` INT NULL default 0,' +
+        '  `countmachineretry` INT NULL default 0,' +
+        '  `countagentrejectretry` INT NULL default 0,' +
+        '  `createdAt` datetime NOT NULL,' +
+        '  `updatedAt` datetime NOT NULL,' +
+        '  UNIQUE  INDEX `hopper_additional_phone_id` (id), ' +        
+        '  INDEX `cm_hopper_phone_item` (CmHopperId), ' +
+        '  CONSTRAINT `cm_hopper_phone_item1` FOREIGN KEY (`CmHopperId`) REFERENCES `cm_hopper` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ' +
+        ') ENGINE=InnoDB DEFAULT CHARSET=utf8;');
+
+      migration.addColumn("cm_hopper", "OrderBy", {
+        type: Sequelize.INTEGER,
+        allowNull: true,
+        defaultValue: 0
+      });
+      
+      migration.addColumn("cm_contacts", "AdditionalPhones", {
+        type: Sequelize.STRING,
+        allowNull: true
+      });
+
+      migration.addColumn('voice_queues', 'callAdditionalPhoneAfterMin', {
+        type: Sequelize.INTEGER,
+        defaultValue: 3
+      });
+      //END voice_queues
+
+
+      // 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 4e1b715..3c6c432 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 33a547f..362908f 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 30b6ced..2584f4e 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 1c4a7e7..507a341 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 1a6ed61..2b60983 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 1f1706d..3f8a586 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 0191f02..510f499 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 80a98d5..68eb560 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 0cd5bab..6e6e757 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 f015256..aa3c928 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 9295c65..3474444 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 _0x81bd=['exports','./polly','./lex'];(function(_0x130b30,_0x3d45b6){var _0x1b9f34=function(_0xf5b5ff){while(--_0xf5b5ff){_0x130b30['push'](_0x130b30['shift']());}};_0x1b9f34(++_0x3d45b6);}(_0x81bd,0x7c));var _0xd81b=function(_0x2b1c74,_0x4d14e8){_0x2b1c74=_0x2b1c74-0x0;var _0x575295=_0x81bd[_0x2b1c74];return _0x575295;};var polly=require(_0xd81b('0x0'));var lex=require(_0xd81b('0x1'));module[_0xd81b('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x8ce3=['./lex','./polly'];(function(_0x3927b5,_0x2af290){var _0x414228=function(_0x9dd02e){while(--_0x9dd02e){_0x3927b5['push'](_0x3927b5['shift']());}};_0x414228(++_0x2af290);}(_0x8ce3,0xc3));var _0x38ce=function(_0x3871d7,_0x3cfcc5){_0x3871d7=_0x3871d7-0x0;var _0x28ec09=_0x8ce3[_0x3871d7];return _0x28ec09;};var polly=require(_0x38ce('0x0'));var lex=require(_0x38ce('0x1'));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 bab5cba..509ea97 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. 		           *
 // *                                                                       *
 // *************************************************************************
-'use strict';var lex=require('./lib/api');module['exports']=function(_0x5407e7,_0xeeb808,_0x22ce4b,_0x2a6255,_0x913595,_0xbe8efc){return lex(_0x5407e7,_0xeeb808,_0x22ce4b,_0x2a6255,_0x913595,_0xbe8efc);};
\ 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 5b6983d..7e33606 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 29fed00..2ff32de 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 bdd0f08..1fe1837 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 f4b58f0..5ffe651 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 _0x75c4=['./lib/api','exports'];(function(_0x39bea6,_0x38f111){var _0x4d9d23=function(_0x24c69a){while(--_0x24c69a){_0x39bea6['push'](_0x39bea6['shift']());}};_0x4d9d23(++_0x38f111);}(_0x75c4,0xbe));var _0x475c=function(_0x30b06d,_0x1c51f1){_0x30b06d=_0x30b06d-0x0;var _0x2c0b5b=_0x75c4[_0x30b06d];return _0x2c0b5b;};'use strict';var asr=require(_0x475c('0x0'));module[_0x475c('0x1')]=function(_0x52d110,_0x5574ea,_0xee0465,_0x576429){return asr(_0x52d110,_0x5574ea,_0xee0465);};
\ No newline at end of file
+var _0x0598=['exports','./lib/api'];(function(_0x3aaf0a,_0x450970){var _0x33e6bc=function(_0x1db54d){while(--_0x1db54d){_0x3aaf0a['push'](_0x3aaf0a['shift']());}};_0x33e6bc(++_0x450970);}(_0x0598,0x18b));var _0x8059=function(_0xa169b1,_0x1afb7f){_0xa169b1=_0xa169b1-0x0;var _0x40c1f2=_0x0598[_0xa169b1];return _0x40c1f2;};'use strict';var asr=require(_0x8059('0x0'));module[_0x8059('0x1')]=function(_0xf28f69,_0x298c2f,_0x213a83,_0x1581db){return asr(_0xf28f69,_0x298c2f,_0x213a83);};
\ 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 b3be569..259cdbf 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 acecaf2..d843636 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 _0xd821=['exports','./asr'];(function(_0x15aaa0,_0x46c431){var _0x483cc4=function(_0x72c071){while(--_0x72c071){_0x15aaa0['push'](_0x15aaa0['shift']());}};_0x483cc4(++_0x46c431);}(_0xd821,0xcb));var _0x1d82=function(_0x2d9909,_0x8368ca){_0x2d9909=_0x2d9909-0x0;var _0x8dc02c=_0xd821[_0x2d9909];return _0x8dc02c;};var asr=require(_0x1d82('0x0'));module[_0x1d82('0x1')]={'asr':asr};
\ No newline at end of file
+var _0xc600=['./asr','exports'];(function(_0x4b3650,_0x563507){var _0x2fbc97=function(_0x25bd6e){while(--_0x25bd6e){_0x4b3650['push'](_0x4b3650['shift']());}};_0x2fbc97(++_0x563507);}(_0xc600,0x11a));var _0x0c60=function(_0x42ad59,_0x54c731){_0x42ad59=_0x42ad59-0x0;var _0x327056=_0xc600[_0x42ad59];return _0x327056;};var asr=require(_0x0c60('0x0'));module[_0x0c60('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 0210c84..d0521b5 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 8f34e03..59a3a8b 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 nda=require('./nda');module['exports']={'nda':nda};
\ No newline at end of file
+var _0x993b=['exports','./nda'];(function(_0x1f7e25,_0x3321e2){var _0x26c32f=function(_0x2086e4){while(--_0x2086e4){_0x1f7e25['push'](_0x1f7e25['shift']());}};_0x26c32f(++_0x3321e2);}(_0x993b,0x1d5));var _0xb993=function(_0x1431b6,_0x27b9eb){_0x1431b6=_0x1431b6-0x0;var _0x1aaba9=_0x993b[_0x1431b6];return _0x1aaba9;};var nda=require(_0xb993('0x0'));module[_0xb993('0x1')]={'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 a5a6993..ceb5d46 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 8f12323..b4b22d8 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 _0xffe7=['./lib/api'];(function(_0x18268e,_0x3cc033){var _0xb76b1b=function(_0x542376){while(--_0x542376){_0x18268e['push'](_0x18268e['shift']());}};_0xb76b1b(++_0x3cc033);}(_0xffe7,0xc8));var _0x7ffe=function(_0x498c75,_0x53fb9a){_0x498c75=_0x498c75-0x0;var _0x19df3d=_0xffe7[_0x498c75];return _0x19df3d;};'use strict';var asr=require(_0x7ffe('0x0'));module['exports']=function(_0xf6389,_0x1d15e0,_0x7c7efb,_0xdd8b9){return asr(_0xf6389,_0x1d15e0,_0x7c7efb,_0xdd8b9);};
\ No newline at end of file
+var _0xe0ec=['exports','./lib/api'];(function(_0x48b810,_0x173a5e){var _0x23c17d=function(_0x38531e){while(--_0x38531e){_0x48b810['push'](_0x48b810['shift']());}};_0x23c17d(++_0x173a5e);}(_0xe0ec,0x73));var _0xce0e=function(_0x5a8aa3,_0x2294d5){_0x5a8aa3=_0x5a8aa3-0x0;var _0x5d0458=_0xe0ec[_0x5a8aa3];return _0x5d0458;};'use strict';var asr=require(_0xce0e('0x0'));module[_0xce0e('0x1')]=function(_0x4de613,_0x1f6c94,_0x2fcc84,_0x8cd9e4){return asr(_0x4de613,_0x1f6c94,_0x2fcc84,_0x8cd9e4);};
\ 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 e7433c6..00d3324 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 647fc2d..10cb4be 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 _0xfd96=['./asr'];(function(_0x3b8763,_0x59ed0a){var _0xb4332a=function(_0x6fca4f){while(--_0x6fca4f){_0x3b8763['push'](_0x3b8763['shift']());}};_0xb4332a(++_0x59ed0a);}(_0xfd96,0xe7));var _0x6fd9=function(_0x106f67,_0x1eafa5){_0x106f67=_0x106f67-0x0;var _0x3d9fd5=_0xfd96[_0x106f67];return _0x3d9fd5;};var asr=require(_0x6fd9('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
+var asr=require('./asr');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 d1e71aa..dc477b0 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 fcac0cb..1eedeed 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 14dbfb3..6498e23 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 e65ce55..43ed39e 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 cede59f..034ed72 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 3d09cad..9c026d4 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/additionalPhone.js b/server/services/ami/dialer/additionalPhone.js
new file mode 100644
index 0000000..ca4c9eb
--- /dev/null
+++ b/server/services/ami/dialer/additionalPhone.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/server/services/ami/dialer/agentComplete.js b/server/services/ami/dialer/agentComplete.js
index 58ea8a7..dcf9fe4 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 c5dc3d6..e6ce506 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 04e0267..27b9643 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 b41fa08..869ab31 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 5424cf5..67f50c0 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 fcec436..e955afe 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 bbb81c4..115b4d7 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 d3fff4b..0b630f3 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 64fcb90..bfdcfec 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 16aa542..9f17ace 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 0eac6fe..9721e17 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 0e0dd44..fdb6208 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 3db84f1..38779d5 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 87da04a..ab48463 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 03f71cd..2a2a38d 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 1884240..028aa9e 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 5e90038..1bc2dbb 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 1b88527..62f34a9 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 62e1889..e6c2ec3 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 d2a079f..6e0f0a1 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 bec185e..9e0dd81 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 650c74b..686929c 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 f37c790..39653f1 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 bc5711d..a23b35e 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 507bdd5..96dbc45 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 6d31f12..d08e890 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 de70d8f..b4d57c1 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 a71cb4d..e64ec6d 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 29a0854..e61dfc4 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 6f7cb9f..b4c0185 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 e4a53a3..edef595 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 9767f25..162a98b 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 ad2960b..c104149 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 4ea1942..ef20db2 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 dbc128f..374895d 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 e5242d4..01c1642 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 e063f78..f5e74da 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 514d36a..751648b 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 8f12536..6a46233 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 1ffaaf8..92e5120 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 be19345..9bd7ef4 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 29f15ed..92939e8 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 3699e48..e04d0a9 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 3b07e5f..4b5a6e6 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 876add0..8d624e4 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 a193b2d..a3e0821 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 ce70030..1f3f9f4 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 55868cf..7b68e5d 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 b5b716f..f387d49 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 0f074b8..a0f8a94 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/cmHopperAdditionalPhone.js b/server/services/ami/rpc/cmHopperAdditionalPhone.js
new file mode 100644
index 0000000..1f27fa2
--- /dev/null
+++ b/server/services/ami/rpc/cmHopperAdditionalPhone.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/server/services/ami/rpc/cmHopperBlack.js b/server/services/ami/rpc/cmHopperBlack.js
index e7de3b4..147af5c 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 e9e75ef..4135cc5 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 db172c4..2a95cc8 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 eb7b1fa..f8ae896 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 8c79ee2..a614623 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 684547d..5e52754 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 34b0408..284e6d6 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 789095f..a343389 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 3029cec..946fad1 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 e0d86b9..9ff6a64 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 b5def85..8855595 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 070c8ce..96fd166 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 803e448..a80c58a 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 7db8bc8..9b4a547 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 280565f..306b498 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 c4c578f..38ac252 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/setting.js b/server/services/ami/rpc/setting.js
index 6a576fc..6d44b75 100644
--- a/server/services/ami/rpc/setting.js
+++ b/server/services/ami/rpc/setting.js
@@ -15,4 +15,4 @@
 // * 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 67663db..d3d1ccf 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 49fc02f..6b36b6e 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 8568859..f0354aa 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 164b725..4a67819 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 8147636..b0b9976 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 83193e8..1c08eaa 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 35aa92d..073fdd5 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 e810729..43e6d6a 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 d82f72d..577be3b 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 0fc723b..069fb4d 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 837424e..bdcfd63 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 dafd080..45eb8ea 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 10ee09d..f60bcb1 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 7241ed3..441d633 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 ee7a299..5af9300 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 283a37a..0798041 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 94dc75e..7c36642 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 7729108..59c0194 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 bd71d9c..33179a3 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 ff07fe0..be2452e 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 9281d5e..478ea1b 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 5ce95d0..c13172a 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 54e17e0..3259d60 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 1c48eea..e3cbeea 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 7325048..b723b0b 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 bc64fc6..e5cb6c3 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 bbdfac3..51c1759 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 9df26ae..a3cc79c 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 a3f6a44..17a372c 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 ee9c48f..dadec09 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 0d6708e..38bfce8 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 774f52c..58648b0 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 09c2fba..a73c055 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 19199cf..64e8681 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 473e661..bab438e 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 70b4f58..9aa8b13 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 2d109a4..b8ec678 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 8080f2f..e582df8 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 e0ab56b..152c637 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/rpc/setting.js b/server/services/email/rpc/setting.js
index 154e5ae..8f413a7 100644
--- a/server/services/email/rpc/setting.js
+++ b/server/services/email/rpc/setting.js
@@ -15,4 +15,4 @@
 // * 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 4f6dfb3..3d895d2 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 93ac407..e5ce54d 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 d43e663..e68b0a4 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 a6609f2..844ce56 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 2282053..5cd1163 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 eb82bd6..1744e20 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 7adae15..f6eea03 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 f8915a2..f04267d 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 0c7388b..e0f0f5e 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 6392965..1654804 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 ddb88b6..c248f14 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 7618f4b..1d88560 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 e17091b..38a1e4a 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 f6ba06a..c1f98ec 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 70d6a4d..38ee261 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 7a2d7a1..c4f45a8 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 5a6cb75..cfefff0 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 501d1f4..ec0a2a7 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 e5385b0..c747af8 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 d9cf472..d7c326b 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 9888690..6cdf0b8 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 643f879..48cd2cf 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 bb66250..eaf61d2 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 870b351..f1406e9 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 df181c4..5f3f906 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 509aa49..88b0068 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 2c73cef..35b2989 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 18eb654..61626c3 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 0beb7be..89dbfd4 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 d12a077..dd33801 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 11bc980..dec6110 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 927e221..579d989 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 4663c59..adf23e4 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 fd6f338..62602a0 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 b369a54..87c80f5 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 a18210f..ab35257 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 8aac9bd..81943a9 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 ab26ef6..5041e12 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 d352e74..eb5b699 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 39131c5..25380a5 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 8826959..02351d0 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 0f80fce..bfb1843 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 84974e0..7e32e73 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 6db3b01..6eda931 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 00346bb..7ec393b 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 a59d329..213dfbc 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/dialogflowV2.js b/server/services/routing/server/applications/dialogflowV2.js
index abe2362..397017d 100644
--- a/server/services/routing/server/applications/dialogflowV2.js
+++ b/server/services/routing/server/applications/dialogflowV2.js
@@ -15,4 +15,4 @@
 // * 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 c2917ee..07518d1 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 b7e3719..889f75f 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 c6004ff..15be19f 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 bab5a36..aab49b3 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 7aaf629..e189a3b 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 ad32a2c..c2a4876 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 c245ddd..67b26df 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 4d08403..9083153 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 _0x42b0=['./rrmemory','./agent','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x42b0,0xbc));var _0x042b=function(_0x15fa00,_0x2c50a7){_0x15fa00=_0x15fa00-0x0;var _0x48237e=_0x42b0[_0x15fa00];return _0x48237e;};'use strict';module[_0x042b('0x0')]={'rrmemory':require(_0x042b('0x1')),'beepall':require('./beepall'),'agent':require(_0x042b('0x2'))};
\ No newline at end of file
+var _0x7f94=['./beepall','./agent','exports'];(function(_0x3ee31c,_0x404b00){var _0x94e47e=function(_0x4ebeb0){while(--_0x4ebeb0){_0x3ee31c['push'](_0x3ee31c['shift']());}};_0x94e47e(++_0x404b00);}(_0x7f94,0x65));var _0x47f9=function(_0x27a404,_0xb1aeb3){_0x27a404=_0x27a404-0x0;var _0x36d209=_0x7f94[_0x27a404];return _0x36d209;};'use strict';module[_0x47f9('0x0')]={'rrmemory':require('./rrmemory'),'beepall':require(_0x47f9('0x1')),'agent':require(_0x47f9('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 9af1947..a4a0b17 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 6e9151b..9636ff6 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 2442cc7..0e10715 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 ca7f52b..4b7ad7f 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/tvox.js b/server/services/routing/server/applications/tvox.js
index 144263d..8b44754 100644
--- a/server/services/routing/server/applications/tvox.js
+++ b/server/services/routing/server/applications/tvox.js
@@ -15,4 +15,4 @@
 // * 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 6fba0af..e2bb6a9 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 9949863..1aa3e5c 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 9b59718..03a92da 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 63c1933..c54aaea 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 7569719..e773cf5 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 56db29b..67b7478 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 9b616cb..aa793ad 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 81564bf..2ff0f0d 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 db56c56..c0830f6 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 db2ad70..f7d1f5d 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 0412ba9..4eafbe9 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 0b0497b..545f517 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 375159e..4698512 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
diff --git a/snippet/3.0.0/index.html b/snippet/3.0.0/index.html
index 8ca085a..4dc01bd 100644
--- a/snippet/3.0.0/index.html
+++ b/snippet/3.0.0/index.html
@@ -2,7 +2,7 @@
       base.setAttribute('href', window.location.pathname)
       const title = document.getElementsByTagName('title')[0];
       title.parentNode.insertBefore(base, title);
                   settings.id
                 layout.up &&
@@ -26,4 +26,4 @@
                 status != 'online' &&
                 status != 'offline' &&
                 status != 'unmanaged'
\ No newline at end of file
\ No newline at end of file
diff --git a/snippet/3.0.0/scripts/app.js b/snippet/3.0.0/scripts/app.js
new file mode 100644
index 0000000..85e187d
--- /dev/null
+++ b/snippet/3.0.0/scripts/app.js
@@ -0,0 +1,2 @@
+/*! For license information please see app.js.LICENSE.txt */
\ No newline at end of file
diff --git a/snippet/3.0.0/scripts/app.js.LICENSE.txt b/snippet/3.0.0/scripts/app.js.LICENSE.txt
new file mode 100644
index 0000000..15c6a44
--- /dev/null
+++ b/snippet/3.0.0/scripts/app.js.LICENSE.txt
@@ -0,0 +1,19 @@
+/*!
+ * *************************************************************************
+ * *                                                                       *
+ * * 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. 		        *
+ * *                                                                       *
+ * *************************************************************************
+ */
diff --git a/snippet/3.0.0/scripts/chat.js b/snippet/3.0.0/scripts/chat.js
new file mode 100644
index 0000000..e4f1f60
--- /dev/null
+++ b/snippet/3.0.0/scripts/chat.js
@@ -0,0 +1,3 @@
+/*! For license information please see chat.js.LICENSE.txt */
+//# sourceMappingURL=chat.js.map
\ No newline at end of file
diff --git a/snippet/3.0.0/scripts/chat.js.LICENSE.txt b/snippet/3.0.0/scripts/chat.js.LICENSE.txt
new file mode 100644
index 0000000..0c56e30
--- /dev/null
+++ b/snippet/3.0.0/scripts/chat.js.LICENSE.txt
@@ -0,0 +1,7 @@
+/**
+ * @license AngularJS v1.8.2
+ * (c) 2010-2020 Google LLC. http://angularjs.org
+ * License: MIT
+ */
+
+//! moment.js locale configuration
diff --git a/snippet/3.0.0/scripts/chat.js.map b/snippet/3.0.0/scripts/chat.js.map
new file mode 100644
index 0000000..3647c87
--- /dev/null
+++ b/snippet/3.0.0/scripts/chat.js.map
@@ -0,0 +1 @@
\ No newline at end of file
diff --git a/snippet/3.0.0/scripts/runtime.js b/snippet/3.0.0/scripts/runtime.js
index a024eee..34ff98f 100644
--- a/snippet/3.0.0/scripts/runtime.js
+++ b/snippet/3.0.0/scripts/runtime.js
@@ -1,2 +1,2 @@
 //# sourceMappingURL=runtime.js.map
\ No newline at end of file
diff --git a/snippet/3.0.0/scripts/runtime.js.map b/snippet/3.0.0/scripts/runtime.js.map
index 735467a..1370ed7 100644
--- a/snippet/3.0.0/scripts/runtime.js.map
+++ b/snippet/3.0.0/scripts/runtime.js.map
@@ -1 +1 @@
\ No newline at end of file
\ No newline at end of file
diff --git a/snippet/3.0.0/scripts/vendor-index.js b/snippet/3.0.0/scripts/vendor-index.js
new file mode 100644
index 0000000..f98a4ec
--- /dev/null
+++ b/snippet/3.0.0/scripts/vendor-index.js
@@ -0,0 +1,2 @@
+//# sourceMappingURL=vendor-index.js.map
\ No newline at end of file
diff --git a/snippet/3.0.0/scripts/vendor-index.js.map b/snippet/3.0.0/scripts/vendor-index.js.map
new file mode 100644
index 0000000..194f7d6
--- /dev/null
+++ b/snippet/3.0.0/scripts/vendor-index.js.map
@@ -0,0 +1 @@
\ No newline at end of file
diff --git a/snippet/3.0.0/scripts/vendor-stateDirectives.js b/snippet/3.0.0/scripts/vendor-stateDirectives.js
index cdb4c9f..3f96b99 100644
--- a/snippet/3.0.0/scripts/vendor-stateDirectives.js
+++ b/snippet/3.0.0/scripts/vendor-stateDirectives.js
@@ -1,2 +1,2 @@
 //# sourceMappingURL=vendor-stateDirectives.js.map
\ No newline at end of file
diff --git a/snippet/3.0.0/scripts/vendor-stateDirectives.js.map b/snippet/3.0.0/scripts/vendor-stateDirectives.js.map
index 9f21a79..b6ba8a5 100644
--- a/snippet/3.0.0/scripts/vendor-stateDirectives.js.map
+++ b/snippet/3.0.0/scripts/vendor-stateDirectives.js.map
@@ -1 +1 @@
\ No newline at end of file
\ No newline at end of file
diff --git a/snippet/3.0.0/styles/app.css b/snippet/3.0.0/styles/app.css
new file mode 100644
index 0000000..e2982b4
--- /dev/null
+++ b/snippet/3.0.0/styles/app.css
@@ -0,0 +1,28 @@
+/*!
+ * *************************************************************************
+ * *                                                                       *
+ * * 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. 		        *
+ * *                                                                       *
+ * *************************************************************************
+ */
+@import url(https://fonts.googleapis.com/icon?family=Material+Icons);
+ * AngularJS Material Design
+ * https://github.com/angular/material
+ * @license MIT
+ * v1.2.2
+
+/*# sourceMappingURL=app.css.map*/
\ No newline at end of file
diff --git a/snippet/3.0.0/styles/app.css.map b/snippet/3.0.0/styles/app.css.map
new file mode 100644
index 0000000..d240e26
--- /dev/null
+++ b/snippet/3.0.0/styles/app.css.map
@@ -0,0 +1 @@
\ No newline at end of file
diff --git a/snippet/3.0.0/templates/offline/index.tpl.html/index.tpl.html b/snippet/3.0.0/templates/offline/index.tpl.html/index.tpl.html
index ab3572a..7277cb5 100644
--- a/snippet/3.0.0/templates/offline/index.tpl.html/index.tpl.html
+++ b/snippet/3.0.0/templates/offline/index.tpl.html/index.tpl.html
@@ -9,229 +9,235 @@
     ng-style="{'font-size': '{{settings.fontSize}}px'}"
     novalidate
-    <div ng-repeat="field in vm.fields | orderBy:'index'" layout="column">
-      <span>{{field.props.title + (field.config.required ? '*' : '')}}</span>
-
-      <span
-        ng-class="field.props.error? 'field-description error': 'field-description'"
-      >
-        <div
-          ng-if="vm.checkHTML[$index]"
-          ng-bind-html="field.props.helpText"
-        ></div>
-        <div
-          ng-if="!vm.checkHTML[$index]"
-          ng-bind-html="field.props.error || field.props.helpText | embed:{linkTarget:'_blank'}"
-        ></div>
-      </span>
-
-      <!-- CHAT ERROR -->
+    <div class="form-input-container">
       <div
-        class="chat-error"
-        ng-repeat="error in vm.errors"
-        layout="row"
-        layout-margin
+        ng-repeat="field in vm.fields | orderBy:'index'"
+        layout="column"
+        class="form-field"
-        <i class="mdi mdi-alert mdi-24px mdi-light"></i>
-        <md-tooltip md-direction="top"
-          >{{error.message || 'Service temporarily unavailable.'}}</md-tooltip
-        >
-        <span class="chat-error-message"
-          >{{error.message || 'Service temporarily unavailable.'}}</span
+        <span>{{field.props.title + (field.config.required ? '*' : '')}}</span>
+
+        <span
+          ng-class="field.props.error? 'field-description error': 'field-description'"
-      </div>
-      <!-- CHAT ERROR -->
+          <div
+            ng-if="vm.checkHTML[$index]"
+            ng-bind-html="field.props.helpText"
+          ></div>
+          <div
+            ng-if="!vm.checkHTML[$index]"
+            ng-bind-html="field.props.error || field.props.helpText | embed:{linkTarget:'_blank'}"
+          ></div>
+        </span>
 
-      <md-input-container
-        md-no-float
-        ng-switch="field.type"
-        style="margin: 0px; padding: 0px 0px 10px 0px"
-      >
-        <!-- START label -->
-        <div ng-switch-when="label">
-          <md-content
-            flex
-            layout-padding
-            layout="row"
-            layout-align="center center"
+        <!-- CHAT ERROR -->
+        <div
+          class="chat-error"
+          ng-repeat="error in vm.errors"
+          layout="row"
+          layout-margin
+        >
+          <i class="mdi mdi-alert mdi-24px mdi-light"></i>
+          <md-tooltip md-direction="top"
+            >{{error.message || 'Service temporarily unavailable.'}}</md-tooltip
+          >
+          <span class="chat-error-message"
+            >{{error.message || 'Service temporarily unavailable.'}}</span
-            <span>{{field.value}}</span>
-          </md-content>
         </div>
-        <!-- END label -->
+        <!-- CHAT ERROR -->
 
-        <!-- START textinput -->
-        <div ng-switch-when="input">
-          <input
-            name="{{field.props.title}}"
-            ng-model="vm.form[field.props.title]"
-            placeholder="{{field.config.placeholder}}"
-            type="{{field.config.type}}"
-            ng-required="field.config.required"
-          />
-        </div>
-        <!-- END textinput -->
+        <md-input-container md-no-float ng-switch="field.type">
+          <!-- START label -->
+          <div ng-switch-when="label">
+            <md-content
+              flex
+              layout-padding
+              layout="row"
+              layout-align="center center"
+            >
+              <span>{{field.value}}</span>
+            </md-content>
+          </div>
+          <!-- END label -->
 
-        <!-- START textarea -->
-        <div ng-switch-when="textarea">
-          <textarea
-            name="{{field.props.title}}"
-            ng-model="vm.form[field.props.title]"
-            placeholder="{{field.config.placeholder}}"
-            md-maxlength="150"
-            rows="3"
-            ng-required="field.config.required"
-          ></textarea>
-        </div>
-        <!-- END textarea -->
+          <!-- START textinput -->
+          <div ng-switch-when="input">
+            <input
+              name="{{field.props.title}}"
+              ng-model="vm.form[field.props.title]"
+              placeholder="{{field.config.placeholder}}"
+              type="{{field.config.type}}"
+              ng-required="field.config.required"
+            />
+          </div>
+          <!-- END textinput -->
 
-        <!-- START select -->
-        <div ng-switch-when="chooseFromList">
-          <md-select
-            name="{{field.props.title}}"
-            ng-model="vm.form[field.props.title]"
-            placeholder="{{field.config.placeholder}}"
-            ng-required="field.config.required"
-          >
-            <md-option
-              ng-repeat="option in field.options"
-              ng-value="option.value"
-              >{{option.value}}</md-option
+          <!-- START textarea -->
+          <div ng-switch-when="textarea">
+            <textarea
+              name="{{field.props.title}}"
+              ng-model="vm.form[field.props.title]"
+              placeholder="{{field.config.placeholder}}"
+              md-maxlength="150"
+              rows="3"
+              ng-required="field.config.required"
+            ></textarea>
+          </div>
+          <!-- END textarea -->
+
+          <!-- START select -->
+          <div ng-switch-when="chooseFromList">
+            <md-select
+              name="{{field.props.title}}"
+              ng-model="vm.form[field.props.title]"
+              placeholder="{{field.config.placeholder}}"
+              ng-required="field.config.required"
-          </md-select>
-        </div>
-        <!-- END select -->
+              <md-option
+                ng-repeat="option in field.options"
+                ng-value="option.value"
+                >{{option.value}}</md-option
+              >
+            </md-select>
+          </div>
+          <!-- END select -->
 
-        <!-- START radio -->
-        <div
-          ng-switch-when="multipleChoices"
-          layout="{{field.config.direction === 'vertical' ? 'row' : 'column'}}"
-        >
-          <md-radio-group
-            name="{{field.props.title}}"
-            ng-model="vm.form[field.props.title]"
-            ng-required="field.config.required"
-            layout="{{field.config.direction === 'vertical' ? 'row' : 'column'}}"
+          <!-- START radio -->
+          <div
+            ng-switch-when="multipleChoices"
+            layout="{{field.config.direction === 'horizontal' ? 'row' : 'column'}}"
-            <md-radio-button
-              ng-repeat="option in field.options"
-              value="{{option.value}}"
-              class="md-primary"
-              >{{option.value}}</md-radio-button
+            <md-radio-group
+              name="{{field.props.title}}"
+              ng-model="vm.form[field.props.title]"
+              ng-required="field.config.required"
+              layout="{{field.config.direction === 'horizontal' ? 'row' : 'column'}}"
-          </md-radio-group>
-        </div>
-        <!-- END radio -->
+              <md-radio-button
+                ng-repeat="option in field.options"
+                ng-value="option.value"
+                class="md-primary"
+                >{{option.value}}</md-radio-button
+              >
+            </md-radio-group>
+          </div>
+          <!-- END radio -->
+
+          <!-- START checkbox -->
+          <div ng-switch-when="checkboxes">
+            <div
+              layout="{{field.config.direction === 'horizontal' ? 'row' : 'column'}}"
+            >
+              <md-checkbox
+                md-no-ink
+                aria-label="{{field.props.title}}"
+                ng-repeat="option in field.options"
+                ng-checked="vm.exists(field.props.title, option.value)"
+                ng-disabled="!vm.exists(field.props.title, option.value) && field.config.maxSelections === vm.form[field.props.title].length"
+                ng-click="vm.toggle(field.props.title, option.value)"
+                flex
+              >
+                {{option.value}}
+              </md-checkbox>
+            </div>
+          </div>
+          <!-- END checkbox -->
 
-        <!-- START checkbox -->
-        <div ng-switch-when="checkboxes">
+          <!-- START agreement -->
           <div
-            layout="{{field.config.direction === 'vertical' ? 'row' : 'column'}}"
+            ng-switch-when="agreement"
+            layout="{{field.config.direction === 'horizontal' ? 'row' : 'column'}}"
             <md-checkbox
               md-no-ink
+              ng-model="vm.form[field.props.title]"
               aria-label="{{field.props.title}}"
-              ng-repeat="option in field.options"
-              ng-checked="vm.exists(field.props.title, option.value)"
-              ng-disabled="!vm.exists(field.props.title, option.value) && field.config.maxSelections === vm.form[field.props.title].length"
-              ng-click="vm.toggle(field.props.title, option.value)"
-              flex
+              ng-required="field.config.required"
-              {{option.value}}
+              {{field.options[0].value}}
             </md-checkbox>
           </div>
-        </div>
-        <!-- END checkbox -->
-
-        <!-- START agreement -->
-        <div ng-switch-when="agreement" layout="column">
-          <md-checkbox
-            md-no-ink
-            ng-model="vm.form[field.props.title]"
-            aria-label="{{field.props.title}}"
-            ng-required="field.config.required"
-          >
-            {{field.options[0].value}}
-          </md-checkbox>
-        </div>
-        <!-- END agreement -->
+          <!-- END agreement -->
 
-        <!-- START upload -->
-        <div ng-switch-when="upload" layout="column">
-          <div layout="row" class="option-item upload-item">
-            <md-input-container class="md-block" style="margin: 0">
-              <input
-                type="file"
-                class="ng-hide"
-                aria-label="file"
-                ng-init="vm.setupFileInput(field)"
-              />
-              <md-input-container flex class="md-block">
+          <!-- START upload -->
+          <div ng-switch-when="upload" layout="column">
+            <div layout="row" class="option-item upload-item">
+              <md-input-container class="md-block" style="margin: 0">
                 <input
-                  type="text"
-                  ng-model="fileName"
+                  type="file"
                   class="ng-hide"
-                  disabled
-                  aria-label="fileName"
+                  aria-label="file"
+                  ng-init="vm.setupFileInput(field)"
                 />
+                <md-input-container flex class="md-block">
+                  <input
+                    type="text"
+                    ng-model="fileName"
+                    class="ng-hide"
+                    disabled
+                    aria-label="fileName"
+                  />
+                </md-input-container>
               </md-input-container>
-            </md-input-container>
 
-            <md-button
-              ng-init="vm.initUploadButton($index)"
-              class="md-raised md-accent upload-button"
-              ng-style="{'background-color': '{{settings.color_button}}', 'color': '{{settings.textColor}}'}"
-              ><md-icon class="material-icons">attach_file</md-icon
-              ><span>{{field.config.uploadFileButtonLabel}}</span></md-button
-            >
-          </div>
-          <div>
-            <label></label>
-            <div
-              style="
-                display: grid;
-                grid-template-columns: 8em auto;
-                align-items: center;
-              "
-              layout="row"
-              ng-repeat="option in field.options"
-            >
               <md-button
-                ng-click="vm.removeFileItem(field, $index)"
-                class="md-icon-button"
+                ng-init="vm.initUploadButton($index)"
+                class="md-raised md-accent upload-button"
+                ng-style="{'background-color': '{{settings.color_button}}', 'color': '{{settings.textColor}}'}"
+                ><md-icon class="material-icons">attach_file</md-icon
+                ><span>{{field.config.uploadFileButtonLabel}}</span></md-button
-                <md-icon class="material-icons">close</md-icon>
-              </md-button>
-              <span class="filename-label" ng-init="vm.makeFileOptionsVisible()"
-                >{{option.name}}</span
+            </div>
+            <div>
+              <label></label>
+              <div
+                style="
+                  display: grid;
+                  grid-template-columns: 8em auto;
+                  align-items: center;
+                "
+                layout="row"
+                ng-repeat="option in field.options"
+                <md-button
+                  ng-click="vm.removeFileItem(field, $index)"
+                  class="md-icon-button"
+                >
+                  <md-icon class="material-icons">close</md-icon>
+                </md-button>
+                <span
+                  class="filename-label"
+                  ng-init="vm.makeFileOptionsVisible()"
+                  >{{option.name}}</span
+                >
+              </div>
             </div>
           </div>
-        </div>
-        <!-- END upload -->
+          <!-- END upload -->
 
-        <div
-          ng-messages="vm.userForm[field.props.title].$error"
-          ng-show="vm.userForm[field.props.title].$touched"
-          role="alert"
-        >
-          <div ng-message="required">
-            <span>Required Field</span>
-          </div>
-          <div ng-message="email">
-            <span>Wrong type field</span>
+          <div
+            ng-messages="vm.userForm[field.props.title].$error"
+            ng-show="vm.userForm[field.props.title].$touched"
+            role="alert"
+          >
+            <div ng-message="required">
+              <span>Required Field</span>
+            </div>
+            <div ng-message="email">
+              <span>Wrong type field</span>
+            </div>
           </div>
-        </div>
-      </md-input-container>
+        </md-input-container>
+      </div>
     </div>
-
     <div class="offline-button-wrapper">
       <md-button
         id="offlineButton"
         ng-if="(typeField !== 'label')"
         title="{{settings.offline_chat_button}}"
-        ng-click="vm.submit()"
         class="md-raised"
+        ng-click="vm.submit()"
         ng-disabled="vm.userForm.$invalid || loading"
         ng-style="{'background-color': '{{settings.color_button}}', 'color': '{{settings.textColor}}'}"
diff --git a/snippet/3.0.0/templates/online/index.tpl.html/index.tpl.html b/snippet/3.0.0/templates/online/index.tpl.html/index.tpl.html
index ba5140f..8e20e74 100644
--- a/snippet/3.0.0/templates/online/index.tpl.html/index.tpl.html
+++ b/snippet/3.0.0/templates/online/index.tpl.html/index.tpl.html
@@ -1,23 +1,30 @@
 <!-- CHAT CONTENT -->
 <md-content class="chat-online">
   <form
+    ng-if="vm.fields.length"
     name="vm.userForm"
     layout="column"
     ng-style="{'font-size': '{{settings.fontSize}}px'}"
     novalidate
     <div class="form-input-container">
-      <div ng-repeat="field in ::vm.fields | orderBy:'index'" layout="column">
+      <div
+        ng-repeat="field in vm.fields | orderBy:'index'"
+        layout="column"
+        class="form-field"
+      >
         <span>{{field.props.title + (field.config.required ? '*' : '')}}</span>
 
-        <span style="line-height: 14px; color: grey; padding: 5px 0px 5px 0px">
+        <span
+          ng-class="field.props.error? 'field-description error': 'field-description'"
+        >
           <div
             ng-if="vm.checkHTML[$index]"
             ng-bind-html="field.props.helpText"
           ></div>
           <div
             ng-if="!vm.checkHTML[$index]"
-            ng-bind-html="field.props.helpText | embed:{linkTarget:'_blank'}"
+            ng-bind-html="field.props.error || field.props.helpText | embed:{linkTarget:'_blank'}"
           ></div>
         </span>
 
@@ -38,11 +45,7 @@
         </div>
         <!-- CHAT ERROR -->
 
-        <md-input-container
-          md-no-float
-          ng-switch="field.type"
-          style="margin: 0px; padding: 0px 0px 10px 0px"
-        >
+        <md-input-container md-no-float ng-switch="field.type">
           <!-- START label -->
           <div ng-switch-when="label">
             <md-content
@@ -90,7 +93,7 @@
               ng-required="field.config.required"
               <md-option
-                ng-repeat="option in ::field.options"
+                ng-repeat="option in field.options"
                 ng-value="option.value"
                 >{{option.value}}</md-option
               >
@@ -99,16 +102,18 @@
           <!-- END select -->
 
           <!-- START radio -->
-          <div ng-switch-when="multipleChoices">
+          <div
+            ng-switch-when="multipleChoices"
+            layout="{{field.config.direction === 'horizontal' ? 'row' : 'column'}}"
+          >
             <md-radio-group
-              md-no-ink
               name="{{field.props.title}}"
               ng-model="vm.form[field.props.title]"
               ng-required="field.config.required"
-              layout="{{field.config.direction === 'vertical' ? 'row' : 'column'}}"
+              layout="{{field.config.direction === 'horizontal' ? 'row' : 'column'}}"
               <md-radio-button
-                ng-repeat="option in ::field.options"
+                ng-repeat="option in field.options"
                 ng-value="option.value"
                 class="md-primary"
                 >{{option.value}}</md-radio-button
@@ -118,28 +123,29 @@
           <!-- END radio -->
 
           <!-- START checkbox -->
-          <div
-            ng-switch-when="checkboxes"
-            layout="{{field.config.direction === 'vertical' ? 'row' : 'column'}}"
-          >
-            <md-checkbox
-              md-no-ink
-              aria-label="{{field.props.title}}"
-              ng-repeat="option in ::field.options"
-              ng-checked="vm.exists(field.props.title, option.value)"
-              ng-disabled="!vm.exists(field.props.title, option.value) && field.config.maxSelections === vm.form[field.props.title].length"
-              ng-required="vm.getSelected()"
-              ng-click="vm.toggle(field.props.title, option.value)"
+          <div ng-switch-when="checkboxes">
+            <div
+              layout="{{field.config.direction === 'horizontal' ? 'row' : 'column'}}"
-              {{option.value}}
-            </md-checkbox>
+              <md-checkbox
+                md-no-ink
+                aria-label="{{field.props.title}}"
+                ng-repeat="option in field.options"
+                ng-checked="vm.exists(field.props.title, option.value)"
+                ng-disabled="!vm.exists(field.props.title, option.value) && field.config.maxSelections === vm.form[field.props.title].length"
+                ng-click="vm.toggle(field.props.title, option.value)"
+                flex
+              >
+                {{option.value}}
+              </md-checkbox>
+            </div>
           </div>
           <!-- END checkbox -->
 
           <!-- START agreement -->
           <div
             ng-switch-when="agreement"
-            layout="{{field.config.direction === 'vertical' ? 'row' : 'column'}}"
+            layout="{{field.config.direction === 'horizontal' ? 'row' : 'column'}}"
             <md-checkbox
               md-no-ink
@@ -167,15 +173,18 @@
         </md-input-container>
       </div>
     </div>
-    <md-button
-      title="{{settings.start_chat_button}}"
-      class="md-raised"
-      ng-click="vm.submit()"
-      ng-disabled="vm.userForm.$invalid  || vm.disableItem"
-      ng-style="{'background-color': '{{settings.color_button}}', 'color': '{{settings.textColor}}'}"
-    >
-      {{settings.start_chat_button}}
-    </md-button>
+    <div class="online-button-wrapper">
+      <md-button
+        id="onlineButton"
+        title="{{settings.start_chat_button}}"
+        class="md-raised"
+        ng-click="vm.submit()"
+        ng-disabled="vm.userForm.$invalid  || vm.disableItem"
+        ng-style="{'background-color': '{{settings.color_button}}', 'color': '{{settings.textColor}}'}"
+      >
+        {{settings.start_chat_button}}
+      </md-button>
+    </div>
   </form>
 
   <md-content layout="row" layout-align="center end" class="white-label">
-- 
1.7.1