From d75275ebf7c54bb094714f3f2ae3604497267543 Mon Sep 17 00:00:00 2001 From: Giuseppe Careri Date: Wed, 20 Sep 2017 15:44:25 +0200 Subject: [PATCH] Built motion from commit de2cb856.|2.0.29 --- apidoc/api_data.js | 2 +- apidoc/api_data.json | 2 +- apidoc/api_project.js | 2 +- apidoc/api_project.json | 2 +- package.json | 4 +- public/app/main/apps/analytics/i18n/da.json | 5 +- public/app/main/apps/analytics/i18n/de.json | 5 +- public/app/main/apps/analytics/i18n/en.json | 2 +- public/app/main/apps/analytics/i18n/es.json | 5 +- public/app/main/apps/analytics/i18n/fa.json | 5 +- public/app/main/apps/analytics/i18n/fi.json | 5 +- public/app/main/apps/analytics/i18n/fr.json | 5 +- public/app/main/apps/analytics/i18n/hi.json | 5 +- public/app/main/apps/analytics/i18n/it.json | 2 +- public/app/main/apps/analytics/i18n/ja.json | 5 +- public/app/main/apps/analytics/i18n/ko.json | 5 +- public/app/main/apps/analytics/i18n/nl.json | 5 +- public/app/main/apps/analytics/i18n/no.json | 5 +- public/app/main/apps/analytics/i18n/pt-PT.json | 5 +- public/app/main/apps/analytics/i18n/ru.json | 5 +- public/app/main/apps/analytics/i18n/sv.json | 5 +- public/app/main/apps/analytics/i18n/tr.json | 5 +- public/app/main/apps/analytics/i18n/zh-CN.json | 5 +- public/app/main/apps/analytics/i18n/zh-TW.json | 5 +- public/app/main/apps/callysquare/i18n/da.json | 5 +- public/app/main/apps/callysquare/i18n/de.json | 5 +- public/app/main/apps/callysquare/i18n/en.json | 2 +- public/app/main/apps/callysquare/i18n/es.json | 5 +- public/app/main/apps/callysquare/i18n/fa.json | 5 +- public/app/main/apps/callysquare/i18n/fi.json | 5 +- public/app/main/apps/callysquare/i18n/fr.json | 5 +- public/app/main/apps/callysquare/i18n/hi.json | 5 +- public/app/main/apps/callysquare/i18n/it.json | 2 +- public/app/main/apps/callysquare/i18n/ja.json | 5 +- public/app/main/apps/callysquare/i18n/ko.json | 5 +- public/app/main/apps/callysquare/i18n/nl.json | 5 +- public/app/main/apps/callysquare/i18n/no.json | 5 +- public/app/main/apps/callysquare/i18n/pt-PT.json | 5 +- public/app/main/apps/callysquare/i18n/ru.json | 5 +- public/app/main/apps/callysquare/i18n/sv.json | 5 +- public/app/main/apps/callysquare/i18n/tr.json | 5 +- public/app/main/apps/callysquare/i18n/zh-CN.json | 5 +- public/app/main/apps/callysquare/i18n/zh-TW.json | 5 +- public/app/main/apps/chat/i18n/da.json | 31 +++++- public/app/main/apps/chat/i18n/de.json | 31 +++++- public/app/main/apps/chat/i18n/en.json | 67 +++++++++++- public/app/main/apps/chat/i18n/es.json | 31 +++++- public/app/main/apps/chat/i18n/fa.json | 31 +++++- public/app/main/apps/chat/i18n/fi.json | 31 +++++- public/app/main/apps/chat/i18n/fr.json | 31 +++++- public/app/main/apps/chat/i18n/hi.json | 31 +++++- public/app/main/apps/chat/i18n/it.json | 52 +++++++++- public/app/main/apps/chat/i18n/ja.json | 31 +++++- public/app/main/apps/chat/i18n/ko.json | 31 +++++- public/app/main/apps/chat/i18n/nl.json | 31 +++++- public/app/main/apps/chat/i18n/no.json | 31 +++++- public/app/main/apps/chat/i18n/pt-PT.json | 31 +++++- public/app/main/apps/chat/i18n/ru.json | 31 +++++- public/app/main/apps/chat/i18n/sv.json | 31 +++++- public/app/main/apps/chat/i18n/tr.json | 31 +++++- public/app/main/apps/chat/i18n/zh-CN.json | 31 +++++- public/app/main/apps/chat/i18n/zh-TW.json | 31 +++++- public/app/main/apps/contactmanager/i18n/da.json | 11 ++- public/app/main/apps/contactmanager/i18n/de.json | 11 ++- public/app/main/apps/contactmanager/i18n/en.json | 6 +- public/app/main/apps/contactmanager/i18n/es.json | 11 ++- public/app/main/apps/contactmanager/i18n/fa.json | 11 ++- public/app/main/apps/contactmanager/i18n/fi.json | 11 ++- public/app/main/apps/contactmanager/i18n/fr.json | 11 ++- public/app/main/apps/contactmanager/i18n/hi.json | 11 ++- public/app/main/apps/contactmanager/i18n/it.json | 6 +- public/app/main/apps/contactmanager/i18n/ja.json | 11 ++- public/app/main/apps/contactmanager/i18n/ko.json | 11 ++- public/app/main/apps/contactmanager/i18n/nl.json | 11 ++- public/app/main/apps/contactmanager/i18n/no.json | 11 ++- .../app/main/apps/contactmanager/i18n/pt-PT.json | 11 ++- public/app/main/apps/contactmanager/i18n/ru.json | 11 ++- public/app/main/apps/contactmanager/i18n/sv.json | 11 ++- public/app/main/apps/contactmanager/i18n/tr.json | 11 ++- .../app/main/apps/contactmanager/i18n/zh-CN.json | 11 ++- .../app/main/apps/contactmanager/i18n/zh-TW.json | 11 ++- public/app/main/apps/dashboards/i18n/da.json | 5 +- public/app/main/apps/dashboards/i18n/de.json | 5 +- public/app/main/apps/dashboards/i18n/en.json | 14 +++- public/app/main/apps/dashboards/i18n/es.json | 5 +- public/app/main/apps/dashboards/i18n/fa.json | 5 +- public/app/main/apps/dashboards/i18n/fi.json | 5 +- public/app/main/apps/dashboards/i18n/fr.json | 5 +- public/app/main/apps/dashboards/i18n/hi.json | 5 +- public/app/main/apps/dashboards/i18n/it.json | 14 +++- public/app/main/apps/dashboards/i18n/ja.json | 5 +- public/app/main/apps/dashboards/i18n/ko.json | 5 +- public/app/main/apps/dashboards/i18n/nl.json | 5 +- public/app/main/apps/dashboards/i18n/no.json | 5 +- public/app/main/apps/dashboards/i18n/pt-PT.json | 5 +- public/app/main/apps/dashboards/i18n/ru.json | 5 +- public/app/main/apps/dashboards/i18n/sv.json | 5 +- public/app/main/apps/dashboards/i18n/tr.json | 5 +- public/app/main/apps/dashboards/i18n/zh-CN.json | 5 +- public/app/main/apps/dashboards/i18n/zh-TW.json | 5 +- public/app/main/apps/fax/i18n/da.json | 8 +- public/app/main/apps/fax/i18n/de.json | 8 +- public/app/main/apps/fax/i18n/en.json | 2 +- public/app/main/apps/fax/i18n/es.json | 8 +- public/app/main/apps/fax/i18n/fa.json | 8 +- public/app/main/apps/fax/i18n/fi.json | 8 +- public/app/main/apps/fax/i18n/fr.json | 8 +- public/app/main/apps/fax/i18n/hi.json | 8 +- public/app/main/apps/fax/i18n/it.json | 2 +- public/app/main/apps/fax/i18n/ja.json | 8 +- public/app/main/apps/fax/i18n/ko.json | 8 +- public/app/main/apps/fax/i18n/nl.json | 8 +- public/app/main/apps/fax/i18n/no.json | 8 +- public/app/main/apps/fax/i18n/pt-PT.json | 8 +- public/app/main/apps/fax/i18n/ru.json | 8 +- public/app/main/apps/fax/i18n/sv.json | 8 +- public/app/main/apps/fax/i18n/tr.json | 8 +- public/app/main/apps/fax/i18n/zh-CN.json | 8 +- public/app/main/apps/fax/i18n/zh-TW.json | 8 +- public/app/main/apps/integrations/i18n/da.json | 35 ++++++- public/app/main/apps/integrations/i18n/de.json | 35 ++++++- public/app/main/apps/integrations/i18n/en.json | 2 +- public/app/main/apps/integrations/i18n/es.json | 35 ++++++- public/app/main/apps/integrations/i18n/fa.json | 35 ++++++- public/app/main/apps/integrations/i18n/fi.json | 35 ++++++- public/app/main/apps/integrations/i18n/fr.json | 35 ++++++- public/app/main/apps/integrations/i18n/hi.json | 35 ++++++- public/app/main/apps/integrations/i18n/it.json | 2 +- public/app/main/apps/integrations/i18n/ja.json | 35 ++++++- public/app/main/apps/integrations/i18n/ko.json | 35 ++++++- public/app/main/apps/integrations/i18n/nl.json | 35 ++++++- public/app/main/apps/integrations/i18n/no.json | 35 ++++++- public/app/main/apps/integrations/i18n/pt-PT.json | 35 ++++++- public/app/main/apps/integrations/i18n/ru.json | 35 ++++++- public/app/main/apps/integrations/i18n/sv.json | 35 ++++++- public/app/main/apps/integrations/i18n/tr.json | 35 ++++++- public/app/main/apps/integrations/i18n/zh-CN.json | 35 ++++++- public/app/main/apps/integrations/i18n/zh-TW.json | 35 ++++++- public/app/main/apps/jscripty/i18n/da.json | 8 ++- public/app/main/apps/jscripty/i18n/de.json | 8 ++- public/app/main/apps/jscripty/i18n/en.json | 9 ++- public/app/main/apps/jscripty/i18n/es.json | 8 ++- public/app/main/apps/jscripty/i18n/fa.json | 8 ++- public/app/main/apps/jscripty/i18n/fi.json | 8 ++- public/app/main/apps/jscripty/i18n/fr.json | 8 ++- public/app/main/apps/jscripty/i18n/hi.json | 8 ++- public/app/main/apps/jscripty/i18n/it.json | 9 ++- public/app/main/apps/jscripty/i18n/ja.json | 8 ++- public/app/main/apps/jscripty/i18n/ko.json | 8 ++- public/app/main/apps/jscripty/i18n/nl.json | 8 ++- public/app/main/apps/jscripty/i18n/no.json | 8 ++- public/app/main/apps/jscripty/i18n/pt-PT.json | 8 ++- public/app/main/apps/jscripty/i18n/ru.json | 8 ++- public/app/main/apps/jscripty/i18n/sv.json | 8 ++- public/app/main/apps/jscripty/i18n/tr.json | 8 ++- public/app/main/apps/jscripty/i18n/zh-CN.json | 8 ++- public/app/main/apps/jscripty/i18n/zh-TW.json | 8 ++- public/app/main/apps/mail/i18n/da.json | 8 ++- public/app/main/apps/mail/i18n/de.json | 8 ++- public/app/main/apps/mail/i18n/en.json | 2 +- public/app/main/apps/mail/i18n/es.json | 8 ++- public/app/main/apps/mail/i18n/fa.json | 8 ++- public/app/main/apps/mail/i18n/fi.json | 8 ++- public/app/main/apps/mail/i18n/fr.json | 8 ++- public/app/main/apps/mail/i18n/hi.json | 8 ++- public/app/main/apps/mail/i18n/it.json | 2 +- public/app/main/apps/mail/i18n/ja.json | 8 ++- public/app/main/apps/mail/i18n/ko.json | 8 ++- public/app/main/apps/mail/i18n/nl.json | 8 ++- public/app/main/apps/mail/i18n/no.json | 8 ++- public/app/main/apps/mail/i18n/pt-PT.json | 8 ++- public/app/main/apps/mail/i18n/ru.json | 8 ++- public/app/main/apps/mail/i18n/sv.json | 8 ++- public/app/main/apps/mail/i18n/tr.json | 8 ++- public/app/main/apps/mail/i18n/zh-CN.json | 8 ++- public/app/main/apps/mail/i18n/zh-TW.json | 8 ++- public/app/main/apps/motiondialer/i18n/da.json | 58 +++++++++- public/app/main/apps/motiondialer/i18n/de.json | 58 +++++++++- public/app/main/apps/motiondialer/i18n/en.json | 65 +++++++++++- public/app/main/apps/motiondialer/i18n/es.json | 58 +++++++++- public/app/main/apps/motiondialer/i18n/fa.json | 58 +++++++++- public/app/main/apps/motiondialer/i18n/fi.json | 58 +++++++++- public/app/main/apps/motiondialer/i18n/fr.json | 58 +++++++++- public/app/main/apps/motiondialer/i18n/hi.json | 58 +++++++++- public/app/main/apps/motiondialer/i18n/it.json | 102 +++++++++++++++--- public/app/main/apps/motiondialer/i18n/ja.json | 57 +++++++++- public/app/main/apps/motiondialer/i18n/ko.json | 57 +++++++++- public/app/main/apps/motiondialer/i18n/nl.json | 57 +++++++++- public/app/main/apps/motiondialer/i18n/no.json | 57 +++++++++- public/app/main/apps/motiondialer/i18n/pt-PT.json | 57 +++++++++- public/app/main/apps/motiondialer/i18n/ru.json | 57 +++++++++- public/app/main/apps/motiondialer/i18n/sv.json | 57 +++++++++- public/app/main/apps/motiondialer/i18n/tr.json | 57 +++++++++- public/app/main/apps/motiondialer/i18n/zh-CN.json | 57 +++++++++- public/app/main/apps/motiondialer/i18n/zh-TW.json | 57 +++++++++- public/app/main/apps/openchannel/i18n/da.json | 35 ++++++- public/app/main/apps/openchannel/i18n/de.json | 35 ++++++- public/app/main/apps/openchannel/i18n/en.json | 23 ++++- public/app/main/apps/openchannel/i18n/es.json | 35 ++++++- public/app/main/apps/openchannel/i18n/fa.json | 35 ++++++- public/app/main/apps/openchannel/i18n/fi.json | 35 ++++++- public/app/main/apps/openchannel/i18n/fr.json | 35 ++++++- public/app/main/apps/openchannel/i18n/hi.json | 35 ++++++- public/app/main/apps/openchannel/i18n/it.json | 49 ++++++++- public/app/main/apps/openchannel/i18n/ja.json | 35 ++++++- public/app/main/apps/openchannel/i18n/ko.json | 35 ++++++- public/app/main/apps/openchannel/i18n/nl.json | 35 ++++++- public/app/main/apps/openchannel/i18n/no.json | 35 ++++++- public/app/main/apps/openchannel/i18n/pt-PT.json | 35 ++++++- public/app/main/apps/openchannel/i18n/ru.json | 35 ++++++- public/app/main/apps/openchannel/i18n/sv.json | 35 ++++++- public/app/main/apps/openchannel/i18n/tr.json | 35 ++++++- public/app/main/apps/openchannel/i18n/zh-CN.json | 35 ++++++- public/app/main/apps/openchannel/i18n/zh-TW.json | 35 ++++++- public/app/main/apps/settings/i18n/da.json | 31 +++++- public/app/main/apps/settings/i18n/de.json | 31 +++++- public/app/main/apps/settings/i18n/en.json | 6 +- public/app/main/apps/settings/i18n/es.json | 31 +++++- public/app/main/apps/settings/i18n/fa.json | 31 +++++- public/app/main/apps/settings/i18n/fi.json | 31 +++++- public/app/main/apps/settings/i18n/fr.json | 31 +++++- public/app/main/apps/settings/i18n/hi.json | 31 +++++- public/app/main/apps/settings/i18n/it.json | 6 +- public/app/main/apps/settings/i18n/ja.json | 31 +++++- public/app/main/apps/settings/i18n/ko.json | 31 +++++- public/app/main/apps/settings/i18n/nl.json | 31 +++++- public/app/main/apps/settings/i18n/no.json | 31 +++++- public/app/main/apps/settings/i18n/pt-PT.json | 31 +++++- public/app/main/apps/settings/i18n/ru.json | 31 +++++- public/app/main/apps/settings/i18n/sv.json | 31 +++++- public/app/main/apps/settings/i18n/tr.json | 31 +++++- public/app/main/apps/settings/i18n/zh-CN.json | 31 +++++- public/app/main/apps/settings/i18n/zh-TW.json | 31 +++++- public/app/main/apps/sms/i18n/da.json | 8 ++- public/app/main/apps/sms/i18n/de.json | 8 ++- public/app/main/apps/sms/i18n/en.json | 2 +- public/app/main/apps/sms/i18n/es.json | 8 ++- public/app/main/apps/sms/i18n/fa.json | 8 ++- public/app/main/apps/sms/i18n/fi.json | 8 ++- public/app/main/apps/sms/i18n/fr.json | 8 ++- public/app/main/apps/sms/i18n/hi.json | 8 ++- public/app/main/apps/sms/i18n/it.json | 2 +- public/app/main/apps/sms/i18n/ja.json | 8 ++- public/app/main/apps/sms/i18n/ko.json | 8 ++- public/app/main/apps/sms/i18n/nl.json | 8 ++- public/app/main/apps/sms/i18n/no.json | 8 ++- public/app/main/apps/sms/i18n/pt-PT.json | 8 ++- public/app/main/apps/sms/i18n/ru.json | 8 ++- public/app/main/apps/sms/i18n/sv.json | 8 ++- public/app/main/apps/sms/i18n/tr.json | 8 ++- public/app/main/apps/sms/i18n/zh-CN.json | 8 ++- public/app/main/apps/sms/i18n/zh-TW.json | 8 ++- public/app/main/apps/staff/i18n/da.json | 14 ++- public/app/main/apps/staff/i18n/de.json | 14 ++- public/app/main/apps/staff/i18n/en.json | 11 ++- public/app/main/apps/staff/i18n/es.json | 14 ++- public/app/main/apps/staff/i18n/fa.json | 14 ++- public/app/main/apps/staff/i18n/fi.json | 14 ++- public/app/main/apps/staff/i18n/fr.json | 14 ++- public/app/main/apps/staff/i18n/hi.json | 14 ++- public/app/main/apps/staff/i18n/it.json | 10 ++- public/app/main/apps/staff/i18n/ja.json | 14 ++- public/app/main/apps/staff/i18n/ko.json | 14 ++- public/app/main/apps/staff/i18n/nl.json | 14 ++- public/app/main/apps/staff/i18n/no.json | 14 ++- public/app/main/apps/staff/i18n/pt-PT.json | 14 ++- public/app/main/apps/staff/i18n/ru.json | 14 ++- public/app/main/apps/staff/i18n/sv.json | 14 ++- public/app/main/apps/staff/i18n/tr.json | 14 ++- public/app/main/apps/staff/i18n/zh-CN.json | 14 ++- public/app/main/apps/staff/i18n/zh-TW.json | 14 ++- public/app/main/apps/tools/i18n/da.json | 9 ++- public/app/main/apps/tools/i18n/de.json | 9 ++- public/app/main/apps/tools/i18n/en.json | 2 +- public/app/main/apps/tools/i18n/es.json | 9 ++- public/app/main/apps/tools/i18n/fa.json | 9 ++- public/app/main/apps/tools/i18n/fi.json | 9 ++- public/app/main/apps/tools/i18n/fr.json | 9 ++- public/app/main/apps/tools/i18n/hi.json | 9 ++- public/app/main/apps/tools/i18n/it.json | 2 +- public/app/main/apps/tools/i18n/ja.json | 9 ++- public/app/main/apps/tools/i18n/ko.json | 9 ++- public/app/main/apps/tools/i18n/nl.json | 9 ++- public/app/main/apps/tools/i18n/no.json | 9 ++- public/app/main/apps/tools/i18n/pt-PT.json | 9 ++- public/app/main/apps/tools/i18n/ru.json | 9 ++- public/app/main/apps/tools/i18n/sv.json | 9 ++- public/app/main/apps/tools/i18n/tr.json | 9 ++- public/app/main/apps/tools/i18n/zh-CN.json | 9 ++- public/app/main/apps/tools/i18n/zh-TW.json | 9 ++- public/app/main/apps/voice/i18n/da.json | 28 +++++- public/app/main/apps/voice/i18n/de.json | 28 +++++- public/app/main/apps/voice/i18n/en.json | 21 +++- public/app/main/apps/voice/i18n/es.json | 28 +++++- public/app/main/apps/voice/i18n/fa.json | 28 +++++- public/app/main/apps/voice/i18n/fi.json | 28 +++++- public/app/main/apps/voice/i18n/fr.json | 28 +++++- public/app/main/apps/voice/i18n/hi.json | 28 +++++- public/app/main/apps/voice/i18n/it.json | 22 ++++- public/app/main/apps/voice/i18n/ja.json | 28 +++++- public/app/main/apps/voice/i18n/ko.json | 28 +++++- public/app/main/apps/voice/i18n/nl.json | 28 +++++- public/app/main/apps/voice/i18n/no.json | 28 +++++- public/app/main/apps/voice/i18n/pt-PT.json | 28 +++++- public/app/main/apps/voice/i18n/ru.json | 28 +++++- public/app/main/apps/voice/i18n/sv.json | 28 +++++- public/app/main/apps/voice/i18n/tr.json | 28 +++++- public/app/main/apps/voice/i18n/zh-CN.json | 28 +++++- public/app/main/apps/voice/i18n/zh-TW.json | 28 +++++- public/app/quick-panel/i18n/da.json | 5 +- public/app/quick-panel/i18n/de.json | 5 +- public/app/quick-panel/i18n/es.json | 5 +- public/app/quick-panel/i18n/fa.json | 5 +- public/app/quick-panel/i18n/fi.json | 5 +- public/app/quick-panel/i18n/fr.json | 5 +- public/app/quick-panel/i18n/hi.json | 5 +- public/app/quick-panel/i18n/it.json | 3 +- public/app/quick-panel/i18n/ja.json | 5 +- public/app/quick-panel/i18n/ko.json | 5 +- public/app/quick-panel/i18n/nl.json | 5 +- public/app/quick-panel/i18n/no.json | 5 +- public/app/quick-panel/i18n/pt-PT.json | 5 +- public/app/quick-panel/i18n/ru.json | 5 +- public/app/quick-panel/i18n/sv.json | 5 +- public/app/quick-panel/i18n/tr.json | 5 +- public/app/quick-panel/i18n/zh-CN.json | 5 +- public/app/quick-panel/i18n/zh-TW.json | 5 +- public/app/toolbar/i18n/da.json | 8 ++- public/app/toolbar/i18n/de.json | 8 ++- public/app/toolbar/i18n/es.json | 8 ++- public/app/toolbar/i18n/fa.json | 8 ++- public/app/toolbar/i18n/fi.json | 8 ++- public/app/toolbar/i18n/fr.json | 8 ++- public/app/toolbar/i18n/hi.json | 8 ++- public/app/toolbar/i18n/it.json | 5 +- public/app/toolbar/i18n/ja.json | 8 ++- public/app/toolbar/i18n/ko.json | 8 ++- public/app/toolbar/i18n/nl.json | 8 ++- public/app/toolbar/i18n/no.json | 8 ++- public/app/toolbar/i18n/pt-PT.json | 8 ++- public/app/toolbar/i18n/ru.json | 8 ++- public/app/toolbar/i18n/sv.json | 8 ++- public/app/toolbar/i18n/tr.json | 8 ++- public/app/toolbar/i18n/zh-CN.json | 8 ++- public/app/toolbar/i18n/zh-TW.json | 8 ++- public/assets/images/avatars/customer.png | Bin 0 -> 3439 bytes public/assets/images/avatars/robot.png | Bin 0 -> 3252 bytes public/assets/images/business/chatWebsites.jpg | Bin 0 -> 9537 bytes public/assets/images/business/deskAccounts.jpg | Bin 0 -> 4699 bytes public/assets/images/business/zohoAccounts.jpg | Bin 0 -> 3719 bytes .../images/ng-emoji-picker/IconsetSmiles.png | Bin 0 -> 6975 bytes .../images/ng-emoji-picker/IconsetSmiles_1x.png | Bin 0 -> 3283 bytes public/assets/images/ng-emoji-picker/IconsetW.png | Bin 0 -> 26483 bytes .../assets/images/ng-emoji-picker/IconsetW_1x.png | Bin 0 -> 12961 bytes public/assets/images/ng-emoji-picker/blank.gif | Bin 0 -> 49 bytes .../images/ng-emoji-picker/emoji_spritesheet_0.png | Bin 0 -> 739663 bytes .../images/ng-emoji-picker/emoji_spritesheet_1.png | Bin 0 -> 543573 bytes .../images/ng-emoji-picker/emoji_spritesheet_2.png | Bin 0 -> 978984 bytes .../images/ng-emoji-picker/emoji_spritesheet_3.png | Bin 0 -> 411864 bytes .../images/ng-emoji-picker/emoji_spritesheet_4.png | Bin 0 -> 544234 bytes public/assets/images/patterns/drop-grey.png | Bin 0 -> 36436 bytes public/assets/images/patterns/drop.png | Bin 0 -> 36893 bytes public/assets/images/patterns/rain-grey.png | Bin 0 -> 17096 bytes public/assets/images/patterns/rain.png | Bin 0 -> 29179 bytes public/index.html | 8 +- public/scripts/app.31d35d79.js | 1 - public/scripts/app.ad79fb78.js | 1 + public/scripts/vendor.a1abc77c.js | 1 + public/scripts/vendor.b0294087.js | 1 - public/styles/app.ecb6dd68.css | 1 + public/styles/app.f143090e.css | 1 - public/styles/vendor.949debff.css | 10 ++ public/styles/vendor.bef8c8e4.css | 10 -- 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/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 +- .../chatDisposition/chatDisposition.attributes.js | 2 +- .../chatDisposition/chatDisposition.controller.js | 2 +- .../api/chatDisposition/chatDisposition.model.js | 2 +- server/api/chatDisposition/chatDisposition.rpc.js | 2 +- server/api/chatDisposition/index.js | 2 +- server/api/chatEnquiry/chatEnquiry.attributes.js | 2 +- server/api/chatEnquiry/chatEnquiry.controller.js | 2 +- server/api/chatEnquiry/chatEnquiry.model.js | 2 +- server/api/chatEnquiry/chatEnquiry.rpc.js | 2 +- server/api/chatEnquiry/index.js | 2 +- .../chatInteraction/chatInteraction.attributes.js | 2 +- .../chatInteraction/chatInteraction.controller.js | 2 +- .../api/chatInteraction/chatInteraction.model.js | 2 +- server/api/chatInteraction/chatInteraction.rpc.js | 2 +- server/api/chatInteraction/index.js | 2 +- server/api/chatMessage/chatMessage.attributes.js | 2 +- server/api/chatMessage/chatMessage.controller.js | 2 +- server/api/chatMessage/chatMessage.events.js | 1 + server/api/chatMessage/chatMessage.model.js | 2 +- server/api/chatMessage/chatMessage.rpc.js | 2 +- server/api/chatMessage/chatMessage.socket.js | 1 + server/api/chatMessage/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.model.js | 2 +- server/api/chatQueue/chatQueue.rpc.js | 2 +- server/api/chatQueue/index.js | 2 +- server/api/chatReport/chatReport.attributes.js | 2 +- server/api/chatReport/chatReport.controller.js | 2 +- server/api/chatReport/chatReport.model.js | 2 +- server/api/chatReport/chatReport.rpc.js | 2 +- server/api/chatReport/index.js | 2 +- .../chatSessionReport.attributes.js | 2 +- .../chatSessionReport.controller.js | 2 +- .../chatSessionReport/chatSessionReport.model.js | 2 +- .../api/chatSessionReport/chatSessionReport.rpc.js | 2 +- server/api/chatSessionReport/index.js | 2 +- server/api/chatVisitor/chatVisitor.attributes.js | 2 +- server/api/chatVisitor/chatVisitor.controller.js | 2 +- server/api/chatVisitor/chatVisitor.model.js | 2 +- server/api/chatVisitor/chatVisitor.rpc.js | 2 +- server/api/chatVisitor/index.js | 2 +- server/api/chatWebsite/chatWebsite.attributes.js | 2 +- server/api/chatWebsite/chatWebsite.controller.js | 2 +- server/api/chatWebsite/chatWebsite.model.js | 2 +- server/api/chatWebsite/chatWebsite.rpc.js | 2 +- server/api/chatWebsite/index.js | 2 +- .../chatWebsiteField.attributes.js | 2 +- .../chatWebsiteField.controller.js | 2 +- .../api/chatWebsiteField/chatWebsiteField.model.js | 2 +- .../api/chatWebsiteField/chatWebsiteField.rpc.js | 2 +- server/api/chatWebsiteField/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.model.js | 2 +- server/api/cmContact/cmContact.rpc.js | 2 +- server/api/cmContact/index.js | 2 +- .../api/cmCustomField/cmCustomField.attributes.js | 2 +- .../api/cmCustomField/cmCustomField.controller.js | 2 +- server/api/cmCustomField/cmCustomField.model.js | 2 +- server/api/cmCustomField/cmCustomField.rpc.js | 2 +- server/api/cmCustomField/index.js | 2 +- server/api/cmHopper/cmHopper.attributes.js | 2 +- server/api/cmHopper/cmHopper.controller.js | 2 +- server/api/cmHopper/cmHopper.model.js | 2 +- server/api/cmHopper/cmHopper.rpc.js | 2 +- server/api/cmHopper/index.js | 2 +- .../api/cmHopperBlack/cmHopperBlack.attributes.js | 2 +- .../api/cmHopperBlack/cmHopperBlack.controller.js | 2 +- server/api/cmHopperBlack/cmHopperBlack.model.js | 2 +- server/api/cmHopperBlack/cmHopperBlack.rpc.js | 2 +- server/api/cmHopperBlack/index.js | 2 +- .../api/cmHopperFinal/cmHopperFinal.attributes.js | 2 +- .../api/cmHopperFinal/cmHopperFinal.controller.js | 2 +- server/api/cmHopperFinal/cmHopperFinal.model.js | 2 +- server/api/cmHopperFinal/cmHopperFinal.rpc.js | 2 +- server/api/cmHopperFinal/index.js | 2 +- .../cmHopperHistory/cmHopperHistory.attributes.js | 2 +- .../cmHopperHistory/cmHopperHistory.controller.js | 2 +- .../api/cmHopperHistory/cmHopperHistory.model.js | 2 +- server/api/cmHopperHistory/cmHopperHistory.rpc.js | 2 +- server/api/cmHopperHistory/index.js | 2 +- server/api/cmList/cmList.attributes.js | 2 +- server/api/cmList/cmList.controller.js | 2 +- server/api/cmList/cmList.model.js | 2 +- server/api/cmList/cmList.rpc.js | 2 +- server/api/cmList/index.js | 2 +- server/api/condition/condition.attributes.js | 2 +- server/api/condition/condition.controller.js | 2 +- server/api/condition/condition.model.js | 2 +- server/api/condition/condition.rpc.js | 2 +- server/api/condition/index.js | 2 +- server/api/dashboard/dashboard.attributes.js | 2 +- server/api/dashboard/dashboard.controller.js | 2 +- server/api/dashboard/dashboard.model.js | 2 +- server/api/dashboard/dashboard.rpc.js | 2 +- server/api/dashboard/index.js | 2 +- .../api/dashboardItem/dashboardItem.attributes.js | 2 +- .../api/dashboardItem/dashboardItem.controller.js | 2 +- server/api/dashboardItem/dashboardItem.model.js | 2 +- server/api/dashboardItem/dashboardItem.rpc.js | 2 +- server/api/dashboardItem/index.js | 2 +- server/api/faxAccount/faxAccount.attributes.js | 2 +- server/api/faxAccount/faxAccount.controller.js | 2 +- server/api/faxAccount/faxAccount.model.js | 2 +- server/api/faxAccount/faxAccount.rpc.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 +- .../api/faxAttachment/faxAttachment.attributes.js | 2 +- .../api/faxAttachment/faxAttachment.controller.js | 2 +- server/api/faxAttachment/faxAttachment.model.js | 2 +- server/api/faxAttachment/faxAttachment.rpc.js | 2 +- server/api/faxAttachment/index.js | 2 +- .../faxDisposition/faxDisposition.attributes.js | 2 +- .../faxDisposition/faxDisposition.controller.js | 2 +- server/api/faxDisposition/faxDisposition.model.js | 2 +- server/api/faxDisposition/faxDisposition.rpc.js | 2 +- server/api/faxDisposition/index.js | 2 +- .../faxInteraction/faxInteraction.attributes.js | 2 +- .../faxInteraction/faxInteraction.controller.js | 2 +- server/api/faxInteraction/faxInteraction.model.js | 2 +- server/api/faxInteraction/faxInteraction.rpc.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.model.js | 2 +- server/api/faxMessage/faxMessage.rpc.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.model.js | 2 +- server/api/faxQueue/faxQueue.rpc.js | 2 +- server/api/faxQueue/index.js | 2 +- server/api/faxReport/faxReport.attributes.js | 2 +- server/api/faxReport/faxReport.controller.js | 2 +- server/api/faxReport/faxReport.model.js | 2 +- server/api/faxReport/faxReport.rpc.js | 2 +- server/api/faxReport/index.js | 2 +- .../faxSessionReport.attributes.js | 2 +- .../faxSessionReport.controller.js | 2 +- .../api/faxSessionReport/faxSessionReport.model.js | 2 +- .../api/faxSessionReport/faxSessionReport.rpc.js | 2 +- server/api/faxSessionReport/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/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/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/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/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.model.js | 2 +- server/api/mailAccount/mailAccount.rpc.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/mailAttachment/index.js | 2 +- .../mailAttachment/mailAttachment.attributes.js | 2 +- .../mailAttachment/mailAttachment.controller.js | 2 +- server/api/mailAttachment/mailAttachment.model.js | 2 +- server/api/mailAttachment/mailAttachment.rpc.js | 2 +- server/api/mailDisposition/index.js | 2 +- .../mailDisposition/mailDisposition.attributes.js | 2 +- .../mailDisposition/mailDisposition.controller.js | 2 +- .../api/mailDisposition/mailDisposition.model.js | 2 +- server/api/mailDisposition/mailDisposition.rpc.js | 2 +- server/api/mailInteraction/index.js | 2 +- .../mailInteraction/mailInteraction.attributes.js | 2 +- .../mailInteraction/mailInteraction.controller.js | 2 +- .../api/mailInteraction/mailInteraction.model.js | 2 +- server/api/mailInteraction/mailInteraction.rpc.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.model.js | 2 +- server/api/mailMessage/mailMessage.rpc.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.model.js | 2 +- server/api/mailQueue/mailQueue.rpc.js | 2 +- server/api/mailReport/index.js | 2 +- server/api/mailReport/mailReport.attributes.js | 2 +- server/api/mailReport/mailReport.controller.js | 2 +- server/api/mailReport/mailReport.model.js | 2 +- server/api/mailReport/mailReport.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/mailSessionReport/index.js | 2 +- .../mailSessionReport.attributes.js | 2 +- .../mailSessionReport.controller.js | 2 +- .../mailSessionReport/mailSessionReport.model.js | 2 +- .../api/mailSessionReport/mailSessionReport.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/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/openchannelAccount.model.js | 2 +- .../openchannelAccount/openchannelAccount.rpc.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/openchannelDisposition/index.js | 2 +- .../openchannelDisposition.attributes.js | 2 +- .../openchannelDisposition.controller.js | 2 +- .../openchannelDisposition.model.js | 2 +- .../openchannelDisposition.rpc.js | 2 +- server/api/openchannelInteraction/index.js | 2 +- .../openchannelInteraction.attributes.js | 2 +- .../openchannelInteraction.controller.js | 2 +- .../openchannelInteraction.model.js | 2 +- .../openchannelInteraction.rpc.js | 2 +- server/api/openchannelMessage/index.js | 2 +- .../openchannelMessage.attributes.js | 2 +- .../openchannelMessage.controller.js | 2 +- .../openchannelMessage.events.js | 1 + .../openchannelMessage/openchannelMessage.model.js | 2 +- .../openchannelMessage/openchannelMessage.rpc.js | 2 +- .../openchannelMessage.socket.js | 1 + server/api/openchannelQueue/index.js | 2 +- .../openchannelQueue.attributes.js | 2 +- .../openchannelQueue.controller.js | 2 +- .../api/openchannelQueue/openchannelQueue.model.js | 2 +- .../api/openchannelQueue/openchannelQueue.rpc.js | 2 +- server/api/openchannelReport/index.js | 2 +- .../openchannelReport.attributes.js | 2 +- .../openchannelReport.controller.js | 2 +- .../openchannelReport/openchannelReport.model.js | 2 +- .../api/openchannelReport/openchannelReport.rpc.js | 2 +- server/api/openchannelSessionReport/index.js | 2 +- .../openchannelSessionReport.attributes.js | 2 +- .../openchannelSessionReport.controller.js | 2 +- .../openchannelSessionReport.model.js | 2 +- .../openchannelSessionReport.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/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/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.model.js | 2 +- server/api/smsAccount/smsAccount.rpc.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/smsDisposition/index.js | 2 +- .../smsDisposition/smsDisposition.attributes.js | 2 +- .../smsDisposition/smsDisposition.controller.js | 2 +- server/api/smsDisposition/smsDisposition.model.js | 2 +- server/api/smsDisposition/smsDisposition.rpc.js | 2 +- server/api/smsInteraction/index.js | 2 +- .../smsInteraction/smsInteraction.attributes.js | 2 +- .../smsInteraction/smsInteraction.controller.js | 2 +- server/api/smsInteraction/smsInteraction.model.js | 2 +- server/api/smsInteraction/smsInteraction.rpc.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.model.js | 2 +- server/api/smsMessage/smsMessage.rpc.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.model.js | 2 +- server/api/smsQueue/smsQueue.rpc.js | 2 +- server/api/smsReport/index.js | 2 +- server/api/smsReport/smsReport.attributes.js | 2 +- server/api/smsReport/smsReport.controller.js | 2 +- server/api/smsReport/smsReport.model.js | 2 +- server/api/smsReport/smsReport.rpc.js | 2 +- server/api/smsSessionReport/index.js | 2 +- .../smsSessionReport.attributes.js | 2 +- .../smsSessionReport.controller.js | 2 +- .../api/smsSessionReport/smsSessionReport.model.js | 2 +- .../api/smsSessionReport/smsSessionReport.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/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.model.js | 2 +- server/api/squareProject/squareProject.rpc.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.model.js | 2 +- server/api/team/team.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/userOpenchannelQueue/index.js | 2 +- .../userOpenchannelQueue.attributes.js | 2 +- .../userOpenchannelQueue.model.js | 2 +- .../userOpenchannelQueue.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/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/voiceDisposition/index.js | 2 +- .../voiceDisposition.attributes.js | 2 +- .../voiceDisposition.controller.js | 2 +- .../api/voiceDisposition/voiceDisposition.model.js | 2 +- .../api/voiceDisposition/voiceDisposition.rpc.js | 2 +- server/api/voiceExtension/index.js | 2 +- .../voiceExtension/voiceExtension.attributes.js | 2 +- .../voiceExtension/voiceExtension.controller.js | 2 +- server/api/voiceExtension/voiceExtension.model.js | 2 +- server/api/voiceExtension/voiceExtension.rpc.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/voiceQueue/index.js | 2 +- server/api/voiceQueue/voiceQueue.attributes.js | 2 +- server/api/voiceQueue/voiceQueue.controller.js | 2 +- server/api/voiceQueue/voiceQueue.model.js | 2 +- server/api/voiceQueue/voiceQueue.rpc.js | 2 +- server/api/voiceQueueReport/index.js | 2 +- .../voiceQueueReport.attributes.js | 2 +- .../voiceQueueReport.controller.js | 2 +- .../api/voiceQueueReport/voiceQueueReport.model.js | 2 +- .../api/voiceQueueReport/voiceQueueReport.rpc.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/app.js | 2 +- server/components/auth/service.js | 2 +- server/components/dashboards/run.js | 2 +- server/components/export/csv.js | 2 +- server/components/export/pdf.js | 2 +- server/components/export/xls.js | 2 +- server/components/extensions/rewrite.js | 2 +- server/components/integrations/configuration.js | 2 +- server/components/license/service.js | 2 +- server/components/parsers/qs.js | 2 +- server/config/environment/development.js | 2 +- server/config/environment/index.js | 2 +- server/config/environment/shared.js | 2 +- 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/index.js | 2 +- server/config/seed.js | 2 +- server/config/seedContact.js | 2 +- server/config/seedDB/analyticReports.js | 2 +- server/config/seedDB/analyticTreeReports.js | 2 +- server/config/seedDB/chanspy.js | 2 +- server/config/seedDB/companies.js | 2 +- server/config/seedDB/contacts.js | 2 +- server/config/seedDB/index.js | 2 +- server/config/seedDB/intervals.js | 2 +- server/config/seedDB/jscriptyProjects.js | 2 +- server/config/seedDB/lists.js | 2 +- server/config/seedDB/mailAccounts.js | 2 +- server/config/seedDB/pauses.js | 2 +- server/config/seedDB/report/default.js | 2 +- server/config/seedDB/report/fields.js | 2 +- server/config/seedDB/report/index.js | 2 +- server/config/seedDB/sounds.js | 1 + server/config/seedDB/squareOdbc.js | 2 +- server/config/seedDB/squareProjects.js | 2 +- server/config/seedDB/tags.js | 2 +- server/config/seedDB/teams.js | 2 +- server/config/seedDB/tree/index.js | 2 +- server/config/seedDB/trunks.js | 2 +- server/config/seedDB/users.js | 2 +- server/config/seedDB/variables.js | 2 +- server/config/seedDB/voiceContexts.js | 2 +- server/config/seedDB/voiceExtensions.js | 2 +- server/config/seedDB/voiceMusicOnHold.js | 2 +- server/config/seedDB/voiceQueues.js | 2 +- server/config/seedUsers.js | 2 +- server/config/socketio.js | 2 +- server/config/utils.js | 2 +- server/errors/index.js | 2 +- server/files/chat/iframe.js | 2 +- server/files/reports/Activities Summary-ZuAO.csv | 5 - server/files/reports/Activities Summary-wTA7.csv | 5 - server/files/reports/Details-WTXa.csv | 112 -------------------- server/files/sounds/converted/order-elaborated.wav | Bin 0 -> 82990 bytes server/files/sounds/converted/order-number.wav | Bin 0 -> 89494 bytes server/files/sounds/converted/order-shipped.wav | Bin 0 -> 26376 bytes server/files/sounds/converted/rate-call.wav | Bin 0 -> 119216 bytes server/files/sounds/converted/thanx.wav | Bin 0 -> 26070 bytes server/files/sounds/converted/welcome-acme.wav | Bin 0 -> 126280 bytes server/files/sounds/original/order-elaborated.wav | Bin 0 -> 82990 bytes server/files/sounds/original/order-number.wav | Bin 0 -> 89494 bytes server/files/sounds/original/order-shipped.wav | Bin 0 -> 26376 bytes server/files/sounds/original/rate-call.wav | Bin 0 -> 119216 bytes server/files/sounds/original/thanx.wav | Bin 0 -> 26070 bytes server/files/sounds/original/welcome-acme.wav | Bin 0 -> 126280 bytes server/files/templates/trunk.ejs | 4 + server/migrations/2.0.12.js | 2 +- server/migrations/2.0.13.js | 2 +- server/migrations/2.0.20.js | 2 +- server/migrations/2.0.21.js | 2 +- server/migrations/2.0.22.js | 2 +- server/migrations/2.0.23.js | 2 +- server/migrations/2.0.24.js | 2 +- server/migrations/2.0.25.js | 2 +- server/migrations/2.0.26.js | 2 +- server/migrations/2.0.29.js | 1 + 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/index.js | 2 +- server/services/agi/server.js | 2 +- server/services/agi/vertices.js | 2 +- server/services/ami/acw/index.js | 2 +- server/services/ami/ami.js | 2 +- server/services/ami/client.js | 2 +- server/services/ami/dialer/action.js | 2 +- server/services/ami/dialer/agentComplete.js | 2 +- server/services/ami/dialer/final.js | 2 +- server/services/ami/dialer/hangup.js | 2 +- server/services/ami/dialer/history.js | 2 +- server/services/ami/dialer/index.js | 2 +- server/services/ami/dialer/queueCallerAbandon.js | 2 +- server/services/ami/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/freshdeskAccount.js | 2 +- server/services/ami/model/queueReport.js | 2 +- server/services/ami/model/salesforceAccount.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/trunk.js | 2 +- server/services/ami/model/voiceQueue.js | 2 +- server/services/ami/model/voiceTrigger.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/db.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/campaign.js | 2 +- server/services/ami/rpc/cmHopper.js | 2 +- server/services/ami/rpc/cmHopperBlack.js | 2 +- server/services/ami/rpc/cmHopperFinal.js | 2 +- server/services/ami/rpc/cmHopperHistory.js | 2 +- server/services/ami/rpc/integrations/desk.js | 2 +- server/services/ami/rpc/integrations/freshdesk.js | 2 +- server/services/ami/rpc/integrations/salesforce.js | 2 +- server/services/ami/rpc/integrations/sugarcrm.js | 2 +- server/services/ami/rpc/integrations/zendesk.js | 2 +- server/services/ami/rpc/integrations/zoho.js | 2 +- server/services/ami/rpc/memberReport.js | 2 +- server/services/ami/rpc/template.js | 2 +- server/services/ami/rpc/trigger.js | 2 +- server/services/ami/rpc/trunk.js | 2 +- server/services/ami/rpc/user.js | 2 +- server/services/ami/rpc/voiceAgentReport.js | 2 +- server/services/ami/rpc/voiceCallReport.js | 2 +- server/services/ami/rpc/voiceDialReport.js | 2 +- server/services/ami/rpc/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/index.js | 2 +- server/services/ami/trigger/integration/desk.js | 2 +- .../services/ami/trigger/integration/freshdesk.js | 2 +- server/services/ami/trigger/integration/index.js | 2 +- .../services/ami/trigger/integration/salesforce.js | 2 +- .../services/ami/trigger/integration/sugarcrm.js | 2 +- server/services/ami/trigger/integration/util.js | 2 +- server/services/ami/trigger/integration/zendesk.js | 2 +- server/services/ami/trigger/integration/zoho.js | 2 +- server/services/ami/trigger/urlforward/index.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/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/model/agent.js | 2 +- server/services/routing/model/chatQueue.js | 2 +- server/services/routing/model/interval.js | 1 + server/services/routing/model/openchannelQueue.js | 2 +- server/services/routing/realtime/index.js | 2 +- server/services/routing/rpc/chatInteraction.js | 1 + server/services/routing/rpc/chatQueue.js | 2 +- server/services/routing/rpc/interval.js | 1 + .../services/routing/rpc/openchannelInteraction.js | 1 + server/services/routing/rpc/openchannelQueue.js | 2 +- server/services/routing/rpc/user.js | 2 +- .../services/routing/server/applications/agent.js | 2 +- .../services/routing/server/applications/close.js | 1 + .../services/routing/server/applications/gotoif.js | 2 +- .../services/routing/server/applications/gotop.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 +- server/services/routing/server/index.js | 2 +- server/services/routing/server/interval.js | 2 +- 1273 files changed, 6078 insertions(+), 1673 deletions(-) create mode 100644 public/assets/images/avatars/customer.png create mode 100644 public/assets/images/avatars/robot.png create mode 100644 public/assets/images/business/chatWebsites.jpg create mode 100644 public/assets/images/business/deskAccounts.jpg create mode 100644 public/assets/images/business/zohoAccounts.jpg create mode 100644 public/assets/images/ng-emoji-picker/IconsetSmiles.png create mode 100644 public/assets/images/ng-emoji-picker/IconsetSmiles_1x.png create mode 100644 public/assets/images/ng-emoji-picker/IconsetW.png create mode 100644 public/assets/images/ng-emoji-picker/IconsetW_1x.png create mode 100644 public/assets/images/ng-emoji-picker/blank.gif create mode 100644 public/assets/images/ng-emoji-picker/emoji_spritesheet_0.png create mode 100644 public/assets/images/ng-emoji-picker/emoji_spritesheet_1.png create mode 100644 public/assets/images/ng-emoji-picker/emoji_spritesheet_2.png create mode 100644 public/assets/images/ng-emoji-picker/emoji_spritesheet_3.png create mode 100644 public/assets/images/ng-emoji-picker/emoji_spritesheet_4.png create mode 100644 public/assets/images/patterns/drop-grey.png create mode 100644 public/assets/images/patterns/drop.png create mode 100644 public/assets/images/patterns/rain-grey.png create mode 100644 public/assets/images/patterns/rain.png delete mode 100644 public/scripts/app.31d35d79.js create mode 100644 public/scripts/app.ad79fb78.js create mode 100644 public/scripts/vendor.a1abc77c.js delete mode 100644 public/scripts/vendor.b0294087.js create mode 100644 public/styles/app.ecb6dd68.css delete mode 100644 public/styles/app.f143090e.css create mode 100644 public/styles/vendor.949debff.css delete mode 100644 public/styles/vendor.bef8c8e4.css create mode 100644 server/api/chatMessage/chatMessage.events.js create mode 100644 server/api/chatMessage/chatMessage.socket.js create mode 100644 server/api/openchannelMessage/openchannelMessage.events.js create mode 100644 server/api/openchannelMessage/openchannelMessage.socket.js create mode 100644 server/config/seedDB/sounds.js delete mode 100644 server/files/reports/Activities Summary-ZuAO.csv delete mode 100644 server/files/reports/Activities Summary-wTA7.csv delete mode 100644 server/files/reports/Details-WTXa.csv create mode 100644 server/files/sounds/converted/order-elaborated.wav create mode 100644 server/files/sounds/converted/order-number.wav create mode 100644 server/files/sounds/converted/order-shipped.wav create mode 100644 server/files/sounds/converted/rate-call.wav create mode 100644 server/files/sounds/converted/thanx.wav create mode 100644 server/files/sounds/converted/welcome-acme.wav create mode 100644 server/files/sounds/original/order-elaborated.wav create mode 100644 server/files/sounds/original/order-number.wav create mode 100644 server/files/sounds/original/order-shipped.wav create mode 100644 server/files/sounds/original/rate-call.wav create mode 100644 server/files/sounds/original/thanx.wav create mode 100644 server/files/sounds/original/welcome-acme.wav create mode 100644 server/migrations/2.0.29.js create mode 100644 server/services/routing/model/interval.js create mode 100644 server/services/routing/rpc/chatInteraction.js create mode 100644 server/services/routing/rpc/interval.js create mode 100644 server/services/routing/rpc/openchannelInteraction.js create mode 100644 server/services/routing/server/applications/close.js diff --git a/apidoc/api_data.js b/apidoc/api_data.js index d3995f2..a9507af 100644 --- a/apidoc/api_data.js +++ b/apidoc/api_data.js @@ -1 +1 @@ -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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/custom_reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/custom_reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/custom_reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/custom_reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/custom_reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/default_reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/default_reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/default_reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/default_reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/default_reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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", "allowedValues": [ "\"csv\"", "\"pdf\"", "\"xls\"" ], "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/extracted_reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/extracted_reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/extracted_reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/extracted_reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/extracted_reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": false, "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": false, "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/field_reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/field_reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/field_reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/field_reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/field_reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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 -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addFields", "group": "Analytic_Field_Reports", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/metrics?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/metrics?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/metrics?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/metrics?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/metrics?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/tree_reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/tree_reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/tree_reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/tree_reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/tree_reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/analyticTreeReport/index.js", "groupTitle": "Analytic_Tree_Reports" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/authGoogle/index.js", "groupTitle": "Authentication" }, { "type": "post", "url": "/api/auth/local", "title": "Creates a new User token", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/auth/local -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST", "type": "json" } ], "name": "Local_login", "group": "Authentication", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "password", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/authLocal/index.js", "groupTitle": "Authentication" }, { "type": "post", "url": "/api/automations", "title": "Creates a new Automation", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/automations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateAutomations", "group": "Automations", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "channel", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/automations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/automations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/automations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/automations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/automations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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\": \"john.doe@xcally.com\", \"...\": \"...\"}]' \\ \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": "

Allowed values: contactManager, integration, motionbar, jscripty, urlForward, browser

" }, { "group": "Body", "type": "String", "optional": true, "field": "data1", "description": "

contactManager[ListId], integration[intName(zendesk)], motionbar[Popup(0),URL(1),WinApp(2)], urlForward[GET,POST], browser[TemplateId(0),URL(1)]

" }, { "group": "Body", "type": "String", "optional": true, "field": "data2", "description": "

integration[AccountId], motionbar[TemplateId,URL,WinAppPath], urlForward[URL]

" }, { "group": "Body", "type": "String", "optional": true, "field": "data3", "description": "

motionbar[NULL,NULL,WinAppArguments]

" }, { "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"john.doe@xcally.com\", \"...\": \"...\"}]' \\ \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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/automation/index.js", "groupTitle": "Automations" }, { "type": "post", "url": "/api/campaigns/{id}/blacklists", "title": "Add blacklists to a 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": "Campaigns", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "post", "url": "/api/campaigns/{id}/lists", "title": "Add lists to a 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": "Campaigns", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "post", "url": "/api/campaigns", "title": "Creates a new 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": "CreateCampaigns", "group": "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": "

Active/Disactive Campaign

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "limitCalls", "description": "

Max 200 calls.

" }, { "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": "

Originate Timeout Seconds (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialCongestionMaxRetry", "description": "

#Congestion Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialCongestionRetryFrequency", "description": "

Congestion Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialBusyMaxRetry", "description": "

#Busy Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialBusyRetryFrequency", "description": "

Busy Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialNoAnswerMaxRetry", "description": "

#NoAnswer Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialNoAnswerRetryFrequency", "description": "

NoAnswer Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialGlobalMaxRetry", "description": "

#Global Max Retry (min:1, max:999)

" }, { "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "delete", "url": "/api/campaigns/{id}", "title": "Deletes a Campaign", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/campaigns/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteCampaigns", "group": "Campaigns", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/blacklists", "title": "Get 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns", "title": "Gets a list of Campaigns", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/campaigns -v -u {name}:{password}", "type": "json" } ], "name": "GetCampaigns", "group": "Campaigns", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/campaigns?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/campaigns?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/campaigns?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/campaigns?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/campaigns?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/finals", "title": "Gets 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/hopper_histories", "title": "Gets 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/hoppers", "title": "Gets 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/lists", "title": "Get 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "delete", "url": "/api/campaigns/{id}/blacklists", "title": "Remove blacklists from a 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": "Campaigns", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "delete", "url": "/api/campaigns/{id}/lists", "title": "Remove lists from a 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": "Campaigns", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}", "title": "Gets a single Campaign", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/campaigns/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowCampaigns", "group": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/blacks", "title": "Gets 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "put", "url": "/api/campaigns/{id}", "title": "Update an existing 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": "updateCampaigns", "group": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "post", "url": "/api/canned_answers", "title": "Creates a new Canned Answer", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/canned_answers -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateCanned_Answers", "group": "Canned_Answers", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/canned_answers?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/canned_answers?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/canned_answers?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/canned_answers?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/canned_answers?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cannedAnswer/index.js", "groupTitle": "Canned_Answers" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatApplication/index.js", "groupTitle": "Chat_Applications" }, { "type": "post", "url": "/api/chat/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Chat_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatDisposition/index.js", "groupTitle": "Chat_Dispositions" }, { "type": "delete", "url": "/api/chat/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Chat_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatDisposition/index.js", "groupTitle": "Chat_Dispositions" }, { "type": "get", "url": "/api/chat/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Chat_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatDisposition/index.js", "groupTitle": "Chat_Dispositions" }, { "type": "put", "url": "/api/chat/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Chat_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatDisposition/index.js", "groupTitle": "Chat_Dispositions" }, { "type": "delete", "url": "/api/chat/enquiries/{id}", "title": "Deletes a Enquiry", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/enquiries/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteEnquiries", "group": "Chat_Enquiries", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatEnquiry/index.js", "groupTitle": "Chat_Enquiries" }, { "type": "get", "url": "/api/chat/enquiries/{id}", "title": "Gets a single Enquiry", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/enquiries/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowEnquiries", "group": "Chat_Enquiries", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatEnquiry/index.js", "groupTitle": "Chat_Enquiries" }, { "type": "put", "url": "/api/chat/enquiries/{id}", "title": "Update an existing Enquiry", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/enquiries/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateEnquiries", "group": "Chat_Enquiries", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatEnquiry/index.js", "groupTitle": "Chat_Enquiries" }, { "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": "String", "allowedValues": [ "\"internal\"", "\"external\"", "\"group\"" ], "optional": false, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "token", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"CLOSED\"", "\"ABANDON\"", "\"UNMANAGED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"good\"", "\"bad\"" ], "optional": true, "field": "rating", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "ratingMessage", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"agent\"", "\"requester\"" ], "optional": true, "field": "completeReason", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "ChatVisitorId", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "contact", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "website", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/interactions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/interactions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/interactions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/interactions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/interactions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "Blob", "optional": false, "field": "body", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"internal\"", "\"external\"", "\"group\"" ], "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatInteraction/index.js", "groupTitle": "Chat_Interactions" }, { "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": "Blob", "optional": false, "field": "body", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"internal\"", "\"external\"", "\"group\"" ], "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatMessage/index.js", "groupTitle": "Chat_Messages" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatProactiveAction/index.js", "groupTitle": "Chat_Proactive_Actions" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "lastAgent", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatQueue/index.js", "groupTitle": "Chat_Queues" }, { "type": "post", "url": "/api/chat/session/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "Chat_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "websitename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "websiteaddress", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "websiteid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitorid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitorname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitoremail", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "fidelity", "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": "completeAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "complete", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"agent\"", "\"requester\"" ], "optional": true, "field": "completeReason", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "abandon", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeslot", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "post", "url": "/api/chat/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "Chat_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "timeslot", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "websitename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "websiteaddress", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "websiteid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitorid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitorname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitoremail", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "calledAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "delete", "url": "/api/chat/session/reports/{id}", "title": "Deletes a Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "delete", "url": "/api/chat/reports/{id}", "title": "Deletes a Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "get", "url": "/api/chat/session/reports/describe", "title": "Gets table info about Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports/describe -v -u {name}:{password}", "type": "json" } ], "name": "DescribeReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "get", "url": "/api/chat/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Chat_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/chatReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "get", "url": "/api/chat/session/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Chat_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/session/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/session/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/session/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/session/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/session/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "get", "url": "/api/chat/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "get", "url": "/api/chat/session/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "put", "url": "/api/chat/reports/{id}", "title": "Update an existing Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "put", "url": "/api/chat/session/reports/{id}", "title": "Update an existing Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "delete", "url": "/api/chat/visitors/{id}", "title": "Deletes a Visitor", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/visitors/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteVisitors", "group": "Chat_Visitors", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatVisitor/index.js", "groupTitle": "Chat_Visitors" }, { "type": "get", "url": "/api/chat/visitors/{id}", "title": "Gets a single Visitor", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/visitors/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowVisitors", "group": "Chat_Visitors", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatVisitor/index.js", "groupTitle": "Chat_Visitors" }, { "type": "put", "url": "/api/chat/visitors/{id}", "title": "Update an existing Visitor", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/visitors/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateVisitors", "group": "Chat_Visitors", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatVisitor/index.js", "groupTitle": "Chat_Visitors" }, { "type": "delete", "url": "/api/chat/website_fields/{id}", "title": "Deletes a Website Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/website_fields/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteWebsite_Fields", "group": "Chat_Website_Fields", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsiteField/index.js", "groupTitle": "Chat_Website_Fields" }, { "type": "get", "url": "/api/chat/website_fields/{id}", "title": "Gets a single Website Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/website_fields/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowWebsite_Fields", "group": "Chat_Website_Fields", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsiteField/index.js", "groupTitle": "Chat_Website_Fields" }, { "type": "put", "url": "/api/chat/website_fields/{id}", "title": "Update an existing Website Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/website_fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateWebsite_Fields", "group": "Chat_Website_Fields", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsiteField/index.js", "groupTitle": "Chat_Website_Fields" }, { "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": "color", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "color_focus", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "color_button", "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": "online_message", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "username_placeholder", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "email_placeholder", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "start_chat_button", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "header_offline", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "offline_message", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "enquiry_message_placeholder", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "enquiry_button", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "download_transcript", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "enquiry_forwarding", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "enquiry_forwarding_address", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "enquiry_enable", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "rating_enable", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rating_message", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rating_send", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rating_skip", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "show_service_name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "service_name", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "fidelity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "agents_busy", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "name_title", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "email_title", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "message_title", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "logo", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "defaultLogo", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "whiteLabel", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "defaultWhiteLabel", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "acceptUrl", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectUrl", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closeUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "closeMethod", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "acceptMethod", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "rejectMethod", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "actions", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/websites?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/websites?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/websites?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/websites?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/websites?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatMessage/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": "String", "allowedValues": [ "\"queue\"", "\"agent\"", "\"sendMail\"", "\"sendSms\"" ], "optional": false, "field": "app", "description": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "priority", "description": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data1", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data2", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data3", "description": "" }, { "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": "Blob", "optional": true, "field": "data7", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data8", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data9", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data10", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"Satisfied\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDisposition", "group": "Chat_Websites", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsite/index.js", "groupTitle": "Chat_Websites" }, { "type": "post", "url": "/api/chat/websites/{id}/dispositions", "title": "Creates many dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/websites/{id}/dispositions -d '[{\"name\": \"Satisfied\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDispositions", "group": "Chat_Websites", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "allowedValues": [ "\"internal\"", "\"external\"", "\"group\"" ], "optional": false, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "token", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"CLOSED\"", "\"ABANDON\"", "\"UNMANAGED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"good\"", "\"bad\"" ], "optional": true, "field": "rating", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "ratingMessage", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"agent\"", "\"requester\"" ], "optional": true, "field": "completeReason", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "ChatVisitorId", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "contact", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "website", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsite/index.js", "groupTitle": "Chat_Websites" }, { "type": "post", "url": "/api/chat/websites/{id}/fields", "title": "Creates new Fields", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/websites/{id}/fields -d '[{\"name\": \"Satisfied\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addWebsiteFields", "group": "Chat_Websites", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "component", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "index", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "label", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "options", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "placeholder", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "required", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "validation", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "editable", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsite/index.js", "groupTitle": "Chat_Websites" }, { "type": "get", "url": "/api/chat/websites/{id}/dispositions", "title": "Gets Website 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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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 POST", "type": "json" } ], "name": "getWebsiteFields", "group": "Chat_Websites", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsite/index.js", "groupTitle": "Chat_Websites" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/companies?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/companies?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/companies?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/companies?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/companies?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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\": \"john.doe@xcally.com\", \"...\": \"...\"}]' \\ \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": "tags", "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": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": false, "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmContact/index.js", "groupTitle": "Cm_Contacts" }, { "type": "post", "url": "/api/cm/contacts", "title": "Create Contacts", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmContact/index.js", "groupTitle": "Cm_Contacts" }, { "type": "get", "url": "/api/cm/contacts", "title": "Gets List Contacts", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/cm/contacts -v -u {name}:{password} -X GET", "type": "json" } ], "name": "index", "group": "Cm_Contacts", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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 '{\"fullName\": \"John\", \"lastName\": \"Doe\"}' -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "update", "group": "Cm_Contacts", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/custom_fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/custom_fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/custom_fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/custom_fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/custom_fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/hopper?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/hopper?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/hopper?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/hopper?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/hopper?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/hopper_black?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/hopper_black?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/hopper_black?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/hopper_black?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/hopper_black?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/hopper_final?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/hopper_final?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/hopper_final?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/hopper_final?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/hopper_final?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmHopperFinal/index.js", "groupTitle": "Cm_Hopper_Final" }, { "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/hopper_history?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/hopper_history?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/hopper_history?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/hopper_history?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/hopper_history?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmHopper/index.js", "groupTitle": "Cm_Hopper" }, { "type": "get", "url": "/api/cm/hopper/preview", "title": "Gets Preview Dialer Contacts", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/cm/hopper/preview -v -u {name}:{password} -X GET", "type": "json" } ], "name": "getPreview", "group": "Cm_Hopper", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/lists?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/lists?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/lists?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/lists?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/lists?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"john.doe@xcally.com\", \"...\": \"...\"}]' \\ \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": "tags", "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": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": false, "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmList/index.js", "groupTitle": "Cm_Lists" }, { "type": "post", "url": "/api/lists/{id}/dispositions", "title": "Creates a new sub disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/lists/{id}/disposition -d '{\"name\": \"SATISFIED\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDisposition", "group": "Cm_Lists", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmList/index.js", "groupTitle": "Cm_Lists" }, { "type": "get", "url": "/api/cm/lists/{id}/dispositions", "title": "Gets 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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmList/index.js", "groupTitle": "Cm_Lists" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmCustomField/index.js", "groupTitle": "Custom_Fields" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/dashboardItem/index.js", "groupTitle": "Dashboard_Items" }, { "type": "put", "url": "/api/dashboards/items/{id}", "title": "Update an existing Dashboard Item", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/dashboards/items/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDashboard_Items", "group": "Dashboard_Items", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/dashboardItem/index.js", "groupTitle": "Dashboard_Items" }, { "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": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "interval", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/dashboards?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/dashboards?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/dashboards?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/dashboards?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/dashboards?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/dashboard/index.js", "groupTitle": "Dashboards" }, { "type": "get", "url": "/api/dashboards/{id}/run", "title": "Run dashboard widgets queries", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/dashboards/{id}/run -v -u {name}:{password} -X GET", "type": "json" } ], "name": "run", "group": "Dashboards", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "Dashboars", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/dashboard/index.js", "groupTitle": "Dashboars" }, { "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", "allowedValues": [ "\"integrationTab\"", "\"newTab\"" ], "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/desk/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/desk/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/desk/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/desk/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/desk/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/desk/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/desk/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/desk/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/desk/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/desk/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intDeskConfiguration/index.js", "groupTitle": "Desk_Configurations" }, { "type": "post", "url": "/api/integrations/desk/fields", "title": "Creates a new Desk Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/desk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDesk_Fields", "group": "Desk_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "nameField", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "customField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/desk/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/desk/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/desk/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/desk/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/desk/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intDeskField/index.js", "groupTitle": "Desk_Fields" }, { "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": "Boolean", "optional": true, "field": "fidelity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "acceptUrl", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "acceptMethod", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "rejectMethod", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "actions", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closeUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "closeMethod", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "allowedValues": [ "\"queue\"", "\"agent\"", "\"sendMail\"", "\"sendSms\"" ], "optional": false, "field": "app", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "priority", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data1", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data2", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data3", "description": "" }, { "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": "Blob", "optional": true, "field": "data7", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data8", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data9", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data10", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"Satisfied\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDisposition", "group": "Fax_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAccount/index.js", "groupTitle": "Fax_Accounts" }, { "type": "post", "url": "/api/fax/accounts/{id}/dispositions", "title": "Creates many dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/accounts/{id}/dispositions -d '[{\"name\": \"Satisfied\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDispositions", "group": "Fax_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": true, "field": "contact", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "faxIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "faxOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENT\"", "\"SENDING\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAccount/index.js", "groupTitle": "Fax_Accounts" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxApplication/index.js", "groupTitle": "Fax_Applications" }, { "type": "post", "url": "/api/fax/attachments", "title": "Creates a new Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/attachments -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateAttachments", "group": "Fax_Attachments", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "path", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "basename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAttachment/index.js", "groupTitle": "Fax_Attachments" }, { "type": "delete", "url": "/api/fax/attachments/{id}", "title": "Deletes a Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/attachments/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteAttachments", "group": "Fax_Attachments", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAttachment/index.js", "groupTitle": "Fax_Attachments" }, { "type": "get", "url": "/api/fax/attachments", "title": "Gets a list of Attachments", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/attachments -v -u {name}:{password}", "type": "json" } ], "name": "GetAttachments", "group": "Fax_Attachments", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/attachments?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/attachments?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/attachments?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/attachments?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/attachments?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/faxAttachment/index.js", "groupTitle": "Fax_Attachments" }, { "type": "get", "url": "/api/fax/attachments/{id}", "title": "Gets a single Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/attachments/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowAttachments", "group": "Fax_Attachments", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAttachment/index.js", "groupTitle": "Fax_Attachments" }, { "type": "put", "url": "/api/fax/attachments/{id}", "title": "Update an existing Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/attachments/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateAttachments", "group": "Fax_Attachments", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAttachment/index.js", "groupTitle": "Fax_Attachments" }, { "type": "post", "url": "/api/fax/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Fax_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxDisposition/index.js", "groupTitle": "Fax_Dispositions" }, { "type": "delete", "url": "/api/fax/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Fax_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxDisposition/index.js", "groupTitle": "Fax_Dispositions" }, { "type": "get", "url": "/api/fax/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Fax_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxDisposition/index.js", "groupTitle": "Fax_Dispositions" }, { "type": "put", "url": "/api/fax/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Fax_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxDisposition/index.js", "groupTitle": "Fax_Dispositions" }, { "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": "String", "optional": true, "field": "contact", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "faxIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "faxOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENT\"", "\"SENDING\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/interactions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/interactions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/interactions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/interactions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/interactions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": false, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "to", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENT\"", "\"SENDING\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "status", "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": "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": "Integer", "optional": true, "field": "priority", "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": "localstationid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remotestationid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "pagestransferred", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "resolution", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "transferrate", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "filename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastStatus", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "error", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "text", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "retry", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxInteraction/index.js", "groupTitle": "Fax_Interactions" }, { "type": "post", "url": "/api/fax/messages", "title": "Creates a new Message", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateMessages", "group": "Fax_Messages", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "to", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENT\"", "\"SENDING\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "status", "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": "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": "Integer", "optional": true, "field": "priority", "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": "localstationid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remotestationid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "pagestransferred", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "resolution", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "transferrate", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "filename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastStatus", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "error", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "text", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "retry", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxMessage/index.js", "groupTitle": "Fax_Messages" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxMessage/index.js", "groupTitle": "Fax_Messages" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxQueue/index.js", "groupTitle": "Fax_Queues" }, { "type": "post", "url": "/api/fax/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "Fax_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeslot", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountphone", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "messageid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "calledAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "from", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxReport/index.js", "groupTitle": "Fax_Reports" }, { "type": "delete", "url": "/api/fax/reports/{id}", "title": "Deletes a Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteReports", "group": "Fax_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxReport/index.js", "groupTitle": "Fax_Reports" }, { "type": "get", "url": "/api/fax/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Fax_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/faxReport/index.js", "groupTitle": "Fax_Reports" }, { "type": "get", "url": "/api/fax/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Fax_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxReport/index.js", "groupTitle": "Fax_Reports" }, { "type": "put", "url": "/api/fax/reports/{id}", "title": "Update an existing Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateReports", "group": "Fax_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxReport/index.js", "groupTitle": "Fax_Reports" }, { "type": "post", "url": "/api/fax/sessions/reports", "title": "Creates a new Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateSession_Reports", "group": "Fax_Session_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountphone", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "fidelity", "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": "completeAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "complete", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"agent\"" ], "optional": true, "field": "completeReason", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeslot", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "delete", "url": "/api/fax/sessions/reports/{id}", "title": "Deletes a Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteSession_Reports", "group": "Fax_Session_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "get", "url": "/api/fax/sessions/reports/describe", "title": "Gets table info about Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports/describe -v -u {name}:{password}", "type": "json" } ], "name": "DescribeSession_Reports", "group": "Fax_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "get", "url": "/api/fax/sessions/reports", "title": "Gets a list of Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetSession_Reports", "group": "Fax_Session_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/sessions/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/sessions/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/sessions/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/sessions/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/sessions/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "get", "url": "/api/fax/sessions/reports/{id}", "title": "Gets a single Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowSession_Reports", "group": "Fax_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "put", "url": "/api/fax/sessions/reports/{id}", "title": "Update an existing Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateSession_Reports", "group": "Fax_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "post", "url": "/api/integrations/freshdesk/accounts", "title": "Creates a new Freshdesk Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/freshdesk/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateFreshdesk_Accounts", "group": "Freshdesk_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "username", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "apiKey", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remoteUri", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "serverUrl", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/freshdesk/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/freshdesk/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/freshdesk/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/freshdesk/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/freshdesk/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/freshdesk/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/freshdesk/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/freshdesk/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/freshdesk/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/freshdesk/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intFreshdeskConfiguration/index.js", "groupTitle": "Freshdesk_Configurations" }, { "type": "post", "url": "/api/integrations/freshdesk/fields", "title": "Creates a new Freshdesk Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/freshdesk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateFreshdesk_Fields", "group": "Freshdesk_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "nameField", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "customField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/freshdesk/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/freshdesk/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/freshdesk/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/freshdesk/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/freshdesk/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intFreshdeskField/index.js", "groupTitle": "Freshdesk_Fields" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/intervals?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/intervals?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/intervals?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/intervals?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/intervals?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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 -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addIntervals", "group": "Intervals", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/jira/index.js", "groupTitle": "Issue" }, { "type": "post", "url": "/api/jscripty/answers/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/jscripty/answers/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "JscriptyAnswerReport", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "question", "description": "" }, { "group": "Body", "type": "String", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/jscripty/answers/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/jscripty/answers/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/jscripty/answers/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/jscripty/answers/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/jscripty/answers/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/jscriptyAnswerReport/index.js", "groupTitle": "JscriptyAnswerReport" }, { "type": "post", "url": "/api/jscripty/questions/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/jscripty/questions/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "JscriptyQuestionReport", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "question", "description": "" }, { "group": "Body", "type": "String", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/jscripty/questions/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/jscripty/questions/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/jscripty/questions/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/jscripty/questions/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/jscripty/questions/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/jscripty/sessions/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/jscripty/sessions/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/jscripty/sessions/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/jscripty/sessions/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/jscripty/sessions/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/jscriptySessionReport/index.js", "groupTitle": "JscriptySessionReport" }, { "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/jscripty/projects?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/jscripty/projects?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/jscripty/projects?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/jscripty/projects?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/jscripty/projects?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/license/index.js", "groupTitle": "License" }, { "type": "put", "url": "/api/license/{id}", "title": "Update an existing License", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/license/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateLiense", "group": "License", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/license/index.js", "groupTitle": "License" }, { "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": "String", "optional": true, "field": "username", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "password", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "port", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mailbox", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "ssl", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "delete", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"UNSEEN\"" ], "optional": true, "field": "filter", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"IMAP\"", "\"POP3\"" ], "optional": true, "field": "protocol", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"CONNECTING\"", "\"CONNECTED\"", "\"DISCONNECTED\"", "\"ERROR\"", "\"UNKNOWN\"" ], "optional": true, "field": "state", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "source", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "connTimeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "authTimeout", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "keepalive", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "service", "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": "state", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "authentication", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAccount/index.js", "groupTitle": "Mail_Accounts" }, { "type": "post", "url": "/api/mail/accounts", "title": "Creates a new Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateAccounts", "group": "Mail_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "fidelity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "whiteLabel", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "acceptUrl", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "acceptMethod", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "rejectMethod", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "actions", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closeUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "closeMethod", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "signature", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "custom", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "service", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "email", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAccount/index.js", "groupTitle": "Mail_Accounts" }, { "type": "delete", "url": "/api/mail/accounts/{id}", "title": "Deletes a Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/accounts/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteAccounts", "group": "Mail_Accounts", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "allowedValues": [ "\"queue\"", "\"agent\"", "\"sendMail\"", "\"replyMail\"", "\"sendSms\"" ], "optional": true, "field": "app", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "priority", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data1", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data2", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data3", "description": "" }, { "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": "Blob", "optional": true, "field": "data7", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data8", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data9", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data10", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\"}' \\ \n -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": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAccount/index.js", "groupTitle": "Mail_Accounts" }, { "type": "post", "url": "/api/mail/accounts/{id}/dispositions", "title": "Creates many dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/accounts/{id}/dispositions -d '[{\"name\": \"vip\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDispositions", "group": "Mail_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": true, "field": "subject", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "attachment", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "mailIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "mailOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "deleted", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "ParentId", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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\" '}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "sendMail", "group": "Mail_Accounts", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailApplication/index.js", "groupTitle": "Mail_Applications" }, { "type": "post", "url": "/api/mail/attachments", "title": "Creates a new Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/attachments -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateAttachments", "group": "Mail_Attachments", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "domain", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "size", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "path", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "basename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAttachment/index.js", "groupTitle": "Mail_Attachments" }, { "type": "delete", "url": "/api/mail/attachments/{id}", "title": "Deletes a Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/attachments/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteAttachments", "group": "Mail_Attachments", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAttachment/index.js", "groupTitle": "Mail_Attachments" }, { "type": "get", "url": "/api/mail/attachments", "title": "Gets a list of Attachments", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/attachments -v -u {name}:{password}", "type": "json" } ], "name": "GetAttachments", "group": "Mail_Attachments", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/attachments?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/attachments?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/attachments?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/attachments?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/attachments?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/mailAttachment/index.js", "groupTitle": "Mail_Attachments" }, { "type": "get", "url": "/api/mail/attachments/{id}", "title": "Gets a single Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/attachments/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowAttachments", "group": "Mail_Attachments", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAttachment/index.js", "groupTitle": "Mail_Attachments" }, { "type": "put", "url": "/api/mail/attachments/{id}", "title": "Update an existing Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/attachments/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateAttachments", "group": "Mail_Attachments", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAttachment/index.js", "groupTitle": "Mail_Attachments" }, { "type": "post", "url": "/api/mail/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Mail_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailDisposition/index.js", "groupTitle": "Mail_Dispositions" }, { "type": "delete", "url": "/api/mail/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Mail_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailDisposition/index.js", "groupTitle": "Mail_Dispositions" }, { "type": "get", "url": "/api/mail/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Mail_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailDisposition/index.js", "groupTitle": "Mail_Dispositions" }, { "type": "put", "url": "/api/mail/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Mail_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailDisposition/index.js", "groupTitle": "Mail_Dispositions" }, { "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": "String", "optional": true, "field": "subject", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "attachment", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "mailIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "mailOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "deleted", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "ParentId", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/interactions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/interactions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/interactions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/interactions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/interactions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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\": \"sales@xcally.com\", \"...\": \"...\"}]' \\ \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": "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": "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": "Integer", "optional": true, "field": "fromId", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "attachment", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "text", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "html", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "auto", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "retry", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "voiceSource", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "userName", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "userFullname", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "accountId", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailInteraction/index.js", "groupTitle": "Mail_Interactions" }, { "type": "post", "url": "/api/mail/messages", "title": "Creates a new Message", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateMessages", "group": "Mail_Messages", "parameter": { "fields": { "Body": [ { "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": "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": "Integer", "optional": true, "field": "fromId", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "attachment", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "text", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "html", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "auto", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "retry", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "voiceSource", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "userName", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "userFullname", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "accountId", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailMessage/index.js", "groupTitle": "Mail_Messages" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailMessage/index.js", "groupTitle": "Mail_Messages" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "lastAgent", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailQueue/index.js", "groupTitle": "Mail_Queues" }, { "type": "get", "url": "/api/mail/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Mail_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/mailReport/index.js", "groupTitle": "Mail_Reports" }, { "type": "get", "url": "/api/mail/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Mail_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailReport/index.js", "groupTitle": "Mail_Reports" }, { "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": "service", "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": "state", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "authentication", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/out_servers?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/out_servers?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/out_servers?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/out_servers?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/out_servers?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailServerOut/index.js", "groupTitle": "Mail_SMTP" }, { "type": "get", "url": "/api/mail/sessions/reports/describe", "title": "Gets table info about Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/sessions/reports/describe -v -u {name}:{password}", "type": "json" } ], "name": "DescribeSession_Reports", "group": "Mail_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailSessionReport/index.js", "groupTitle": "Mail_Session_Reports" }, { "type": "get", "url": "/api/mail/sessions/reports", "title": "Gets a list of Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/sessions/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetSession_Reports", "group": "Mail_Session_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/sessions/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/sessions/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/sessions/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/sessions/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/sessions/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/mailSessionReport/index.js", "groupTitle": "Mail_Session_Reports" }, { "type": "get", "url": "/api/mail/sessions/reports/{id}", "title": "Gets a single Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/sessions/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowSession_Reports", "group": "Mail_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailSessionReport/index.js", "groupTitle": "Mail_Session_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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/members/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/members/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/members/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/members/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/members/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/memberReport/index.js", "groupTitle": "Member_Reports" }, { "type": "post", "url": "/api/voice/networks", "title": "Create a new network", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/networks -v -u {name}:{password} -X POST", "type": "json" } ], "name": "Create", "group": "Networks", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/networks?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/networks?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/networks?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/networks?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/networks?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/network/index.js", "groupTitle": "Networks" }, { "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": "replyUri", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelAccount/index.js", "groupTitle": "Openchannel_Accounts" }, { "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_Accounts", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelMessage/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": "String", "optional": true, "field": "appdata", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"Satisfied\"}' \\ \n -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": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelAccount/index.js", "groupTitle": "Openchannel_Accounts" }, { "type": "post", "url": "/api/openchannel/accounts/{id}/dispositions", "title": "Creates many dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/accounts/{id}/dispositions -d '[{\"name\": \"Satisfied\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDispositions", "group": "Openchannel_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelAccount/index.js", "groupTitle": "Openchannel_Accounts" }, { "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_Accounts", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelMessage/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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": true, "field": "appdata", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/applications?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/applications?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/applications?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/applications?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/applications?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelApplication/index.js", "groupTitle": "Openchannel_Applications" }, { "type": "post", "url": "/api/openchannel/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Openchannel_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelDisposition/index.js", "groupTitle": "Openchannel_Dispositions" }, { "type": "delete", "url": "/api/openchannel/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Openchannel_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelDisposition/index.js", "groupTitle": "Openchannel_Dispositions" }, { "type": "get", "url": "/api/openchannel/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Openchannel_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelDisposition/index.js", "groupTitle": "Openchannel_Dispositions" }, { "type": "put", "url": "/api/openchannel/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Openchannel_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelDisposition/index.js", "groupTitle": "Openchannel_Dispositions" }, { "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/interactions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/interactions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/interactions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/interactions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/interactions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelMessage/index.js", "groupTitle": "Openchannel_Messages" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelQueue/index.js", "groupTitle": "Openchannel_Queues" }, { "type": "post", "url": "/api/openchannel/reports", "title": "Creates a new Openchannel Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateOpenchannel_Reports", "group": "Openchannel_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "timeslot", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "messageid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "calledAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelReport/index.js", "groupTitle": "Openchannel_Reports" }, { "type": "delete", "url": "/api/openchannel/reports/{id}", "title": "Deletes a Openchannel Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteOpenchannel_Reports", "group": "Openchannel_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelReport/index.js", "groupTitle": "Openchannel_Reports" }, { "type": "get", "url": "/api/openchannel/reports", "title": "Gets a list of Openchannel Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetOpenchannel_Reports", "group": "Openchannel_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/openchannelReport/index.js", "groupTitle": "Openchannel_Reports" }, { "type": "get", "url": "/api/openchannel/reports/{id}", "title": "Gets a single Openchannel Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowOpenchannel_Reports", "group": "Openchannel_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelReport/index.js", "groupTitle": "Openchannel_Reports" }, { "type": "put", "url": "/api/openchannel/reports/{id}", "title": "Update an existing Openchannel Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateOpenchannel_Reports", "group": "Openchannel_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelReport/index.js", "groupTitle": "Openchannel_Reports" }, { "type": "get", "url": "/api/openchannel/sessions/reports/describe", "title": "Gets table info about Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/sessions/reports/describe -v -u {name}:{password}", "type": "json" } ], "name": "DescribeSession_Reports", "group": "Openchannel_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelSessionReport/index.js", "groupTitle": "Openchannel_Session_Reports" }, { "type": "get", "url": "/api/openchannel/sessions/reports", "title": "Gets a list of Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/sessions/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetSession_Reports", "group": "Openchannel_Session_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/sessions/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/sessions/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/sessions/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/sessions/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/sessions/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/openchannelSessionReport/index.js", "groupTitle": "Openchannel_Session_Reports" }, { "type": "get", "url": "/api/openchannel/sessions/reports/{id}", "title": "Gets a single Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/sessions/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowSession_Reports", "group": "Openchannel_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelSessionReport/index.js", "groupTitle": "Openchannel_Session_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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/pauses?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/pauses?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/pauses?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/pauses?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/pauses?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/pause/index.js", "groupTitle": "Pauses" }, { "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion returns the pm2 processes list.

", "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": "updateProcesses", "group": "Pm2", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime campaigns parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime agents parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime outbound channels.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of telephones parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime trunks parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a specific realtime voice queue channel.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will hangup a specific realtime voice queue channel.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will redirect a specific realtime voice queue channel to a specific extension.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a specific preview contact.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime voice queues parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime outbound parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime voice queues channels.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/rpc/index.js", "groupTitle": "RPC_Realtime" }, { "type": "post", "url": "/api/integrations/salesforce/accounts", "title": "Creates a new Salesforce Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/salesforce/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateSalesforce_Accounts", "group": "Salesforce_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "username", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remoteUri", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "password", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "clientId", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "clientSecret", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "securityToken", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "serverUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"integrationTab\"", "\"newTab\"" ], "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/salesforce/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/salesforce/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/salesforce/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/salesforce/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/salesforce/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/salesforce/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/salesforce/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/salesforce/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/salesforce/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/salesforce/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intSalesforceConfiguration/index.js", "groupTitle": "Salesforce_Configurations" }, { "type": "post", "url": "/api/integrations/salesforce/fields", "title": "Creates a new Salesforce Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/salesforce/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateSalesforce_Fields", "group": "Salesforce_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/salesforce/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/salesforce/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/salesforce/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/salesforce/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/salesforce/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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\"", "\"xls\"" ], "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/schedules?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/schedules?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/schedules?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/schedules?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/schedules?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/schedule/index.js", "groupTitle": "Schedules" }, { "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/settings?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/settings?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/settings?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/settings?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/settings?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/setting/index.js", "groupTitle": "Settings" }, { "type": "put", "url": "/api/settings/{id}", "title": "Update settings", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/settings/{id} -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "Update", "group": "Settings", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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 -u {name}:{password} -X GET", "type": "json" } ], "name": "getLogo", "group": "Settings", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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 -u {name}:{password} -X GET", "type": "json" } ], "name": "getLogoLogin", "group": "Settings", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/setting/index.js", "groupTitle": "Settings" }, { "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": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"twilio\"", "\"skebby\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"basic\"", "\"classic\"", "\"classic+\"" ], "optional": true, "field": "smstype", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remote", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "fidelity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "phone", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "sid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "token", "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": "acceptUrl", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "acceptMethod", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "rejectMethod", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closeUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "closeMethod", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "actions", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "allowedValues": [ "\"queue\"", "\"agent\"" ], "optional": true, "field": "app", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "priority", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data1", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data2", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data3", "description": "" }, { "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": "Blob", "optional": true, "field": "data7", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data8", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data9", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data10", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"Satisfied\"}' \\ \n -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": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsAccount/index.js", "groupTitle": "Sms_Accounts" }, { "type": "post", "url": "/api/sms/accounts/{id}/dispositions", "title": "Creates many dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/accounts/{id}/dispositions -d '[{\"name\": \"Satisfied\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDispositions", "group": "Sms_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsAccount/index.js", "groupTitle": "Sms_Accounts" }, { "type": "post", "url": "/api/sms/accounts/{id}/interactions", "title": "Creates new interactions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/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": "Sms_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "contact", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "smsIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "smsOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "ParentId", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "voiceSource", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsAccount/index.js", "groupTitle": "Sms_Accounts" }, { "type": "get", "url": "/api/sms/accounts/{id}/interactions", "title": "Gets account interactions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/accounts/{id}/interactions -v -u {name}:{password} -X GET", "type": "json" } ], "name": "getInteraction", "group": "Sms_Accounts", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsAccount/index.js", "groupTitle": "Sms_Accounts" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsApplication/index.js", "groupTitle": "Sms_Applications" }, { "type": "post", "url": "/api/sms/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Sms_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsDisposition/index.js", "groupTitle": "Sms_Dispositions" }, { "type": "delete", "url": "/api/sms/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Sms_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsDisposition/index.js", "groupTitle": "Sms_Dispositions" }, { "type": "get", "url": "/api/sms/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Sms_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsDisposition/index.js", "groupTitle": "Sms_Dispositions" }, { "type": "put", "url": "/api/sms/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Sms_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsDisposition/index.js", "groupTitle": "Sms_Dispositions" }, { "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": "String", "optional": true, "field": "contact", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "smsIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "smsOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "ParentId", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "voiceSource", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/interactions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/interactions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/interactions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/interactions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/interactions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": false, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "to", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "body", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "errorcode", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "skebby_message_id", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "res_data", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "source", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "auto", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": false, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "to", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "body", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "errorcode", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "skebby_message_id", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "res_data", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "source", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "auto", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsMessage/index.js", "groupTitle": "Sms_Messages" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "lastAgent", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsQueue/index.js", "groupTitle": "Sms_Queues" }, { "type": "post", "url": "/api/sms/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "Sms_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeslot", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountnumber", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "messageid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "calledAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "post", "url": "/api/sms/session/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "Sms_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "subject", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountaddress", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "fidelity", "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": "completeAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "complete", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"agent\"" ], "optional": true, "field": "completeReason", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeslot", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "delete", "url": "/api/sms/session/reports/{id}", "title": "Deletes a Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "delete", "url": "/api/sms/reports/{id}", "title": "Deletes a Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "get", "url": "/api/sms/session/reports/describe", "title": "Gets table info about Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports/describe -v -u {name}:{password}", "type": "json" } ], "name": "DescribeReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "get", "url": "/api/sms/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Sms_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/smsReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "get", "url": "/api/sms/session/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Sms_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/session/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/session/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/session/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/session/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/session/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "get", "url": "/api/sms/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "get", "url": "/api/sms/session/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "put", "url": "/api/sms/reports/{id}", "title": "Update an existing Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "put", "url": "/api/sms/session/reports/{id}", "title": "Update an existing Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sounds?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sounds?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sounds?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sounds?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sounds?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/square/details/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/square/details/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/square/details/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/square/details/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/square/details/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/squareReportDetail/index.js", "groupTitle": "Square_Details_Reports" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/square/odbc?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/square/odbc?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/square/odbc?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/square/odbc?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/square/odbc?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/squareOdbc/index.js", "groupTitle": "Square_ODBC" }, { "type": "post", "url": "/api/square/projects", "title": "Creates a new Project", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/square/projects -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateProjects", "group": "Square_Projects", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "notes", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "preproduction", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "production", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/square/projects?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/square/projects?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/square/projects?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/square/projects?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/square/projects?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/squareRecording/index.js", "groupTitle": "Square_Recordings" }, { "type": "delete", "url": "/api/square/recordings/{id}", "title": "Deletes a Recording", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/square/recordings/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteRecordings", "group": "Square_Recordings", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/square/recordings?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/square/recordings?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/square/recordings?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/square/recordings?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/square/recordings?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/square/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/square/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/square/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/square/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/square/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/sugarcrm/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/sugarcrm/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/sugarcrm/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/sugarcrm/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/sugarcrm/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intSugarcrmConfiguration/index.js", "groupTitle": "SugarCRM_Configurations" }, { "type": "post", "url": "/api/integrations/sugarcrm/accounts", "title": "Creates a new Sugarcrm Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/sugarcrm/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateSugarcrm_Accounts", "group": "Sugarcrm_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "username", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "password", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remoteUri", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "serverUrl", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/sugarcrm/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/sugarcrm/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/sugarcrm/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/sugarcrm/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/sugarcrm/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intSugarcrmConfiguration/index.js", "groupTitle": "Sugarcrm_Configurations" }, { "type": "post", "url": "/api/integrations/sugarcrm/fields", "title": "Creates a new Sugarcrm Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/sugarcrm/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateSugarcrm_Fields", "group": "Sugarcrm_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "nameField", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "customField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/sugarcrm/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/sugarcrm/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/sugarcrm/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/sugarcrm/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/sugarcrm/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion returns the system information.

", "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": "description", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/tags?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/tags?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/tags?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/tags?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/tags?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/teams?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/teams?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/teams?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/teams?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/teams?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/team/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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsQueue/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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelQueue/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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxQueue/index.js", "groupTitle": "Teams" }, { "type": "get", "url": "/api/teams/{id}", "title": "Gets a single Team", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/teams/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowTeams", "group": "Teams", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": true, "field": "subject", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "html", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/templates?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/templates?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/templates?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/templates?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/templates?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/triggers?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/triggers?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/triggers?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/triggers?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/triggers?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Allowed values: contactManager, integration, motionbar, jscripty, urlForward, browser

" }, { "group": "Body", "type": "String", "optional": true, "field": "data1", "description": "

contactManager[ListId], integration[intName(zendesk)], motionbar[Popup(0),URL(1),WinApp(2)], urlForward[GET,POST], browser[TemplateId(0),URL(1)]

" }, { "group": "Body", "type": "String", "optional": true, "field": "data2", "description": "

integration[AccountId], motionbar[TemplateId,URL,WinAppPath], urlForward[URL]

" }, { "group": "Body", "type": "String", "optional": true, "field": "data3", "description": "

motionbar[NULL,NULL,WinAppArguments]

" }, { "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/trigger/index.js", "groupTitle": "Triggers" }, { "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": "

String is deprecated. Please use an Array as ["udp", "tcp"]

" }, { "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": "

String is deprecated. Please use an Array as ["force_rport", "comedia"]

" }, { "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": "

String is deprecated. Please use an Array as ["ulaw", "alaw", "alaw"]

" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "autoframing", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "insecure", "description": "

String is deprecated. Please use an Array as ["port", "invite"]

" }, { "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/trunks?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/trunks?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/trunks?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/trunks?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/trunks?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/trunk/index.js", "groupTitle": "Trunks" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/user/index.js", "groupTitle": "Users" }, { "type": "post", "url": "/api/users/create_many", "title": "Creates many Users", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/users/create_many -d '[{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}]' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "BulkCreateUsers", "group": "Users", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "

The name of the user

" }, { "group": "Body", "type": "String", "optional": false, "field": "fullname", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "email", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"admin\"", "\"user\"", "\"agent\"", "\"telephone\"" ], "optional": false, "field": "role", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "password", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "provider", "description": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "internal", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "salt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "phone", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mobile", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "address", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "zipcode", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "userpic", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "city", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "country", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "online", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastLoginAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "voicePause", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "chatPause", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "mailPause", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "faxPause", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "smsPause", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "openchannelPause", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "pauseType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastPauseAt", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "chatCapacity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "mailCapacity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "faxCapacity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "smsCapacity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "openchannelCapacity", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarAutoAnswer", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarEnableSettings", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "phoneBarListenPort", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "phoneBarExpires", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarRemoteControl", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "phoneBarRemoteControlPort", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarEnableRecording", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarRingInUse", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "chanspy", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "host", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "ipaddr", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "port", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "regseconds", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "fullcontact", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "regserver", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "useragent", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "lastms", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"friend\"", "\"user\"", "\"peer\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "context", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"ALLOWED_NOT_SCREENED\"", "\"ALLOWED_PASSED_SCREEN\"", "\"ALLOWED_FAILED_SCREEN\"", "\"ALLOWED\"", "\"PROHIB_NOT_SCREENED\"", "\"PROHIB_PASSED_SCREEN\"", "\"PROHIB_FAILED_SCREEN\"", "\"PROHIB\"" ], "optional": true, "field": "callingpres", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "deny", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "permit", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "secret", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "md5secret", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remotesecret", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "transport", "description": "

String is deprecated. Please use an Array as ["udp", "tcp"]

" }, { "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": "

String is deprecated. Please use an Array as ["force_rport", "comedia"]

" }, { "group": "Body", "type": "String", "optional": true, "field": "callgroup", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "namedcallgroup", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "pickupgroup", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "namedpickupgroup", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "language", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "tonezone", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "disallow", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "allow", "description": "

String is deprecated. Please use an Array as ["ulaw", "alaw", "gsm"]

" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "autoframing", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "insecure", "description": "

String is deprecated. Please use an Array as ["port", "invite"]

" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "trustrpid", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "trust_id_outbound", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"", "\"never\"" ], "optional": true, "field": "progressinband", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "promiscredir", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "useclientcode", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "accountcode", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "setvar", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "callerid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "amaflags", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "callcounter", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "busylevel", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "allowoverlap", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "allowsubscribe", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "allowtransfer", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "ignoresdpversion", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "subscribecontext", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "template", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"", "\"always\"" ], "optional": true, "field": "videosupport", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "maxcallbitrate", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "rfc2833compensate", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mailbox", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"accept\"", "\"refuse\"", "\"originate\"" ], "optional": true, "field": "session_timers", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "session_expires", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "session_minse", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"uac\"", "\"uas\"" ], "optional": true, "field": "session_refresher", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "t38pt_usertpsource", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "regexten", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "fromdomain", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "fromuser", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "qualify", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "keepalive", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "defaultip", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "defaultuser", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "rtptimeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "rtpholdtimeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "rtpkeepalive", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "sendrpid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "outboundproxy", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "callbackextension", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timert1", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timerb", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "qualifyfreq", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "contactpermit", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "contactdeny", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "contactacl", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "unsolicited_mailbox", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "use_q850_reason", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "maxforwards", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "encryption", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "avpf", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "force_avp", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "icesupport", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "dtlsenable", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"", "\"fingerprint\"", "\"certificate\"" ], "optional": true, "field": "dtlsverify", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dtlsrekey", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlscertfile", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlsprivatekey", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlscipher", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlscafile", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlscapath", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"active\"", "\"passive\"", "\"actpass\"" ], "optional": true, "field": "dtlssetup", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlsfingerprint", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "usereqphone", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "recordonfeature", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "recordofffeature", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "call_limit", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "registertrying", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "subscribemwi", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "vmexten", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mohinterpret", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mohsuggest", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "parkinglot", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"", "\"nonat\"", "\"update\"", "\"update,nonat\"" ], "optional": true, "field": "canreinvite", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "loginInPause", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "resetPasswordToken", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "resetPasswordExpires", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "showWebBar", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "permissions", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/user/index.js", "groupTitle": "Users" }, { "type": "delete", "url": "/api/users/destroy_many?ids={ids}", "title": "Deletes many Users", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/users/destroy_many?ids=1&ids=2&ids=3 -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "BulkDeleteUsers", "group": "Users", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "DeleteUsers", "group": "Users", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetAgents", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetContacts", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetLists", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetQueues", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetRecordings", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetTeams", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/users?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/users?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/users?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/users?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/users?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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}", "type": "json" } ], "name": "GetVoiceQueuesRt", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "Login", "group": "Users", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "Logout", "group": "Users", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "Pause", "group": "Users", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "Unpause", "group": "Users", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/variables?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/variables?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/variables?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/variables?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/variables?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion run the following command: git fetch origin master

", "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": "

Motion returns the current and latest motion version.

", "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": "

Motion run the following command: git pull

", "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": "

Motion run the following command: git reset --hard FETCH_HEAD

", "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": "

Motion run the following command: pm2 restart motion

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/agents/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/agents/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/agents/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/agents/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/agents/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/calls/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/calls/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/calls/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/calls/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/calls/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/chanspy?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/chanspy?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/chanspy?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/chanspy?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/chanspy?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/contexts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/contexts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/contexts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/contexts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/contexts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/dials/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/dials/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/dials/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/dials/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/dials/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceDialReport/index.js", "groupTitle": "Voice_Dial_Reports" }, { "type": "post", "url": "/api/voice/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Voice_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceDisposition/index.js", "groupTitle": "Voice_Dispositions" }, { "type": "delete", "url": "/api/voice/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Voice_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceDisposition/index.js", "groupTitle": "Voice_Dispositions" }, { "type": "get", "url": "/api/voice/dispositions", "title": "Gets a list of Dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/dispositions -v -u {name}:{password}", "type": "json" } ], "name": "GetDispositions", "group": "Voice_Dispositions", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/dispositions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/dispositions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/dispositions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/dispositions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/dispositions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/voiceDisposition/index.js", "groupTitle": "Voice_Dispositions" }, { "type": "get", "url": "/api/voice/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Voice_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceDisposition/index.js", "groupTitle": "Voice_Dispositions" }, { "type": "put", "url": "/api/voice/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Voice_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceDisposition/index.js", "groupTitle": "Voice_Dispositions" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/extensions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/extensions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/extensions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/extensions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/extensions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/mohs?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/mohs?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/mohs?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/mohs?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/mohs?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "maxsecs", "description": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "maxmsg", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/mails?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/mails?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/mails?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/mails?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/mails?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceMail/index.js", "groupTitle": "Voice_Mails" }, { "type": "post", "url": "/api/voice/mails/messages", "title": "Creates a new Message", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/mails/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateMessages", "group": "Voice_Messages", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "Virtual", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "msgnum", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dir", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "context", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "macrocontext", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "callerid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "origtime", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "duration", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mailboxuser", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mailboxcontext", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "recording", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "flag", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "msg_id", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "stamp", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/mails/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/mails/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/mails/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/mails/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/mails/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceMailMessage/index.js", "groupTitle": "Voice_Messages" }, { "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/queues/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/queues/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/queues/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/queues/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/queues/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": [ "\"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": "String", "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": "

Active/Disactive Campaign

" }, { "group": "Body", "type": "String", "allowedValues": [ "\"preview\"", "\"progressive\"", "\"power\"", "\"predictive\"" ], "optional": true, "field": "dialMethod", "description": "

Dial Method.

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialLimitChannel", "description": "

Max 9999 channels, 0 means unlimited.

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialLimitQueue", "description": "

Max 9999 member in queue(min:1, max:9999), 0 means unlimited.

" }, { "group": "Body", "type": "Float", "optional": true, "field": "dialPowerLevel", "description": "

Power Level: Calls for agents (min:1, max:10).

" }, { "group": "Body", "type": "String", "allowedValues": [ "\"agentBusyFactor\"", "\"dropRate\"" ], "optional": true, "field": "dialPredictiveOptimization", "description": "

Only for predictive method.

" }, { "group": "Body", "type": "Float", "optional": true, "field": "dialPredictiveOptimizationPercentage", "description": "

Predictive Optimization Percentage (min: 1, max: 95)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialPredictiveInterval", "description": "

Intervall Predictive Minutes (min:5 max:30)

" }, { "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": "

Originate Timeout Seconds (min:1, max:999)

" }, { "group": "Body", "type": "String", "optional": true, "field": "dialQueueOptions", "description": "

https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialQueueTimeout", "description": "

Queue Timeout Seconds (min:1, max:99)

" }, { "group": "Body", "type": "String", "optional": true, "field": "dialQueueProject", "description": "

AGI queue option (use: agi://127.0.0.1/square,<project_name>)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialCongestionMaxRetry", "description": "

#Congestion Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialCongestionRetryFrequency", "description": "

Congestion Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialBusyMaxRetry", "description": "

#Busy Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialBusyRetryFrequency", "description": "

Busy Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialNoAnswerMaxRetry", "description": "

#NoAnswer Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialNoAnswerRetryFrequency", "description": "

NoAnswer Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialGlobalMaxRetry", "description": "

#Global Max Retry (min:1, max:999)

" }, { "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "createdAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "updatedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceRecording/index.js", "groupTitle": "Voice_Recordings" }, { "type": "delete", "url": "/api/voice/recordings/{id}", "title": "Deletes a Recording", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/recordings/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteRecordings", "group": "Voice_Recordings", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/recordings?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/recordings?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/recordings?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/recordings?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/recordings?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/transfers/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/transfers/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/transfers/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/transfers/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/transfers/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceTransferReport/index.js", "groupTitle": "Voice_Transfer_Reports" }, { "type": "post", "url": "/api/integrations/zendesk/accounts", "title": "Creates a new Zendesk Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/zendesk/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateZendesk_Accounts", "group": "Zendesk_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "username", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "password", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "token", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remoteUri", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"password\"", "\"token\"" ], "optional": true, "field": "authType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "serverUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"integrationTab\"", "\"newTab\"" ], "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zendesk/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zendesk/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zendesk/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zendesk/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zendesk/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zendesk/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zendesk/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zendesk/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zendesk/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zendesk/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intZendeskConfiguration/index.js", "groupTitle": "Zendesk_Configurations" }, { "type": "post", "url": "/api/integrations/zendesk/fields", "title": "Creates a new Zendesk Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/zendesk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateZendesk_Fields", "group": "Zendesk_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "nameField", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "customField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zendesk/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zendesk/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zendesk/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zendesk/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zendesk/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "authToken", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "host", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "serverUrl", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zoho/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zoho/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zoho/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zoho/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zoho/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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", "optional": true, "field": "description", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zoho/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zoho/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zoho/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zoho/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zoho/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intZohoConfiguration/index.js", "groupTitle": "Zoho_Configurations" }, { "type": "post", "url": "/api/integrations/zoho/fields", "title": "Creates a new Zoho Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/zoho/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateZoho_Fields", "group": "Zoho_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "nameField", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "customField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zoho/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zoho/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zoho/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zoho/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zoho/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cdr?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cdr?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cdr?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cdr?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cdr?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voiceQueuesLog?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voiceQueuesLog?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voiceQueuesLog?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voiceQueuesLog?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voiceQueuesLog?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/custom_reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/custom_reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/custom_reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/custom_reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/custom_reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/default_reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/default_reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/default_reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/default_reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/default_reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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", "allowedValues": [ "\"csv\"", "\"pdf\"", "\"xls\"" ], "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/extracted_reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/extracted_reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/extracted_reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/extracted_reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/extracted_reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": false, "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": false, "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/field_reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/field_reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/field_reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/field_reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/field_reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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 -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addFields", "group": "Analytic_Field_Reports", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/metrics?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/metrics?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/metrics?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/metrics?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/metrics?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/tree_reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/tree_reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/tree_reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/tree_reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/tree_reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/analyticTreeReport/index.js", "groupTitle": "Analytic_Tree_Reports" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/authGoogle/index.js", "groupTitle": "Authentication" }, { "type": "post", "url": "/api/auth/local", "title": "Creates a new User token", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/auth/local -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST", "type": "json" } ], "name": "Local_login", "group": "Authentication", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "password", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/authLocal/index.js", "groupTitle": "Authentication" }, { "type": "post", "url": "/api/automations", "title": "Creates a new Automation", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/automations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateAutomations", "group": "Automations", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "channel", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/automations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/automations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/automations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/automations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/automations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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\": \"john.doe@xcally.com\", \"...\": \"...\"}]' \\ \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": "

Allowed values: contactManager, integration, motionbar, jscripty, urlForward, browser

" }, { "group": "Body", "type": "String", "optional": true, "field": "data1", "description": "

contactManager[ListId], integration[intName(zendesk)], motionbar[Popup(0),URL(1),WinApp(2)], urlForward[GET,POST], browser[TemplateId(0),URL(1)]

" }, { "group": "Body", "type": "String", "optional": true, "field": "data2", "description": "

integration[AccountId], motionbar[TemplateId,URL,WinAppPath], urlForward[URL]

" }, { "group": "Body", "type": "String", "optional": true, "field": "data3", "description": "

motionbar[NULL,NULL,WinAppArguments]

" }, { "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"john.doe@xcally.com\", \"...\": \"...\"}]' \\ \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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/automation/index.js", "groupTitle": "Automations" }, { "type": "post", "url": "/api/campaigns/{id}/blacklists", "title": "Add blacklists to a 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": "Campaigns", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "post", "url": "/api/campaigns/{id}/lists", "title": "Add lists to a 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": "Campaigns", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "post", "url": "/api/campaigns", "title": "Creates a new 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": "CreateCampaigns", "group": "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": "

Active/Disactive Campaign

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "limitCalls", "description": "

Max 200 calls.

" }, { "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": "

Originate Timeout Seconds (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialCongestionMaxRetry", "description": "

#Congestion Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialCongestionRetryFrequency", "description": "

Congestion Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialBusyMaxRetry", "description": "

#Busy Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialBusyRetryFrequency", "description": "

Busy Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialNoAnswerMaxRetry", "description": "

#NoAnswer Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialNoAnswerRetryFrequency", "description": "

NoAnswer Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialGlobalMaxRetry", "description": "

#Global Max Retry (min:1, max:999)

" }, { "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": "

Active/Disactive AMD

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDInitialSilence", "description": "

#AMD Initial Silence

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDGreeting", "description": "

#AMD Greeting

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDAfterGreetingSilence", "description": "

#AMD After Greeting Silence

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDTotalAnalysisTime", "description": "

#AMD Total Analysis Time

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDMinWordLength", "description": "

#AMD Min Word Length

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDBetweenWordsSilence", "description": "

#AMD Between Words Silence

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDMaximumNumberOfWords", "description": "

#AMD Maximum Number Of Words

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDSilenceThreshold", "description": "

#AMD Silence Threshold (min:0, max:32767)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDMaximumWordLength", "description": "

#AMD Maximum Word Length

" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "delete", "url": "/api/campaigns/{id}", "title": "Deletes a Campaign", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/campaigns/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteCampaigns", "group": "Campaigns", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/blacklists", "title": "Get 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns", "title": "Gets a list of Campaigns", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/campaigns -v -u {name}:{password}", "type": "json" } ], "name": "GetCampaigns", "group": "Campaigns", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/campaigns?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/campaigns?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/campaigns?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/campaigns?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/campaigns?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/finals", "title": "Gets 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/hopper_histories", "title": "Gets 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/hoppers", "title": "Gets 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/lists", "title": "Get 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "delete", "url": "/api/campaigns/{id}/blacklists", "title": "Remove blacklists from a 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": "Campaigns", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "delete", "url": "/api/campaigns/{id}/lists", "title": "Remove lists from a 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": "Campaigns", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}", "title": "Gets a single Campaign", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/campaigns/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowCampaigns", "group": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/blacks", "title": "Gets 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "put", "url": "/api/campaigns/{id}", "title": "Update an existing 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": "updateCampaigns", "group": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "post", "url": "/api/canned_answers", "title": "Creates a new Canned Answer", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/canned_answers -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateCanned_Answers", "group": "Canned_Answers", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/canned_answers?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/canned_answers?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/canned_answers?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/canned_answers?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/canned_answers?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cannedAnswer/index.js", "groupTitle": "Canned_Answers" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatApplication/index.js", "groupTitle": "Chat_Applications" }, { "type": "post", "url": "/api/chat/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Chat_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatDisposition/index.js", "groupTitle": "Chat_Dispositions" }, { "type": "delete", "url": "/api/chat/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Chat_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatDisposition/index.js", "groupTitle": "Chat_Dispositions" }, { "type": "get", "url": "/api/chat/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Chat_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatDisposition/index.js", "groupTitle": "Chat_Dispositions" }, { "type": "put", "url": "/api/chat/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Chat_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatDisposition/index.js", "groupTitle": "Chat_Dispositions" }, { "type": "delete", "url": "/api/chat/enquiries/{id}", "title": "Deletes a Enquiry", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/enquiries/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteEnquiries", "group": "Chat_Enquiries", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatEnquiry/index.js", "groupTitle": "Chat_Enquiries" }, { "type": "get", "url": "/api/chat/enquiries/{id}", "title": "Gets a single Enquiry", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/enquiries/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowEnquiries", "group": "Chat_Enquiries", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatEnquiry/index.js", "groupTitle": "Chat_Enquiries" }, { "type": "put", "url": "/api/chat/enquiries/{id}", "title": "Update an existing Enquiry", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/enquiries/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateEnquiries", "group": "Chat_Enquiries", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatEnquiry/index.js", "groupTitle": "Chat_Enquiries" }, { "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": "String", "optional": true, "field": "closedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "note", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/interactions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/interactions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/interactions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/interactions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/interactions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "allowedValues": [ "\"in\"", "\"out\"" ], "optional": false, "field": "direction", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatInteraction/index.js", "groupTitle": "Chat_Interactions" }, { "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": "String", "allowedValues": [ "\"in\"", "\"out\"" ], "optional": false, "field": "direction", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatMessage/index.js", "groupTitle": "Chat_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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatProactiveAction/index.js", "groupTitle": "Chat_Proactive_Actions" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatQueue/index.js", "groupTitle": "Chat_Queues" }, { "type": "post", "url": "/api/chat/session/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "Chat_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "websitename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "websiteaddress", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "websiteid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitorid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitorname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitoremail", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "fidelity", "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": "completeAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "complete", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"agent\"", "\"requester\"" ], "optional": true, "field": "completeReason", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "abandon", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeslot", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "post", "url": "/api/chat/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "Chat_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "timeslot", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "websitename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "websiteaddress", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "websiteid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitorid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitorname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitoremail", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "calledAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "delete", "url": "/api/chat/session/reports/{id}", "title": "Deletes a Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "delete", "url": "/api/chat/reports/{id}", "title": "Deletes a Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "get", "url": "/api/chat/session/reports/describe", "title": "Gets table info about Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports/describe -v -u {name}:{password}", "type": "json" } ], "name": "DescribeReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "get", "url": "/api/chat/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Chat_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/chatReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "get", "url": "/api/chat/session/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Chat_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/session/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/session/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/session/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/session/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/session/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "get", "url": "/api/chat/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "get", "url": "/api/chat/session/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "put", "url": "/api/chat/reports/{id}", "title": "Update an existing Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "put", "url": "/api/chat/session/reports/{id}", "title": "Update an existing Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "delete", "url": "/api/chat/visitors/{id}", "title": "Deletes a Visitor", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/visitors/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteVisitors", "group": "Chat_Visitors", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatVisitor/index.js", "groupTitle": "Chat_Visitors" }, { "type": "get", "url": "/api/chat/visitors/{id}", "title": "Gets a single Visitor", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/visitors/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowVisitors", "group": "Chat_Visitors", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatVisitor/index.js", "groupTitle": "Chat_Visitors" }, { "type": "put", "url": "/api/chat/visitors/{id}", "title": "Update an existing Visitor", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/visitors/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateVisitors", "group": "Chat_Visitors", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatVisitor/index.js", "groupTitle": "Chat_Visitors" }, { "type": "delete", "url": "/api/chat/website_fields/{id}", "title": "Deletes a Website Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/website_fields/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteWebsite_Fields", "group": "Chat_Website_Fields", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsiteField/index.js", "groupTitle": "Chat_Website_Fields" }, { "type": "get", "url": "/api/chat/website_fields/{id}", "title": "Gets a single Website Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/website_fields/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowWebsite_Fields", "group": "Chat_Website_Fields", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsiteField/index.js", "groupTitle": "Chat_Website_Fields" }, { "type": "put", "url": "/api/chat/website_fields/{id}", "title": "Update an existing Website Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/website_fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateWebsite_Fields", "group": "Chat_Website_Fields", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsiteField/index.js", "groupTitle": "Chat_Website_Fields" }, { "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": "color", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "color_button", "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": "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": "onlineForm", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "offlineForm", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/websites?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/websites?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/websites?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/websites?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/websites?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatMessage/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": "String", "optional": true, "field": "appdata", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"Satisfied\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDisposition", "group": "Chat_Websites", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsite/index.js", "groupTitle": "Chat_Websites" }, { "type": "post", "url": "/api/chat/websites/{id}/dispositions", "title": "Creates many dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/websites/{id}/dispositions -d '[{\"name\": \"Satisfied\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDispositions", "group": "Chat_Websites", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": true, "field": "closedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "note", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsite/index.js", "groupTitle": "Chat_Websites" }, { "type": "get", "url": "/api/chat/websites/{id}/dispositions", "title": "Gets Website 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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsite/index.js", "groupTitle": "Chat_Websites" }, { "type": "get", "url": "/api/chat/websites/{id}/online_fields", "title": "Gets Website Online Fields", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/websites/{id}/online_fields -v -u {name}:{password} -X GET", "type": "json" } ], "name": "getOnlineFields", "group": "Chat_Websites", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsite/index.js", "groupTitle": "Chat_Websites" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/companies?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/companies?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/companies?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/companies?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/companies?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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\": \"john.doe@xcally.com\", \"...\": \"...\"}]' \\ \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": "tags", "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": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": false, "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/contacts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/contacts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/contacts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/contacts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/contacts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmContact/index.js", "groupTitle": "Cm_Contacts" }, { "type": "post", "url": "/api/cm/contacts", "title": "Create Contacts", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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 '{\"fullName\": \"John\", \"lastName\": \"Doe\"}' -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "update", "group": "Cm_Contacts", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/custom_fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/custom_fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/custom_fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/custom_fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/custom_fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/hopper?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/hopper?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/hopper?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/hopper?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/hopper?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/hopper_black?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/hopper_black?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/hopper_black?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/hopper_black?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/hopper_black?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/hopper_final?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/hopper_final?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/hopper_final?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/hopper_final?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/hopper_final?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmHopperFinal/index.js", "groupTitle": "Cm_Hopper_Final" }, { "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/hopper_history?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/hopper_history?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/hopper_history?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/hopper_history?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/hopper_history?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmHopper/index.js", "groupTitle": "Cm_Hopper" }, { "type": "get", "url": "/api/cm/hopper/preview", "title": "Gets Preview Dialer Contacts", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/cm/hopper/preview -v -u {name}:{password} -X GET", "type": "json" } ], "name": "getPreview", "group": "Cm_Hopper", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/lists?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/lists?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/lists?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/lists?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/lists?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"john.doe@xcally.com\", \"...\": \"...\"}]' \\ \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": "tags", "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": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": false, "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmList/index.js", "groupTitle": "Cm_Lists" }, { "type": "post", "url": "/api/lists/{id}/dispositions", "title": "Creates a new sub disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/lists/{id}/disposition -d '{\"name\": \"SATISFIED\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDisposition", "group": "Cm_Lists", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmList/index.js", "groupTitle": "Cm_Lists" }, { "type": "get", "url": "/api/cm/lists/{id}/dispositions", "title": "Gets 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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmList/index.js", "groupTitle": "Cm_Lists" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmCustomField/index.js", "groupTitle": "Custom_Fields" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/dashboardItem/index.js", "groupTitle": "Dashboard_Items" }, { "type": "put", "url": "/api/dashboards/items/{id}", "title": "Update an existing Dashboard Item", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/dashboards/items/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDashboard_Items", "group": "Dashboard_Items", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/dashboardItem/index.js", "groupTitle": "Dashboard_Items" }, { "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": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "interval", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/dashboards?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/dashboards?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/dashboards?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/dashboards?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/dashboards?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/dashboard/index.js", "groupTitle": "Dashboards" }, { "type": "get", "url": "/api/dashboards/{id}/run", "title": "Run dashboard widgets queries", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/dashboards/{id}/run -v -u {name}:{password} -X GET", "type": "json" } ], "name": "run", "group": "Dashboards", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "Dashboars", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/dashboard/index.js", "groupTitle": "Dashboars" }, { "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", "allowedValues": [ "\"integrationTab\"", "\"newTab\"" ], "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/desk/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/desk/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/desk/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/desk/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/desk/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/desk/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/desk/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/desk/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/desk/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/desk/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intDeskConfiguration/index.js", "groupTitle": "Desk_Configurations" }, { "type": "post", "url": "/api/integrations/desk/fields", "title": "Creates a new Desk Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/desk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDesk_Fields", "group": "Desk_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "nameField", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "customField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/desk/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/desk/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/desk/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/desk/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/desk/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intDeskField/index.js", "groupTitle": "Desk_Fields" }, { "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": "Boolean", "optional": true, "field": "fidelity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "acceptUrl", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "acceptMethod", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "rejectMethod", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "actions", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closeUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "closeMethod", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "allowedValues": [ "\"queue\"", "\"agent\"", "\"sendMail\"", "\"sendSms\"" ], "optional": false, "field": "app", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "priority", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data1", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data2", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data3", "description": "" }, { "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": "Blob", "optional": true, "field": "data7", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data8", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data9", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data10", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"Satisfied\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDisposition", "group": "Fax_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAccount/index.js", "groupTitle": "Fax_Accounts" }, { "type": "post", "url": "/api/fax/accounts/{id}/dispositions", "title": "Creates many dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/accounts/{id}/dispositions -d '[{\"name\": \"Satisfied\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDispositions", "group": "Fax_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": true, "field": "contact", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "faxIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "faxOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENT\"", "\"SENDING\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAccount/index.js", "groupTitle": "Fax_Accounts" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxApplication/index.js", "groupTitle": "Fax_Applications" }, { "type": "post", "url": "/api/fax/attachments", "title": "Creates a new Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/attachments -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateAttachments", "group": "Fax_Attachments", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "path", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "basename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAttachment/index.js", "groupTitle": "Fax_Attachments" }, { "type": "delete", "url": "/api/fax/attachments/{id}", "title": "Deletes a Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/attachments/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteAttachments", "group": "Fax_Attachments", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAttachment/index.js", "groupTitle": "Fax_Attachments" }, { "type": "get", "url": "/api/fax/attachments", "title": "Gets a list of Attachments", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/attachments -v -u {name}:{password}", "type": "json" } ], "name": "GetAttachments", "group": "Fax_Attachments", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/attachments?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/attachments?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/attachments?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/attachments?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/attachments?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/faxAttachment/index.js", "groupTitle": "Fax_Attachments" }, { "type": "get", "url": "/api/fax/attachments/{id}", "title": "Gets a single Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/attachments/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowAttachments", "group": "Fax_Attachments", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAttachment/index.js", "groupTitle": "Fax_Attachments" }, { "type": "put", "url": "/api/fax/attachments/{id}", "title": "Update an existing Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/attachments/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateAttachments", "group": "Fax_Attachments", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAttachment/index.js", "groupTitle": "Fax_Attachments" }, { "type": "post", "url": "/api/fax/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Fax_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxDisposition/index.js", "groupTitle": "Fax_Dispositions" }, { "type": "delete", "url": "/api/fax/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Fax_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxDisposition/index.js", "groupTitle": "Fax_Dispositions" }, { "type": "get", "url": "/api/fax/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Fax_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxDisposition/index.js", "groupTitle": "Fax_Dispositions" }, { "type": "put", "url": "/api/fax/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Fax_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxDisposition/index.js", "groupTitle": "Fax_Dispositions" }, { "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": "String", "optional": true, "field": "contact", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "faxIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "faxOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENT\"", "\"SENDING\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/interactions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/interactions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/interactions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/interactions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/interactions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": false, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "to", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENT\"", "\"SENDING\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "status", "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": "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": "Integer", "optional": true, "field": "priority", "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": "localstationid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remotestationid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "pagestransferred", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "resolution", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "transferrate", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "filename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastStatus", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "error", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "text", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "retry", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxInteraction/index.js", "groupTitle": "Fax_Interactions" }, { "type": "post", "url": "/api/fax/messages", "title": "Creates a new Message", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateMessages", "group": "Fax_Messages", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "to", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENT\"", "\"SENDING\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "status", "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": "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": "Integer", "optional": true, "field": "priority", "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": "localstationid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remotestationid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "pagestransferred", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "resolution", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "transferrate", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "filename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastStatus", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "error", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "text", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "retry", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxMessage/index.js", "groupTitle": "Fax_Messages" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxMessage/index.js", "groupTitle": "Fax_Messages" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxQueue/index.js", "groupTitle": "Fax_Queues" }, { "type": "post", "url": "/api/fax/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "Fax_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeslot", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountphone", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "messageid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "calledAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "from", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxReport/index.js", "groupTitle": "Fax_Reports" }, { "type": "delete", "url": "/api/fax/reports/{id}", "title": "Deletes a Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteReports", "group": "Fax_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxReport/index.js", "groupTitle": "Fax_Reports" }, { "type": "get", "url": "/api/fax/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Fax_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/faxReport/index.js", "groupTitle": "Fax_Reports" }, { "type": "get", "url": "/api/fax/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Fax_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxReport/index.js", "groupTitle": "Fax_Reports" }, { "type": "put", "url": "/api/fax/reports/{id}", "title": "Update an existing Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateReports", "group": "Fax_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxReport/index.js", "groupTitle": "Fax_Reports" }, { "type": "post", "url": "/api/fax/sessions/reports", "title": "Creates a new Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateSession_Reports", "group": "Fax_Session_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountphone", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "fidelity", "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": "completeAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "complete", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"agent\"" ], "optional": true, "field": "completeReason", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeslot", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "delete", "url": "/api/fax/sessions/reports/{id}", "title": "Deletes a Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteSession_Reports", "group": "Fax_Session_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "get", "url": "/api/fax/sessions/reports/describe", "title": "Gets table info about Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports/describe -v -u {name}:{password}", "type": "json" } ], "name": "DescribeSession_Reports", "group": "Fax_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "get", "url": "/api/fax/sessions/reports", "title": "Gets a list of Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetSession_Reports", "group": "Fax_Session_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/sessions/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/sessions/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/sessions/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/sessions/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/sessions/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "get", "url": "/api/fax/sessions/reports/{id}", "title": "Gets a single Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowSession_Reports", "group": "Fax_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "put", "url": "/api/fax/sessions/reports/{id}", "title": "Update an existing Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateSession_Reports", "group": "Fax_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "post", "url": "/api/integrations/freshdesk/accounts", "title": "Creates a new Freshdesk Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/freshdesk/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateFreshdesk_Accounts", "group": "Freshdesk_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "username", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "apiKey", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remoteUri", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "serverUrl", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/freshdesk/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/freshdesk/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/freshdesk/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/freshdesk/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/freshdesk/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/freshdesk/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/freshdesk/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/freshdesk/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/freshdesk/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/freshdesk/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intFreshdeskConfiguration/index.js", "groupTitle": "Freshdesk_Configurations" }, { "type": "post", "url": "/api/integrations/freshdesk/fields", "title": "Creates a new Freshdesk Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/freshdesk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateFreshdesk_Fields", "group": "Freshdesk_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "nameField", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "customField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/freshdesk/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/freshdesk/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/freshdesk/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/freshdesk/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/freshdesk/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intFreshdeskField/index.js", "groupTitle": "Freshdesk_Fields" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/intervals?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/intervals?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/intervals?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/intervals?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/intervals?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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 -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addIntervals", "group": "Intervals", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/jira/index.js", "groupTitle": "Issue" }, { "type": "post", "url": "/api/jscripty/answers/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/jscripty/answers/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "JscriptyAnswerReport", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "question", "description": "" }, { "group": "Body", "type": "String", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/jscripty/answers/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/jscripty/answers/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/jscripty/answers/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/jscripty/answers/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/jscripty/answers/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/jscriptyAnswerReport/index.js", "groupTitle": "JscriptyAnswerReport" }, { "type": "post", "url": "/api/jscripty/questions/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/jscripty/questions/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "JscriptyQuestionReport", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "question", "description": "" }, { "group": "Body", "type": "String", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/jscripty/questions/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/jscripty/questions/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/jscripty/questions/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/jscripty/questions/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/jscripty/questions/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/jscripty/sessions/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/jscripty/sessions/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/jscripty/sessions/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/jscripty/sessions/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/jscripty/sessions/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/jscriptySessionReport/index.js", "groupTitle": "JscriptySessionReport" }, { "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/jscripty/projects?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/jscripty/projects?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/jscripty/projects?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/jscripty/projects?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/jscripty/projects?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/license/index.js", "groupTitle": "License" }, { "type": "put", "url": "/api/license/{id}", "title": "Update an existing License", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/license/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateLiense", "group": "License", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/license/index.js", "groupTitle": "License" }, { "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": "String", "optional": true, "field": "username", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "password", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "port", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mailbox", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "ssl", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "delete", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"UNSEEN\"" ], "optional": true, "field": "filter", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"IMAP\"", "\"POP3\"" ], "optional": true, "field": "protocol", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"CONNECTING\"", "\"CONNECTED\"", "\"DISCONNECTED\"", "\"ERROR\"", "\"UNKNOWN\"" ], "optional": true, "field": "state", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "source", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "connTimeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "authTimeout", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "keepalive", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "service", "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": "state", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "authentication", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAccount/index.js", "groupTitle": "Mail_Accounts" }, { "type": "post", "url": "/api/mail/accounts", "title": "Creates a new Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateAccounts", "group": "Mail_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "fidelity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "whiteLabel", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "acceptUrl", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "acceptMethod", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "rejectMethod", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "actions", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closeUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "closeMethod", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "signature", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "custom", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "service", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "email", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAccount/index.js", "groupTitle": "Mail_Accounts" }, { "type": "delete", "url": "/api/mail/accounts/{id}", "title": "Deletes a Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/accounts/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteAccounts", "group": "Mail_Accounts", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "allowedValues": [ "\"queue\"", "\"agent\"", "\"sendMail\"", "\"replyMail\"", "\"sendSms\"" ], "optional": true, "field": "app", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "priority", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data1", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data2", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data3", "description": "" }, { "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": "Blob", "optional": true, "field": "data7", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data8", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data9", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data10", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\"}' \\ \n -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": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAccount/index.js", "groupTitle": "Mail_Accounts" }, { "type": "post", "url": "/api/mail/accounts/{id}/dispositions", "title": "Creates many dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/accounts/{id}/dispositions -d '[{\"name\": \"vip\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDispositions", "group": "Mail_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": true, "field": "subject", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "attachment", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "mailIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "mailOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "deleted", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "ParentId", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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\" '}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "sendMail", "group": "Mail_Accounts", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailApplication/index.js", "groupTitle": "Mail_Applications" }, { "type": "post", "url": "/api/mail/attachments", "title": "Creates a new Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/attachments -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateAttachments", "group": "Mail_Attachments", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "domain", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "size", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "path", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "basename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAttachment/index.js", "groupTitle": "Mail_Attachments" }, { "type": "delete", "url": "/api/mail/attachments/{id}", "title": "Deletes a Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/attachments/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteAttachments", "group": "Mail_Attachments", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAttachment/index.js", "groupTitle": "Mail_Attachments" }, { "type": "get", "url": "/api/mail/attachments", "title": "Gets a list of Attachments", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/attachments -v -u {name}:{password}", "type": "json" } ], "name": "GetAttachments", "group": "Mail_Attachments", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/attachments?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/attachments?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/attachments?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/attachments?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/attachments?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/mailAttachment/index.js", "groupTitle": "Mail_Attachments" }, { "type": "get", "url": "/api/mail/attachments/{id}", "title": "Gets a single Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/attachments/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowAttachments", "group": "Mail_Attachments", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAttachment/index.js", "groupTitle": "Mail_Attachments" }, { "type": "put", "url": "/api/mail/attachments/{id}", "title": "Update an existing Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/attachments/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateAttachments", "group": "Mail_Attachments", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAttachment/index.js", "groupTitle": "Mail_Attachments" }, { "type": "post", "url": "/api/mail/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Mail_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailDisposition/index.js", "groupTitle": "Mail_Dispositions" }, { "type": "delete", "url": "/api/mail/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Mail_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailDisposition/index.js", "groupTitle": "Mail_Dispositions" }, { "type": "get", "url": "/api/mail/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Mail_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailDisposition/index.js", "groupTitle": "Mail_Dispositions" }, { "type": "put", "url": "/api/mail/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Mail_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailDisposition/index.js", "groupTitle": "Mail_Dispositions" }, { "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": "String", "optional": true, "field": "subject", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "attachment", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "mailIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "mailOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "deleted", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "ParentId", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/interactions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/interactions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/interactions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/interactions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/interactions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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\": \"sales@xcally.com\", \"...\": \"...\"}]' \\ \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": "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": "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": "Integer", "optional": true, "field": "fromId", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "attachment", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "text", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "html", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "auto", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "retry", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "voiceSource", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "userName", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "userFullname", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "accountId", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailInteraction/index.js", "groupTitle": "Mail_Interactions" }, { "type": "post", "url": "/api/mail/messages", "title": "Creates a new Message", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateMessages", "group": "Mail_Messages", "parameter": { "fields": { "Body": [ { "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": "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": "Integer", "optional": true, "field": "fromId", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "attachment", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "text", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "html", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "auto", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "retry", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "voiceSource", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "userName", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "userFullname", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "accountId", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailMessage/index.js", "groupTitle": "Mail_Messages" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailMessage/index.js", "groupTitle": "Mail_Messages" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "lastAgent", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailQueue/index.js", "groupTitle": "Mail_Queues" }, { "type": "get", "url": "/api/mail/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Mail_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/mailReport/index.js", "groupTitle": "Mail_Reports" }, { "type": "get", "url": "/api/mail/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Mail_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailReport/index.js", "groupTitle": "Mail_Reports" }, { "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": "service", "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": "state", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "authentication", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/out_servers?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/out_servers?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/out_servers?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/out_servers?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/out_servers?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailServerOut/index.js", "groupTitle": "Mail_SMTP" }, { "type": "get", "url": "/api/mail/sessions/reports/describe", "title": "Gets table info about Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/sessions/reports/describe -v -u {name}:{password}", "type": "json" } ], "name": "DescribeSession_Reports", "group": "Mail_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailSessionReport/index.js", "groupTitle": "Mail_Session_Reports" }, { "type": "get", "url": "/api/mail/sessions/reports", "title": "Gets a list of Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/sessions/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetSession_Reports", "group": "Mail_Session_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/sessions/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/sessions/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/sessions/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/sessions/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/sessions/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/mailSessionReport/index.js", "groupTitle": "Mail_Session_Reports" }, { "type": "get", "url": "/api/mail/sessions/reports/{id}", "title": "Gets a single Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/sessions/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowSession_Reports", "group": "Mail_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailSessionReport/index.js", "groupTitle": "Mail_Session_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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/members/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/members/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/members/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/members/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/members/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/memberReport/index.js", "groupTitle": "Member_Reports" }, { "type": "post", "url": "/api/voice/networks", "title": "Create a new network", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/networks -v -u {name}:{password} -X POST", "type": "json" } ], "name": "Create", "group": "Networks", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/networks?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/networks?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/networks?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/networks?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/networks?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/network/index.js", "groupTitle": "Networks" }, { "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": "replyUri", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelAccount/index.js", "groupTitle": "Openchannel_Accounts" }, { "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_Accounts", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelMessage/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": "String", "optional": true, "field": "appdata", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"Satisfied\"}' \\ \n -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": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelAccount/index.js", "groupTitle": "Openchannel_Accounts" }, { "type": "post", "url": "/api/openchannel/accounts/{id}/dispositions", "title": "Creates many dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/accounts/{id}/dispositions -d '[{\"name\": \"Satisfied\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDispositions", "group": "Openchannel_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelAccount/index.js", "groupTitle": "Openchannel_Accounts" }, { "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_Accounts", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelMessage/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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": true, "field": "appdata", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/applications?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/applications?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/applications?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/applications?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/applications?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelApplication/index.js", "groupTitle": "Openchannel_Applications" }, { "type": "post", "url": "/api/openchannel/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Openchannel_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelDisposition/index.js", "groupTitle": "Openchannel_Dispositions" }, { "type": "delete", "url": "/api/openchannel/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Openchannel_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelDisposition/index.js", "groupTitle": "Openchannel_Dispositions" }, { "type": "get", "url": "/api/openchannel/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Openchannel_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelDisposition/index.js", "groupTitle": "Openchannel_Dispositions" }, { "type": "put", "url": "/api/openchannel/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Openchannel_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelDisposition/index.js", "groupTitle": "Openchannel_Dispositions" }, { "type": "post", "url": "/api/openchannel/interactions", "title": "Creates a new Interaction", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateInteractions", "group": "Openchannel_Interactions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "Boolean", "optional": true, "field": "closed", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "note", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/interactions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/interactions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/interactions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/interactions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/interactions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "allowedValues": [ "\"in\"", "\"out\"" ], "optional": false, "field": "direction", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "allowedValues": [ "\"in\"", "\"out\"" ], "optional": false, "field": "direction", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelMessage/index.js", "groupTitle": "Openchannel_Messages" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelQueue/index.js", "groupTitle": "Openchannel_Queues" }, { "type": "post", "url": "/api/openchannel/reports", "title": "Creates a new Openchannel Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateOpenchannel_Reports", "group": "Openchannel_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "timeslot", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "messageid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "calledAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelReport/index.js", "groupTitle": "Openchannel_Reports" }, { "type": "delete", "url": "/api/openchannel/reports/{id}", "title": "Deletes a Openchannel Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteOpenchannel_Reports", "group": "Openchannel_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelReport/index.js", "groupTitle": "Openchannel_Reports" }, { "type": "get", "url": "/api/openchannel/reports", "title": "Gets a list of Openchannel Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetOpenchannel_Reports", "group": "Openchannel_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/openchannelReport/index.js", "groupTitle": "Openchannel_Reports" }, { "type": "get", "url": "/api/openchannel/reports/{id}", "title": "Gets a single Openchannel Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowOpenchannel_Reports", "group": "Openchannel_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelReport/index.js", "groupTitle": "Openchannel_Reports" }, { "type": "put", "url": "/api/openchannel/reports/{id}", "title": "Update an existing Openchannel Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateOpenchannel_Reports", "group": "Openchannel_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelReport/index.js", "groupTitle": "Openchannel_Reports" }, { "type": "get", "url": "/api/openchannel/sessions/reports/describe", "title": "Gets table info about Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/sessions/reports/describe -v -u {name}:{password}", "type": "json" } ], "name": "DescribeSession_Reports", "group": "Openchannel_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelSessionReport/index.js", "groupTitle": "Openchannel_Session_Reports" }, { "type": "get", "url": "/api/openchannel/sessions/reports", "title": "Gets a list of Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/sessions/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetSession_Reports", "group": "Openchannel_Session_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/sessions/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/sessions/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/sessions/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/sessions/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/sessions/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/openchannelSessionReport/index.js", "groupTitle": "Openchannel_Session_Reports" }, { "type": "get", "url": "/api/openchannel/sessions/reports/{id}", "title": "Gets a single Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/sessions/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowSession_Reports", "group": "Openchannel_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelSessionReport/index.js", "groupTitle": "Openchannel_Session_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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/pauses?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/pauses?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/pauses?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/pauses?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/pauses?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/pause/index.js", "groupTitle": "Pauses" }, { "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion returns the pm2 processes list.

", "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": "updateProcesses", "group": "Pm2", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime campaigns parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime agents parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime outbound channels.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of telephones parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime trunks parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a specific realtime voice queue channel.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will hangup a specific realtime voice queue channel.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will redirect a specific realtime voice queue channel to a specific extension.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a specific preview contact.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime outbound parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime voice queues parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime voice queues channels.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/rpc/index.js", "groupTitle": "RPC_Realtime" }, { "type": "post", "url": "/api/integrations/salesforce/accounts", "title": "Creates a new Salesforce Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/salesforce/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateSalesforce_Accounts", "group": "Salesforce_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "username", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remoteUri", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "password", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "clientId", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "clientSecret", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "securityToken", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "serverUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"integrationTab\"", "\"newTab\"" ], "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/salesforce/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/salesforce/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/salesforce/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/salesforce/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/salesforce/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/salesforce/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/salesforce/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/salesforce/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/salesforce/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/salesforce/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intSalesforceConfiguration/index.js", "groupTitle": "Salesforce_Configurations" }, { "type": "post", "url": "/api/integrations/salesforce/fields", "title": "Creates a new Salesforce Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/salesforce/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateSalesforce_Fields", "group": "Salesforce_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/salesforce/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/salesforce/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/salesforce/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/salesforce/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/salesforce/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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\"", "\"xls\"" ], "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/schedules?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/schedules?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/schedules?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/schedules?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/schedules?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/schedule/index.js", "groupTitle": "Schedules" }, { "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/settings?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/settings?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/settings?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/settings?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/settings?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/setting/index.js", "groupTitle": "Settings" }, { "type": "put", "url": "/api/settings/{id}", "title": "Update settings", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/settings/{id} -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "Update", "group": "Settings", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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 -u {name}:{password} -X GET", "type": "json" } ], "name": "getLogo", "group": "Settings", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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 -u {name}:{password} -X GET", "type": "json" } ], "name": "getLogoLogin", "group": "Settings", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/setting/index.js", "groupTitle": "Settings" }, { "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": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"twilio\"", "\"skebby\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"basic\"", "\"classic\"", "\"classic+\"" ], "optional": true, "field": "smstype", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remote", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "fidelity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "phone", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "sid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "token", "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": "acceptUrl", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "acceptMethod", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "rejectMethod", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closeUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "closeMethod", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "actions", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "allowedValues": [ "\"queue\"", "\"agent\"" ], "optional": true, "field": "app", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "priority", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data1", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data2", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data3", "description": "" }, { "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": "Blob", "optional": true, "field": "data7", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data8", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data9", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data10", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"Satisfied\"}' \\ \n -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": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsAccount/index.js", "groupTitle": "Sms_Accounts" }, { "type": "post", "url": "/api/sms/accounts/{id}/dispositions", "title": "Creates many dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/accounts/{id}/dispositions -d '[{\"name\": \"Satisfied\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDispositions", "group": "Sms_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsAccount/index.js", "groupTitle": "Sms_Accounts" }, { "type": "post", "url": "/api/sms/accounts/{id}/interactions", "title": "Creates new interactions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/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": "Sms_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "contact", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "smsIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "smsOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "ParentId", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "voiceSource", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsAccount/index.js", "groupTitle": "Sms_Accounts" }, { "type": "get", "url": "/api/sms/accounts/{id}/interactions", "title": "Gets account interactions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/accounts/{id}/interactions -v -u {name}:{password} -X GET", "type": "json" } ], "name": "getInteraction", "group": "Sms_Accounts", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsAccount/index.js", "groupTitle": "Sms_Accounts" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsApplication/index.js", "groupTitle": "Sms_Applications" }, { "type": "post", "url": "/api/sms/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Sms_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsDisposition/index.js", "groupTitle": "Sms_Dispositions" }, { "type": "delete", "url": "/api/sms/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Sms_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsDisposition/index.js", "groupTitle": "Sms_Dispositions" }, { "type": "get", "url": "/api/sms/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Sms_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsDisposition/index.js", "groupTitle": "Sms_Dispositions" }, { "type": "put", "url": "/api/sms/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Sms_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsDisposition/index.js", "groupTitle": "Sms_Dispositions" }, { "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": "String", "optional": true, "field": "contact", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "smsIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "smsOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "ParentId", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "voiceSource", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/interactions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/interactions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/interactions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/interactions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/interactions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": false, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "to", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "body", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "errorcode", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "skebby_message_id", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "res_data", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "source", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "auto", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": false, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "to", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "body", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "errorcode", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "skebby_message_id", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "res_data", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "source", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "auto", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsMessage/index.js", "groupTitle": "Sms_Messages" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "lastAgent", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsQueue/index.js", "groupTitle": "Sms_Queues" }, { "type": "post", "url": "/api/sms/session/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "Sms_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "subject", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountaddress", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "fidelity", "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": "completeAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "complete", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"agent\"" ], "optional": true, "field": "completeReason", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeslot", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "post", "url": "/api/sms/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "Sms_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeslot", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountnumber", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "messageid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "calledAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "delete", "url": "/api/sms/session/reports/{id}", "title": "Deletes a Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "delete", "url": "/api/sms/reports/{id}", "title": "Deletes a Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "get", "url": "/api/sms/session/reports/describe", "title": "Gets table info about Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports/describe -v -u {name}:{password}", "type": "json" } ], "name": "DescribeReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "get", "url": "/api/sms/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Sms_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/smsReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "get", "url": "/api/sms/session/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Sms_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/session/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/session/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/session/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/session/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/session/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "get", "url": "/api/sms/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "get", "url": "/api/sms/session/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "put", "url": "/api/sms/reports/{id}", "title": "Update an existing Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "put", "url": "/api/sms/session/reports/{id}", "title": "Update an existing Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sounds?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sounds?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sounds?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sounds?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sounds?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/square/details/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/square/details/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/square/details/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/square/details/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/square/details/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/squareReportDetail/index.js", "groupTitle": "Square_Details_Reports" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/square/odbc?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/square/odbc?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/square/odbc?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/square/odbc?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/square/odbc?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/squareOdbc/index.js", "groupTitle": "Square_ODBC" }, { "type": "post", "url": "/api/square/projects", "title": "Creates a new Project", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/square/projects -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateProjects", "group": "Square_Projects", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "notes", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "preproduction", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "production", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/square/projects?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/square/projects?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/square/projects?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/square/projects?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/square/projects?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/squareRecording/index.js", "groupTitle": "Square_Recordings" }, { "type": "delete", "url": "/api/square/recordings/{id}", "title": "Deletes a Recording", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/square/recordings/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteRecordings", "group": "Square_Recordings", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/square/recordings?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/square/recordings?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/square/recordings?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/square/recordings?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/square/recordings?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/square/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/square/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/square/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/square/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/square/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/sugarcrm/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/sugarcrm/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/sugarcrm/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/sugarcrm/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/sugarcrm/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intSugarcrmConfiguration/index.js", "groupTitle": "SugarCRM_Configurations" }, { "type": "post", "url": "/api/integrations/sugarcrm/accounts", "title": "Creates a new Sugarcrm Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/sugarcrm/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateSugarcrm_Accounts", "group": "Sugarcrm_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "username", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "password", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remoteUri", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "serverUrl", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/sugarcrm/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/sugarcrm/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/sugarcrm/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/sugarcrm/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/sugarcrm/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intSugarcrmConfiguration/index.js", "groupTitle": "Sugarcrm_Configurations" }, { "type": "post", "url": "/api/integrations/sugarcrm/fields", "title": "Creates a new Sugarcrm Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/sugarcrm/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateSugarcrm_Fields", "group": "Sugarcrm_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "nameField", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "customField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/sugarcrm/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/sugarcrm/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/sugarcrm/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/sugarcrm/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/sugarcrm/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion returns the system information.

", "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": "description", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/tags?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/tags?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/tags?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/tags?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/tags?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/teams?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/teams?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/teams?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/teams?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/teams?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/team/index.js", "groupTitle": "Teams" }, { "type": "delete", "url": "/api/mail/queues/{id}/teams", "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "RemoveTeams", "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsQueue/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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelQueue/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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatQueue/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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceQueue/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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxQueue/index.js", "groupTitle": "Teams" }, { "type": "get", "url": "/api/teams/{id}", "title": "Gets a single Team", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/teams/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowTeams", "group": "Teams", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": true, "field": "subject", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "html", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/templates?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/templates?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/templates?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/templates?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/templates?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/triggers?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/triggers?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/triggers?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/triggers?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/triggers?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Allowed values: contactManager, integration, motionbar, jscripty, urlForward, browser

" }, { "group": "Body", "type": "String", "optional": true, "field": "data1", "description": "

contactManager[ListId], integration[intName(zendesk)], motionbar[Popup(0),URL(1),WinApp(2)], urlForward[GET,POST], browser[TemplateId(0),URL(1)]

" }, { "group": "Body", "type": "String", "optional": true, "field": "data2", "description": "

integration[AccountId], motionbar[TemplateId,URL,WinAppPath], urlForward[URL]

" }, { "group": "Body", "type": "String", "optional": true, "field": "data3", "description": "

motionbar[NULL,NULL,WinAppArguments]

" }, { "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/trigger/index.js", "groupTitle": "Triggers" }, { "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": "

String is deprecated. Please use an Array as ["udp", "tcp"]

" }, { "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": "

String is deprecated. Please use an Array as ["force_rport", "comedia"]

" }, { "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": "

String is deprecated. Please use an Array as ["ulaw", "alaw", "alaw"]

" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "autoframing", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "insecure", "description": "

String is deprecated. Please use an Array as ["port", "invite"]

" }, { "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/trunks?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/trunks?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/trunks?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/trunks?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/trunks?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/trunk/index.js", "groupTitle": "Trunks" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/user/index.js", "groupTitle": "Users" }, { "type": "post", "url": "/api/users/create_many", "title": "Creates many Users", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/users/create_many -d '[{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}]' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "BulkCreateUsers", "group": "Users", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "

The name of the user

" }, { "group": "Body", "type": "String", "optional": false, "field": "fullname", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "email", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"admin\"", "\"user\"", "\"agent\"", "\"telephone\"" ], "optional": false, "field": "role", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "password", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "provider", "description": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "internal", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "salt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "phone", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mobile", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "address", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "zipcode", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "userpic", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "city", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "country", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "online", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastLoginAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "voicePause", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "chatPause", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "mailPause", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "faxPause", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "smsPause", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "openchannelPause", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "pauseType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastPauseAt", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "chatCapacity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "mailCapacity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "faxCapacity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "smsCapacity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "openchannelCapacity", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarAutoAnswer", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarEnableSettings", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "phoneBarListenPort", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "phoneBarExpires", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarRemoteControl", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "phoneBarRemoteControlPort", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarEnableRecording", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarRingInUse", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "chanspy", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "host", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "ipaddr", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "port", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "regseconds", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "fullcontact", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "regserver", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "useragent", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "lastms", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"friend\"", "\"user\"", "\"peer\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "context", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"ALLOWED_NOT_SCREENED\"", "\"ALLOWED_PASSED_SCREEN\"", "\"ALLOWED_FAILED_SCREEN\"", "\"ALLOWED\"", "\"PROHIB_NOT_SCREENED\"", "\"PROHIB_PASSED_SCREEN\"", "\"PROHIB_FAILED_SCREEN\"", "\"PROHIB\"" ], "optional": true, "field": "callingpres", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "deny", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "permit", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "secret", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "md5secret", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remotesecret", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "transport", "description": "

String is deprecated. Please use an Array as ["udp", "tcp"]

" }, { "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": "

String is deprecated. Please use an Array as ["force_rport", "comedia"]

" }, { "group": "Body", "type": "String", "optional": true, "field": "callgroup", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "namedcallgroup", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "pickupgroup", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "namedpickupgroup", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "language", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "tonezone", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "disallow", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "allow", "description": "

String is deprecated. Please use an Array as ["ulaw", "alaw", "gsm"]

" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "autoframing", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "insecure", "description": "

String is deprecated. Please use an Array as ["port", "invite"]

" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "trustrpid", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "trust_id_outbound", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"", "\"never\"" ], "optional": true, "field": "progressinband", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "promiscredir", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "useclientcode", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "accountcode", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "setvar", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "callerid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "amaflags", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "callcounter", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "busylevel", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "allowoverlap", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "allowsubscribe", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "allowtransfer", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "ignoresdpversion", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "subscribecontext", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "template", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"", "\"always\"" ], "optional": true, "field": "videosupport", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "maxcallbitrate", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "rfc2833compensate", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mailbox", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"accept\"", "\"refuse\"", "\"originate\"" ], "optional": true, "field": "session_timers", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "session_expires", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "session_minse", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"uac\"", "\"uas\"" ], "optional": true, "field": "session_refresher", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "t38pt_usertpsource", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "regexten", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "fromdomain", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "fromuser", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "qualify", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "keepalive", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "defaultip", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "defaultuser", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "rtptimeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "rtpholdtimeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "rtpkeepalive", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "sendrpid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "outboundproxy", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "callbackextension", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timert1", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timerb", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "qualifyfreq", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "contactpermit", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "contactdeny", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "contactacl", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "unsolicited_mailbox", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "use_q850_reason", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "maxforwards", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "encryption", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "avpf", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "force_avp", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "icesupport", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "dtlsenable", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"", "\"fingerprint\"", "\"certificate\"" ], "optional": true, "field": "dtlsverify", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dtlsrekey", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlscertfile", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlsprivatekey", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlscipher", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlscafile", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlscapath", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"active\"", "\"passive\"", "\"actpass\"" ], "optional": true, "field": "dtlssetup", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlsfingerprint", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "usereqphone", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "recordonfeature", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "recordofffeature", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "call_limit", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "registertrying", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "subscribemwi", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "vmexten", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mohinterpret", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mohsuggest", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "parkinglot", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"", "\"nonat\"", "\"update\"", "\"update,nonat\"" ], "optional": true, "field": "canreinvite", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "loginInPause", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "resetPasswordToken", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "resetPasswordExpires", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "showWebBar", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "permissions", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "phoneBarUnconditionalNumber", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "phoneBarNoReplyNumber", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "phoneBarBusyNumber", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarUnconditional", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarNoReply", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarBusy", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarDnd", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/user/index.js", "groupTitle": "Users" }, { "type": "delete", "url": "/api/users/destroy_many?ids={ids}", "title": "Deletes many Users", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/users/destroy_many?ids=1&ids=2&ids=3 -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "BulkDeleteUsers", "group": "Users", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "DeleteUsers", "group": "Users", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetAgents", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetChatInteractions", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetContacts", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetLists", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetQueues", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetRecordings", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetTeams", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/users?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/users?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/users?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/users?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/users?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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}", "type": "json" } ], "name": "GetVoiceQueuesRt", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "Login", "group": "Users", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "Logout", "group": "Users", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "Pause", "group": "Users", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "Unpause", "group": "Users", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/variables?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/variables?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/variables?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/variables?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/variables?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion run the following command: git fetch origin master

", "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": "

Motion returns the current and latest motion version.

", "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": "

Motion run the following command: git pull

", "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": "

Motion run the following command: git reset --hard FETCH_HEAD

", "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": "

Motion run the following command: pm2 restart motion

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/agents/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/agents/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/agents/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/agents/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/agents/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/calls/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/calls/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/calls/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/calls/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/calls/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/chanspy?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/chanspy?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/chanspy?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/chanspy?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/chanspy?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/contexts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/contexts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/contexts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/contexts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/contexts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/dials/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/dials/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/dials/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/dials/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/dials/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceDialReport/index.js", "groupTitle": "Voice_Dial_Reports" }, { "type": "post", "url": "/api/voice/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Voice_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceDisposition/index.js", "groupTitle": "Voice_Dispositions" }, { "type": "delete", "url": "/api/voice/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Voice_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceDisposition/index.js", "groupTitle": "Voice_Dispositions" }, { "type": "get", "url": "/api/voice/dispositions", "title": "Gets a list of Dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/dispositions -v -u {name}:{password}", "type": "json" } ], "name": "GetDispositions", "group": "Voice_Dispositions", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/dispositions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/dispositions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/dispositions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/dispositions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/dispositions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/voiceDisposition/index.js", "groupTitle": "Voice_Dispositions" }, { "type": "get", "url": "/api/voice/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Voice_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceDisposition/index.js", "groupTitle": "Voice_Dispositions" }, { "type": "put", "url": "/api/voice/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Voice_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceDisposition/index.js", "groupTitle": "Voice_Dispositions" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/extensions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/extensions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/extensions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/extensions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/extensions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/mohs?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/mohs?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/mohs?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/mohs?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/mohs?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "maxsecs", "description": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "maxmsg", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/mails?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/mails?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/mails?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/mails?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/mails?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceMail/index.js", "groupTitle": "Voice_Mails" }, { "type": "post", "url": "/api/voice/mails/messages", "title": "Creates a new Message", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/mails/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateMessages", "group": "Voice_Messages", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "Virtual", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "msgnum", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dir", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "context", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "macrocontext", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "callerid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "origtime", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "duration", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mailboxuser", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mailboxcontext", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "recording", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "flag", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "msg_id", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "stamp", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/mails/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/mails/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/mails/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/mails/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/mails/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceMailMessage/index.js", "groupTitle": "Voice_Messages" }, { "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/queues/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/queues/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/queues/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/queues/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/queues/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": [ "\"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": "String", "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": "

Active/Disactive Campaign

" }, { "group": "Body", "type": "String", "allowedValues": [ "\"preview\"", "\"progressive\"", "\"power\"", "\"predictive\"" ], "optional": true, "field": "dialMethod", "description": "

Dial Method.

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialLimitChannel", "description": "

Max 9999 channels, 0 means unlimited.

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialLimitQueue", "description": "

Max 9999 member in queue(min:1, max:9999), 0 means unlimited.

" }, { "group": "Body", "type": "Float", "optional": true, "field": "dialPowerLevel", "description": "

Power Level: Calls for agents (min:1, max:10).

" }, { "group": "Body", "type": "String", "allowedValues": [ "\"agentBusyFactor\"", "\"dropRate\"" ], "optional": true, "field": "dialPredictiveOptimization", "description": "

Only for predictive method.

" }, { "group": "Body", "type": "Float", "optional": true, "field": "dialPredictiveOptimizationPercentage", "description": "

Predictive Optimization Percentage (min: 1, max: 95)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialPredictiveInterval", "description": "

Intervall Predictive Minutes (min:5 max:30)

" }, { "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": "

Originate Timeout Seconds (min:1, max:999)

" }, { "group": "Body", "type": "String", "optional": true, "field": "dialQueueOptions", "description": "

https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialQueueTimeout", "description": "

Queue Timeout Seconds (min:1, max:999)

" }, { "group": "Body", "type": "String", "optional": true, "field": "dialQueueProject", "description": "

AGI queue option (use: agi://127.0.0.1/square,<project_name>)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialCongestionMaxRetry", "description": "

#Congestion Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialCongestionRetryFrequency", "description": "

Congestion Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialBusyMaxRetry", "description": "

#Busy Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialBusyRetryFrequency", "description": "

Busy Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialNoAnswerMaxRetry", "description": "

#NoAnswer Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialNoAnswerRetryFrequency", "description": "

NoAnswer Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialGlobalMaxRetry", "description": "

#Global Max Retry (min:1, max:999)

" }, { "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": "

Active/Disactive AMD

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDInitialSilence", "description": "

#AMD Initial Silence

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDGreeting", "description": "

#AMD Greeting

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDAfterGreetingSilence", "description": "

#AMD After Greeting Silence

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDTotalAnalysisTime", "description": "

#AMD Total Analysis Time

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDMinWordLength", "description": "

#AMD Min Word Length

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDBetweenWordsSilence", "description": "

#AMD Between Words Silence

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDMaximumNumberOfWords", "description": "

#AMD Maximum Number Of Words

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDSilenceThreshold", "description": "

#AMD Silence Threshold (min:0, max:32767)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDMaximumWordLength", "description": "

#AMD Maximum Word Length

" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "createdAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "updatedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceRecording/index.js", "groupTitle": "Voice_Recordings" }, { "type": "delete", "url": "/api/voice/recordings/{id}", "title": "Deletes a Recording", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/recordings/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteRecordings", "group": "Voice_Recordings", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/recordings?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/recordings?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/recordings?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/recordings?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/recordings?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/transfers/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/transfers/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/transfers/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/transfers/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/transfers/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceTransferReport/index.js", "groupTitle": "Voice_Transfer_Reports" }, { "type": "post", "url": "/api/integrations/zendesk/accounts", "title": "Creates a new Zendesk Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/zendesk/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateZendesk_Accounts", "group": "Zendesk_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "username", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "password", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "token", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remoteUri", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"password\"", "\"token\"" ], "optional": true, "field": "authType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "serverUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"integrationTab\"", "\"newTab\"" ], "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zendesk/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zendesk/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zendesk/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zendesk/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zendesk/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zendesk/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zendesk/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zendesk/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zendesk/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zendesk/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intZendeskConfiguration/index.js", "groupTitle": "Zendesk_Configurations" }, { "type": "post", "url": "/api/integrations/zendesk/fields", "title": "Creates a new Zendesk Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/zendesk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateZendesk_Fields", "group": "Zendesk_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "nameField", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "customField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zendesk/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zendesk/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zendesk/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zendesk/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zendesk/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "authToken", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "host", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "serverUrl", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zoho/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zoho/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zoho/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zoho/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zoho/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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", "optional": true, "field": "description", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zoho/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zoho/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zoho/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zoho/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zoho/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intZohoConfiguration/index.js", "groupTitle": "Zoho_Configurations" }, { "type": "post", "url": "/api/integrations/zoho/fields", "title": "Creates a new Zoho Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/zoho/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateZoho_Fields", "group": "Zoho_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "nameField", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "customField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zoho/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zoho/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zoho/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zoho/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zoho/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cdr?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cdr?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cdr?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cdr?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cdr?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voiceQueuesLog?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voiceQueuesLog?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voiceQueuesLog?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voiceQueuesLog?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voiceQueuesLog?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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 40647a4..927807b 100644 --- a/apidoc/api_data.json +++ b/apidoc/api_data.json @@ -1 +1 @@ -[ { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/custom_reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/custom_reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/custom_reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/custom_reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/custom_reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/default_reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/default_reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/default_reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/default_reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/default_reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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", "allowedValues": [ "\"csv\"", "\"pdf\"", "\"xls\"" ], "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/extracted_reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/extracted_reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/extracted_reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/extracted_reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/extracted_reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": false, "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": false, "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/field_reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/field_reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/field_reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/field_reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/field_reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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 -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addFields", "group": "Analytic_Field_Reports", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/metrics?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/metrics?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/metrics?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/metrics?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/metrics?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/tree_reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/tree_reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/tree_reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/tree_reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/tree_reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/analyticTreeReport/index.js", "groupTitle": "Analytic_Tree_Reports" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/authGoogle/index.js", "groupTitle": "Authentication" }, { "type": "post", "url": "/api/auth/local", "title": "Creates a new User token", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/auth/local -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST", "type": "json" } ], "name": "Local_login", "group": "Authentication", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "password", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/authLocal/index.js", "groupTitle": "Authentication" }, { "type": "post", "url": "/api/automations", "title": "Creates a new Automation", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/automations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateAutomations", "group": "Automations", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "channel", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/automations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/automations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/automations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/automations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/automations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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\": \"john.doe@xcally.com\", \"...\": \"...\"}]' \\ \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": "

Allowed values: contactManager, integration, motionbar, jscripty, urlForward, browser

" }, { "group": "Body", "type": "String", "optional": true, "field": "data1", "description": "

contactManager[ListId], integration[intName(zendesk)], motionbar[Popup(0),URL(1),WinApp(2)], urlForward[GET,POST], browser[TemplateId(0),URL(1)]

" }, { "group": "Body", "type": "String", "optional": true, "field": "data2", "description": "

integration[AccountId], motionbar[TemplateId,URL,WinAppPath], urlForward[URL]

" }, { "group": "Body", "type": "String", "optional": true, "field": "data3", "description": "

motionbar[NULL,NULL,WinAppArguments]

" }, { "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"john.doe@xcally.com\", \"...\": \"...\"}]' \\ \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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/automation/index.js", "groupTitle": "Automations" }, { "type": "post", "url": "/api/campaigns/{id}/blacklists", "title": "Add blacklists to a 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": "Campaigns", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "post", "url": "/api/campaigns/{id}/lists", "title": "Add lists to a 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": "Campaigns", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "post", "url": "/api/campaigns", "title": "Creates a new 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": "CreateCampaigns", "group": "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": "

Active/Disactive Campaign

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "limitCalls", "description": "

Max 200 calls.

" }, { "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": "

Originate Timeout Seconds (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialCongestionMaxRetry", "description": "

#Congestion Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialCongestionRetryFrequency", "description": "

Congestion Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialBusyMaxRetry", "description": "

#Busy Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialBusyRetryFrequency", "description": "

Busy Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialNoAnswerMaxRetry", "description": "

#NoAnswer Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialNoAnswerRetryFrequency", "description": "

NoAnswer Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialGlobalMaxRetry", "description": "

#Global Max Retry (min:1, max:999)

" }, { "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "delete", "url": "/api/campaigns/{id}", "title": "Deletes a Campaign", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/campaigns/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteCampaigns", "group": "Campaigns", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/blacklists", "title": "Get 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns", "title": "Gets a list of Campaigns", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/campaigns -v -u {name}:{password}", "type": "json" } ], "name": "GetCampaigns", "group": "Campaigns", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/campaigns?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/campaigns?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/campaigns?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/campaigns?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/campaigns?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/finals", "title": "Gets 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/hopper_histories", "title": "Gets 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/hoppers", "title": "Gets 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/lists", "title": "Get 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "delete", "url": "/api/campaigns/{id}/blacklists", "title": "Remove blacklists from a 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": "Campaigns", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "delete", "url": "/api/campaigns/{id}/lists", "title": "Remove lists from a 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": "Campaigns", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}", "title": "Gets a single Campaign", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/campaigns/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowCampaigns", "group": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/blacks", "title": "Gets 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "put", "url": "/api/campaigns/{id}", "title": "Update an existing 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": "updateCampaigns", "group": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "post", "url": "/api/canned_answers", "title": "Creates a new Canned Answer", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/canned_answers -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateCanned_Answers", "group": "Canned_Answers", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/canned_answers?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/canned_answers?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/canned_answers?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/canned_answers?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/canned_answers?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cannedAnswer/index.js", "groupTitle": "Canned_Answers" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatApplication/index.js", "groupTitle": "Chat_Applications" }, { "type": "post", "url": "/api/chat/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Chat_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatDisposition/index.js", "groupTitle": "Chat_Dispositions" }, { "type": "delete", "url": "/api/chat/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Chat_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatDisposition/index.js", "groupTitle": "Chat_Dispositions" }, { "type": "get", "url": "/api/chat/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Chat_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatDisposition/index.js", "groupTitle": "Chat_Dispositions" }, { "type": "put", "url": "/api/chat/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Chat_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatDisposition/index.js", "groupTitle": "Chat_Dispositions" }, { "type": "delete", "url": "/api/chat/enquiries/{id}", "title": "Deletes a Enquiry", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/enquiries/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteEnquiries", "group": "Chat_Enquiries", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatEnquiry/index.js", "groupTitle": "Chat_Enquiries" }, { "type": "get", "url": "/api/chat/enquiries/{id}", "title": "Gets a single Enquiry", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/enquiries/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowEnquiries", "group": "Chat_Enquiries", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatEnquiry/index.js", "groupTitle": "Chat_Enquiries" }, { "type": "put", "url": "/api/chat/enquiries/{id}", "title": "Update an existing Enquiry", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/enquiries/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateEnquiries", "group": "Chat_Enquiries", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatEnquiry/index.js", "groupTitle": "Chat_Enquiries" }, { "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": "String", "allowedValues": [ "\"internal\"", "\"external\"", "\"group\"" ], "optional": false, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "token", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"CLOSED\"", "\"ABANDON\"", "\"UNMANAGED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"good\"", "\"bad\"" ], "optional": true, "field": "rating", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "ratingMessage", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"agent\"", "\"requester\"" ], "optional": true, "field": "completeReason", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "ChatVisitorId", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "contact", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "website", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/interactions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/interactions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/interactions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/interactions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/interactions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "Blob", "optional": false, "field": "body", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"internal\"", "\"external\"", "\"group\"" ], "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatInteraction/index.js", "groupTitle": "Chat_Interactions" }, { "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": "Blob", "optional": false, "field": "body", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"internal\"", "\"external\"", "\"group\"" ], "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatMessage/index.js", "groupTitle": "Chat_Messages" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatProactiveAction/index.js", "groupTitle": "Chat_Proactive_Actions" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "lastAgent", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatQueue/index.js", "groupTitle": "Chat_Queues" }, { "type": "post", "url": "/api/chat/session/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "Chat_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "websitename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "websiteaddress", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "websiteid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitorid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitorname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitoremail", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "fidelity", "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": "completeAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "complete", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"agent\"", "\"requester\"" ], "optional": true, "field": "completeReason", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "abandon", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeslot", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "post", "url": "/api/chat/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "Chat_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "timeslot", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "websitename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "websiteaddress", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "websiteid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitorid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitorname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitoremail", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "calledAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "delete", "url": "/api/chat/session/reports/{id}", "title": "Deletes a Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "delete", "url": "/api/chat/reports/{id}", "title": "Deletes a Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "get", "url": "/api/chat/session/reports/describe", "title": "Gets table info about Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports/describe -v -u {name}:{password}", "type": "json" } ], "name": "DescribeReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "get", "url": "/api/chat/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Chat_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/chatReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "get", "url": "/api/chat/session/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Chat_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/session/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/session/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/session/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/session/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/session/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "get", "url": "/api/chat/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "get", "url": "/api/chat/session/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "put", "url": "/api/chat/reports/{id}", "title": "Update an existing Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "put", "url": "/api/chat/session/reports/{id}", "title": "Update an existing Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "delete", "url": "/api/chat/visitors/{id}", "title": "Deletes a Visitor", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/visitors/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteVisitors", "group": "Chat_Visitors", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatVisitor/index.js", "groupTitle": "Chat_Visitors" }, { "type": "get", "url": "/api/chat/visitors/{id}", "title": "Gets a single Visitor", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/visitors/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowVisitors", "group": "Chat_Visitors", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatVisitor/index.js", "groupTitle": "Chat_Visitors" }, { "type": "put", "url": "/api/chat/visitors/{id}", "title": "Update an existing Visitor", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/visitors/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateVisitors", "group": "Chat_Visitors", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatVisitor/index.js", "groupTitle": "Chat_Visitors" }, { "type": "delete", "url": "/api/chat/website_fields/{id}", "title": "Deletes a Website Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/website_fields/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteWebsite_Fields", "group": "Chat_Website_Fields", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsiteField/index.js", "groupTitle": "Chat_Website_Fields" }, { "type": "get", "url": "/api/chat/website_fields/{id}", "title": "Gets a single Website Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/website_fields/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowWebsite_Fields", "group": "Chat_Website_Fields", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsiteField/index.js", "groupTitle": "Chat_Website_Fields" }, { "type": "put", "url": "/api/chat/website_fields/{id}", "title": "Update an existing Website Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/website_fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateWebsite_Fields", "group": "Chat_Website_Fields", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsiteField/index.js", "groupTitle": "Chat_Website_Fields" }, { "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": "color", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "color_focus", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "color_button", "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": "online_message", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "username_placeholder", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "email_placeholder", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "start_chat_button", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "header_offline", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "offline_message", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "enquiry_message_placeholder", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "enquiry_button", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "download_transcript", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "enquiry_forwarding", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "enquiry_forwarding_address", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "enquiry_enable", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "rating_enable", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rating_message", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rating_send", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rating_skip", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "show_service_name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "service_name", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "fidelity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "agents_busy", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "name_title", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "email_title", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "message_title", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "logo", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "defaultLogo", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "whiteLabel", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "defaultWhiteLabel", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "acceptUrl", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectUrl", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closeUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "closeMethod", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "acceptMethod", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "rejectMethod", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "actions", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/websites?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/websites?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/websites?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/websites?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/websites?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatMessage/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": "String", "allowedValues": [ "\"queue\"", "\"agent\"", "\"sendMail\"", "\"sendSms\"" ], "optional": false, "field": "app", "description": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "priority", "description": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data1", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data2", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data3", "description": "" }, { "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": "Blob", "optional": true, "field": "data7", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data8", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data9", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data10", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"Satisfied\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDisposition", "group": "Chat_Websites", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsite/index.js", "groupTitle": "Chat_Websites" }, { "type": "post", "url": "/api/chat/websites/{id}/dispositions", "title": "Creates many dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/websites/{id}/dispositions -d '[{\"name\": \"Satisfied\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDispositions", "group": "Chat_Websites", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "allowedValues": [ "\"internal\"", "\"external\"", "\"group\"" ], "optional": false, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "token", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"CLOSED\"", "\"ABANDON\"", "\"UNMANAGED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"good\"", "\"bad\"" ], "optional": true, "field": "rating", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "ratingMessage", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"agent\"", "\"requester\"" ], "optional": true, "field": "completeReason", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "ChatVisitorId", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "contact", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "website", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsite/index.js", "groupTitle": "Chat_Websites" }, { "type": "post", "url": "/api/chat/websites/{id}/fields", "title": "Creates new Fields", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/websites/{id}/fields -d '[{\"name\": \"Satisfied\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addWebsiteFields", "group": "Chat_Websites", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "component", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "index", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "label", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "options", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "placeholder", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "required", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "validation", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "editable", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsite/index.js", "groupTitle": "Chat_Websites" }, { "type": "get", "url": "/api/chat/websites/{id}/dispositions", "title": "Gets Website 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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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 POST", "type": "json" } ], "name": "getWebsiteFields", "group": "Chat_Websites", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsite/index.js", "groupTitle": "Chat_Websites" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/companies?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/companies?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/companies?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/companies?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/companies?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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\": \"john.doe@xcally.com\", \"...\": \"...\"}]' \\ \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": "tags", "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": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": false, "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmContact/index.js", "groupTitle": "Cm_Contacts" }, { "type": "post", "url": "/api/cm/contacts", "title": "Create Contacts", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmContact/index.js", "groupTitle": "Cm_Contacts" }, { "type": "get", "url": "/api/cm/contacts", "title": "Gets List Contacts", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/cm/contacts -v -u {name}:{password} -X GET", "type": "json" } ], "name": "index", "group": "Cm_Contacts", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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 '{\"fullName\": \"John\", \"lastName\": \"Doe\"}' -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "update", "group": "Cm_Contacts", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/custom_fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/custom_fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/custom_fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/custom_fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/custom_fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/hopper?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/hopper?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/hopper?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/hopper?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/hopper?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/hopper_black?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/hopper_black?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/hopper_black?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/hopper_black?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/hopper_black?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/hopper_final?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/hopper_final?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/hopper_final?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/hopper_final?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/hopper_final?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmHopperFinal/index.js", "groupTitle": "Cm_Hopper_Final" }, { "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/hopper_history?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/hopper_history?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/hopper_history?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/hopper_history?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/hopper_history?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmHopper/index.js", "groupTitle": "Cm_Hopper" }, { "type": "get", "url": "/api/cm/hopper/preview", "title": "Gets Preview Dialer Contacts", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/cm/hopper/preview -v -u {name}:{password} -X GET", "type": "json" } ], "name": "getPreview", "group": "Cm_Hopper", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/lists?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/lists?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/lists?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/lists?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/lists?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"john.doe@xcally.com\", \"...\": \"...\"}]' \\ \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": "tags", "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": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": false, "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmList/index.js", "groupTitle": "Cm_Lists" }, { "type": "post", "url": "/api/lists/{id}/dispositions", "title": "Creates a new sub disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/lists/{id}/disposition -d '{\"name\": \"SATISFIED\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDisposition", "group": "Cm_Lists", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmList/index.js", "groupTitle": "Cm_Lists" }, { "type": "get", "url": "/api/cm/lists/{id}/dispositions", "title": "Gets 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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmList/index.js", "groupTitle": "Cm_Lists" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmCustomField/index.js", "groupTitle": "Custom_Fields" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/dashboardItem/index.js", "groupTitle": "Dashboard_Items" }, { "type": "put", "url": "/api/dashboards/items/{id}", "title": "Update an existing Dashboard Item", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/dashboards/items/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDashboard_Items", "group": "Dashboard_Items", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/dashboardItem/index.js", "groupTitle": "Dashboard_Items" }, { "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": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "interval", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/dashboards?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/dashboards?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/dashboards?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/dashboards?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/dashboards?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/dashboard/index.js", "groupTitle": "Dashboards" }, { "type": "get", "url": "/api/dashboards/{id}/run", "title": "Run dashboard widgets queries", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/dashboards/{id}/run -v -u {name}:{password} -X GET", "type": "json" } ], "name": "run", "group": "Dashboards", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "Dashboars", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/dashboard/index.js", "groupTitle": "Dashboars" }, { "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", "allowedValues": [ "\"integrationTab\"", "\"newTab\"" ], "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/desk/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/desk/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/desk/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/desk/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/desk/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/desk/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/desk/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/desk/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/desk/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/desk/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intDeskConfiguration/index.js", "groupTitle": "Desk_Configurations" }, { "type": "post", "url": "/api/integrations/desk/fields", "title": "Creates a new Desk Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/desk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDesk_Fields", "group": "Desk_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "nameField", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "customField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/desk/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/desk/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/desk/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/desk/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/desk/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intDeskField/index.js", "groupTitle": "Desk_Fields" }, { "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": "Boolean", "optional": true, "field": "fidelity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "acceptUrl", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "acceptMethod", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "rejectMethod", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "actions", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closeUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "closeMethod", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "allowedValues": [ "\"queue\"", "\"agent\"", "\"sendMail\"", "\"sendSms\"" ], "optional": false, "field": "app", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "priority", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data1", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data2", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data3", "description": "" }, { "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": "Blob", "optional": true, "field": "data7", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data8", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data9", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data10", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"Satisfied\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDisposition", "group": "Fax_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAccount/index.js", "groupTitle": "Fax_Accounts" }, { "type": "post", "url": "/api/fax/accounts/{id}/dispositions", "title": "Creates many dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/accounts/{id}/dispositions -d '[{\"name\": \"Satisfied\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDispositions", "group": "Fax_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": true, "field": "contact", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "faxIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "faxOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENT\"", "\"SENDING\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAccount/index.js", "groupTitle": "Fax_Accounts" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxApplication/index.js", "groupTitle": "Fax_Applications" }, { "type": "post", "url": "/api/fax/attachments", "title": "Creates a new Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/attachments -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateAttachments", "group": "Fax_Attachments", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "path", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "basename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAttachment/index.js", "groupTitle": "Fax_Attachments" }, { "type": "delete", "url": "/api/fax/attachments/{id}", "title": "Deletes a Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/attachments/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteAttachments", "group": "Fax_Attachments", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAttachment/index.js", "groupTitle": "Fax_Attachments" }, { "type": "get", "url": "/api/fax/attachments", "title": "Gets a list of Attachments", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/attachments -v -u {name}:{password}", "type": "json" } ], "name": "GetAttachments", "group": "Fax_Attachments", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/attachments?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/attachments?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/attachments?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/attachments?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/attachments?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/faxAttachment/index.js", "groupTitle": "Fax_Attachments" }, { "type": "get", "url": "/api/fax/attachments/{id}", "title": "Gets a single Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/attachments/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowAttachments", "group": "Fax_Attachments", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAttachment/index.js", "groupTitle": "Fax_Attachments" }, { "type": "put", "url": "/api/fax/attachments/{id}", "title": "Update an existing Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/attachments/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateAttachments", "group": "Fax_Attachments", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAttachment/index.js", "groupTitle": "Fax_Attachments" }, { "type": "post", "url": "/api/fax/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Fax_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxDisposition/index.js", "groupTitle": "Fax_Dispositions" }, { "type": "delete", "url": "/api/fax/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Fax_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxDisposition/index.js", "groupTitle": "Fax_Dispositions" }, { "type": "get", "url": "/api/fax/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Fax_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxDisposition/index.js", "groupTitle": "Fax_Dispositions" }, { "type": "put", "url": "/api/fax/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Fax_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxDisposition/index.js", "groupTitle": "Fax_Dispositions" }, { "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": "String", "optional": true, "field": "contact", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "faxIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "faxOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENT\"", "\"SENDING\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/interactions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/interactions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/interactions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/interactions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/interactions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": false, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "to", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENT\"", "\"SENDING\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "status", "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": "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": "Integer", "optional": true, "field": "priority", "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": "localstationid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remotestationid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "pagestransferred", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "resolution", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "transferrate", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "filename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastStatus", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "error", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "text", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "retry", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxInteraction/index.js", "groupTitle": "Fax_Interactions" }, { "type": "post", "url": "/api/fax/messages", "title": "Creates a new Message", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateMessages", "group": "Fax_Messages", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "to", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENT\"", "\"SENDING\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "status", "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": "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": "Integer", "optional": true, "field": "priority", "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": "localstationid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remotestationid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "pagestransferred", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "resolution", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "transferrate", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "filename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastStatus", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "error", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "text", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "retry", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxMessage/index.js", "groupTitle": "Fax_Messages" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxMessage/index.js", "groupTitle": "Fax_Messages" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxQueue/index.js", "groupTitle": "Fax_Queues" }, { "type": "post", "url": "/api/fax/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "Fax_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeslot", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountphone", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "messageid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "calledAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "from", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxReport/index.js", "groupTitle": "Fax_Reports" }, { "type": "delete", "url": "/api/fax/reports/{id}", "title": "Deletes a Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteReports", "group": "Fax_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxReport/index.js", "groupTitle": "Fax_Reports" }, { "type": "get", "url": "/api/fax/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Fax_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/faxReport/index.js", "groupTitle": "Fax_Reports" }, { "type": "get", "url": "/api/fax/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Fax_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxReport/index.js", "groupTitle": "Fax_Reports" }, { "type": "put", "url": "/api/fax/reports/{id}", "title": "Update an existing Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateReports", "group": "Fax_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxReport/index.js", "groupTitle": "Fax_Reports" }, { "type": "post", "url": "/api/fax/sessions/reports", "title": "Creates a new Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateSession_Reports", "group": "Fax_Session_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountphone", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "fidelity", "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": "completeAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "complete", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"agent\"" ], "optional": true, "field": "completeReason", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeslot", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "delete", "url": "/api/fax/sessions/reports/{id}", "title": "Deletes a Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteSession_Reports", "group": "Fax_Session_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "get", "url": "/api/fax/sessions/reports/describe", "title": "Gets table info about Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports/describe -v -u {name}:{password}", "type": "json" } ], "name": "DescribeSession_Reports", "group": "Fax_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "get", "url": "/api/fax/sessions/reports", "title": "Gets a list of Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetSession_Reports", "group": "Fax_Session_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/sessions/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/sessions/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/sessions/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/sessions/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/sessions/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "get", "url": "/api/fax/sessions/reports/{id}", "title": "Gets a single Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowSession_Reports", "group": "Fax_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "put", "url": "/api/fax/sessions/reports/{id}", "title": "Update an existing Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateSession_Reports", "group": "Fax_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "post", "url": "/api/integrations/freshdesk/accounts", "title": "Creates a new Freshdesk Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/freshdesk/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateFreshdesk_Accounts", "group": "Freshdesk_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "username", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "apiKey", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remoteUri", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "serverUrl", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/freshdesk/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/freshdesk/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/freshdesk/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/freshdesk/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/freshdesk/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/freshdesk/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/freshdesk/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/freshdesk/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/freshdesk/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/freshdesk/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intFreshdeskConfiguration/index.js", "groupTitle": "Freshdesk_Configurations" }, { "type": "post", "url": "/api/integrations/freshdesk/fields", "title": "Creates a new Freshdesk Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/freshdesk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateFreshdesk_Fields", "group": "Freshdesk_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "nameField", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "customField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/freshdesk/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/freshdesk/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/freshdesk/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/freshdesk/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/freshdesk/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intFreshdeskField/index.js", "groupTitle": "Freshdesk_Fields" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/intervals?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/intervals?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/intervals?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/intervals?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/intervals?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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 -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addIntervals", "group": "Intervals", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/jira/index.js", "groupTitle": "Issue" }, { "type": "post", "url": "/api/jscripty/answers/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/jscripty/answers/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "JscriptyAnswerReport", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "question", "description": "" }, { "group": "Body", "type": "String", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/jscripty/answers/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/jscripty/answers/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/jscripty/answers/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/jscripty/answers/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/jscripty/answers/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/jscriptyAnswerReport/index.js", "groupTitle": "JscriptyAnswerReport" }, { "type": "post", "url": "/api/jscripty/questions/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/jscripty/questions/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "JscriptyQuestionReport", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "question", "description": "" }, { "group": "Body", "type": "String", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/jscripty/questions/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/jscripty/questions/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/jscripty/questions/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/jscripty/questions/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/jscripty/questions/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/jscripty/sessions/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/jscripty/sessions/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/jscripty/sessions/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/jscripty/sessions/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/jscripty/sessions/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/jscriptySessionReport/index.js", "groupTitle": "JscriptySessionReport" }, { "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/jscripty/projects?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/jscripty/projects?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/jscripty/projects?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/jscripty/projects?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/jscripty/projects?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/license/index.js", "groupTitle": "License" }, { "type": "put", "url": "/api/license/{id}", "title": "Update an existing License", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/license/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateLiense", "group": "License", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/license/index.js", "groupTitle": "License" }, { "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": "String", "optional": true, "field": "username", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "password", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "port", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mailbox", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "ssl", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "delete", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"UNSEEN\"" ], "optional": true, "field": "filter", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"IMAP\"", "\"POP3\"" ], "optional": true, "field": "protocol", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"CONNECTING\"", "\"CONNECTED\"", "\"DISCONNECTED\"", "\"ERROR\"", "\"UNKNOWN\"" ], "optional": true, "field": "state", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "source", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "connTimeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "authTimeout", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "keepalive", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "service", "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": "state", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "authentication", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAccount/index.js", "groupTitle": "Mail_Accounts" }, { "type": "post", "url": "/api/mail/accounts", "title": "Creates a new Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateAccounts", "group": "Mail_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "fidelity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "whiteLabel", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "acceptUrl", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "acceptMethod", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "rejectMethod", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "actions", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closeUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "closeMethod", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "signature", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "custom", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "service", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "email", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAccount/index.js", "groupTitle": "Mail_Accounts" }, { "type": "delete", "url": "/api/mail/accounts/{id}", "title": "Deletes a Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/accounts/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteAccounts", "group": "Mail_Accounts", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "allowedValues": [ "\"queue\"", "\"agent\"", "\"sendMail\"", "\"replyMail\"", "\"sendSms\"" ], "optional": true, "field": "app", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "priority", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data1", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data2", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data3", "description": "" }, { "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": "Blob", "optional": true, "field": "data7", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data8", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data9", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data10", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\"}' \\ \n -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": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAccount/index.js", "groupTitle": "Mail_Accounts" }, { "type": "post", "url": "/api/mail/accounts/{id}/dispositions", "title": "Creates many dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/accounts/{id}/dispositions -d '[{\"name\": \"vip\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDispositions", "group": "Mail_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": true, "field": "subject", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "attachment", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "mailIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "mailOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "deleted", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "ParentId", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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\" '}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "sendMail", "group": "Mail_Accounts", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailApplication/index.js", "groupTitle": "Mail_Applications" }, { "type": "post", "url": "/api/mail/attachments", "title": "Creates a new Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/attachments -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateAttachments", "group": "Mail_Attachments", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "domain", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "size", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "path", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "basename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAttachment/index.js", "groupTitle": "Mail_Attachments" }, { "type": "delete", "url": "/api/mail/attachments/{id}", "title": "Deletes a Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/attachments/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteAttachments", "group": "Mail_Attachments", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAttachment/index.js", "groupTitle": "Mail_Attachments" }, { "type": "get", "url": "/api/mail/attachments", "title": "Gets a list of Attachments", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/attachments -v -u {name}:{password}", "type": "json" } ], "name": "GetAttachments", "group": "Mail_Attachments", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/attachments?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/attachments?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/attachments?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/attachments?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/attachments?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/mailAttachment/index.js", "groupTitle": "Mail_Attachments" }, { "type": "get", "url": "/api/mail/attachments/{id}", "title": "Gets a single Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/attachments/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowAttachments", "group": "Mail_Attachments", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAttachment/index.js", "groupTitle": "Mail_Attachments" }, { "type": "put", "url": "/api/mail/attachments/{id}", "title": "Update an existing Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/attachments/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateAttachments", "group": "Mail_Attachments", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAttachment/index.js", "groupTitle": "Mail_Attachments" }, { "type": "post", "url": "/api/mail/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Mail_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailDisposition/index.js", "groupTitle": "Mail_Dispositions" }, { "type": "delete", "url": "/api/mail/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Mail_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailDisposition/index.js", "groupTitle": "Mail_Dispositions" }, { "type": "get", "url": "/api/mail/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Mail_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailDisposition/index.js", "groupTitle": "Mail_Dispositions" }, { "type": "put", "url": "/api/mail/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Mail_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailDisposition/index.js", "groupTitle": "Mail_Dispositions" }, { "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": "String", "optional": true, "field": "subject", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "attachment", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "mailIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "mailOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "deleted", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "ParentId", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/interactions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/interactions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/interactions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/interactions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/interactions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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\": \"sales@xcally.com\", \"...\": \"...\"}]' \\ \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": "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": "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": "Integer", "optional": true, "field": "fromId", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "attachment", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "text", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "html", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "auto", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "retry", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "voiceSource", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "userName", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "userFullname", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "accountId", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailInteraction/index.js", "groupTitle": "Mail_Interactions" }, { "type": "post", "url": "/api/mail/messages", "title": "Creates a new Message", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateMessages", "group": "Mail_Messages", "parameter": { "fields": { "Body": [ { "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": "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": "Integer", "optional": true, "field": "fromId", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "attachment", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "text", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "html", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "auto", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "retry", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "voiceSource", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "userName", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "userFullname", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "accountId", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailMessage/index.js", "groupTitle": "Mail_Messages" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailMessage/index.js", "groupTitle": "Mail_Messages" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "lastAgent", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailQueue/index.js", "groupTitle": "Mail_Queues" }, { "type": "get", "url": "/api/mail/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Mail_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/mailReport/index.js", "groupTitle": "Mail_Reports" }, { "type": "get", "url": "/api/mail/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Mail_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailReport/index.js", "groupTitle": "Mail_Reports" }, { "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": "service", "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": "state", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "authentication", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/out_servers?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/out_servers?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/out_servers?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/out_servers?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/out_servers?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailServerOut/index.js", "groupTitle": "Mail_SMTP" }, { "type": "get", "url": "/api/mail/sessions/reports/describe", "title": "Gets table info about Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/sessions/reports/describe -v -u {name}:{password}", "type": "json" } ], "name": "DescribeSession_Reports", "group": "Mail_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailSessionReport/index.js", "groupTitle": "Mail_Session_Reports" }, { "type": "get", "url": "/api/mail/sessions/reports", "title": "Gets a list of Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/sessions/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetSession_Reports", "group": "Mail_Session_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/sessions/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/sessions/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/sessions/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/sessions/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/sessions/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/mailSessionReport/index.js", "groupTitle": "Mail_Session_Reports" }, { "type": "get", "url": "/api/mail/sessions/reports/{id}", "title": "Gets a single Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/sessions/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowSession_Reports", "group": "Mail_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailSessionReport/index.js", "groupTitle": "Mail_Session_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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/members/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/members/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/members/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/members/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/members/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/memberReport/index.js", "groupTitle": "Member_Reports" }, { "type": "post", "url": "/api/voice/networks", "title": "Create a new network", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/networks -v -u {name}:{password} -X POST", "type": "json" } ], "name": "Create", "group": "Networks", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/networks?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/networks?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/networks?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/networks?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/networks?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/network/index.js", "groupTitle": "Networks" }, { "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": "replyUri", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelAccount/index.js", "groupTitle": "Openchannel_Accounts" }, { "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_Accounts", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelMessage/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": "String", "optional": true, "field": "appdata", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"Satisfied\"}' \\ \n -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": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelAccount/index.js", "groupTitle": "Openchannel_Accounts" }, { "type": "post", "url": "/api/openchannel/accounts/{id}/dispositions", "title": "Creates many dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/accounts/{id}/dispositions -d '[{\"name\": \"Satisfied\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDispositions", "group": "Openchannel_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelAccount/index.js", "groupTitle": "Openchannel_Accounts" }, { "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_Accounts", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelMessage/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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": true, "field": "appdata", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/applications?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/applications?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/applications?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/applications?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/applications?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelApplication/index.js", "groupTitle": "Openchannel_Applications" }, { "type": "post", "url": "/api/openchannel/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Openchannel_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelDisposition/index.js", "groupTitle": "Openchannel_Dispositions" }, { "type": "delete", "url": "/api/openchannel/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Openchannel_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelDisposition/index.js", "groupTitle": "Openchannel_Dispositions" }, { "type": "get", "url": "/api/openchannel/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Openchannel_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelDisposition/index.js", "groupTitle": "Openchannel_Dispositions" }, { "type": "put", "url": "/api/openchannel/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Openchannel_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelDisposition/index.js", "groupTitle": "Openchannel_Dispositions" }, { "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/interactions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/interactions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/interactions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/interactions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/interactions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelMessage/index.js", "groupTitle": "Openchannel_Messages" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelQueue/index.js", "groupTitle": "Openchannel_Queues" }, { "type": "post", "url": "/api/openchannel/reports", "title": "Creates a new Openchannel Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateOpenchannel_Reports", "group": "Openchannel_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "timeslot", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "messageid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "calledAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelReport/index.js", "groupTitle": "Openchannel_Reports" }, { "type": "delete", "url": "/api/openchannel/reports/{id}", "title": "Deletes a Openchannel Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteOpenchannel_Reports", "group": "Openchannel_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelReport/index.js", "groupTitle": "Openchannel_Reports" }, { "type": "get", "url": "/api/openchannel/reports", "title": "Gets a list of Openchannel Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetOpenchannel_Reports", "group": "Openchannel_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/openchannelReport/index.js", "groupTitle": "Openchannel_Reports" }, { "type": "get", "url": "/api/openchannel/reports/{id}", "title": "Gets a single Openchannel Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowOpenchannel_Reports", "group": "Openchannel_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelReport/index.js", "groupTitle": "Openchannel_Reports" }, { "type": "put", "url": "/api/openchannel/reports/{id}", "title": "Update an existing Openchannel Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateOpenchannel_Reports", "group": "Openchannel_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelReport/index.js", "groupTitle": "Openchannel_Reports" }, { "type": "get", "url": "/api/openchannel/sessions/reports/describe", "title": "Gets table info about Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/sessions/reports/describe -v -u {name}:{password}", "type": "json" } ], "name": "DescribeSession_Reports", "group": "Openchannel_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelSessionReport/index.js", "groupTitle": "Openchannel_Session_Reports" }, { "type": "get", "url": "/api/openchannel/sessions/reports", "title": "Gets a list of Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/sessions/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetSession_Reports", "group": "Openchannel_Session_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/sessions/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/sessions/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/sessions/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/sessions/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/sessions/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/openchannelSessionReport/index.js", "groupTitle": "Openchannel_Session_Reports" }, { "type": "get", "url": "/api/openchannel/sessions/reports/{id}", "title": "Gets a single Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/sessions/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowSession_Reports", "group": "Openchannel_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelSessionReport/index.js", "groupTitle": "Openchannel_Session_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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/pauses?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/pauses?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/pauses?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/pauses?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/pauses?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/pause/index.js", "groupTitle": "Pauses" }, { "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion returns the pm2 processes list.

", "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": "updateProcesses", "group": "Pm2", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime campaigns parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime agents parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime outbound channels.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of telephones parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime trunks parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a specific realtime voice queue channel.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will hangup a specific realtime voice queue channel.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will redirect a specific realtime voice queue channel to a specific extension.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a specific preview contact.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime voice queues parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime outbound parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime voice queues channels.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/rpc/index.js", "groupTitle": "RPC_Realtime" }, { "type": "post", "url": "/api/integrations/salesforce/accounts", "title": "Creates a new Salesforce Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/salesforce/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateSalesforce_Accounts", "group": "Salesforce_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "username", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remoteUri", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "password", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "clientId", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "clientSecret", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "securityToken", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "serverUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"integrationTab\"", "\"newTab\"" ], "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/salesforce/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/salesforce/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/salesforce/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/salesforce/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/salesforce/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/salesforce/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/salesforce/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/salesforce/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/salesforce/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/salesforce/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intSalesforceConfiguration/index.js", "groupTitle": "Salesforce_Configurations" }, { "type": "post", "url": "/api/integrations/salesforce/fields", "title": "Creates a new Salesforce Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/salesforce/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateSalesforce_Fields", "group": "Salesforce_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/salesforce/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/salesforce/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/salesforce/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/salesforce/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/salesforce/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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\"", "\"xls\"" ], "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/schedules?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/schedules?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/schedules?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/schedules?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/schedules?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/schedule/index.js", "groupTitle": "Schedules" }, { "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/settings?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/settings?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/settings?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/settings?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/settings?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/setting/index.js", "groupTitle": "Settings" }, { "type": "put", "url": "/api/settings/{id}", "title": "Update settings", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/settings/{id} -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "Update", "group": "Settings", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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 -u {name}:{password} -X GET", "type": "json" } ], "name": "getLogo", "group": "Settings", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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 -u {name}:{password} -X GET", "type": "json" } ], "name": "getLogoLogin", "group": "Settings", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/setting/index.js", "groupTitle": "Settings" }, { "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": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"twilio\"", "\"skebby\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"basic\"", "\"classic\"", "\"classic+\"" ], "optional": true, "field": "smstype", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remote", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "fidelity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "phone", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "sid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "token", "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": "acceptUrl", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "acceptMethod", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "rejectMethod", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closeUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "closeMethod", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "actions", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "allowedValues": [ "\"queue\"", "\"agent\"" ], "optional": true, "field": "app", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "priority", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data1", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data2", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data3", "description": "" }, { "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": "Blob", "optional": true, "field": "data7", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data8", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data9", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data10", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"Satisfied\"}' \\ \n -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": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsAccount/index.js", "groupTitle": "Sms_Accounts" }, { "type": "post", "url": "/api/sms/accounts/{id}/dispositions", "title": "Creates many dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/accounts/{id}/dispositions -d '[{\"name\": \"Satisfied\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDispositions", "group": "Sms_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsAccount/index.js", "groupTitle": "Sms_Accounts" }, { "type": "post", "url": "/api/sms/accounts/{id}/interactions", "title": "Creates new interactions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/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": "Sms_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "contact", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "smsIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "smsOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "ParentId", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "voiceSource", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsAccount/index.js", "groupTitle": "Sms_Accounts" }, { "type": "get", "url": "/api/sms/accounts/{id}/interactions", "title": "Gets account interactions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/accounts/{id}/interactions -v -u {name}:{password} -X GET", "type": "json" } ], "name": "getInteraction", "group": "Sms_Accounts", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsAccount/index.js", "groupTitle": "Sms_Accounts" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsApplication/index.js", "groupTitle": "Sms_Applications" }, { "type": "post", "url": "/api/sms/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Sms_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsDisposition/index.js", "groupTitle": "Sms_Dispositions" }, { "type": "delete", "url": "/api/sms/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Sms_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsDisposition/index.js", "groupTitle": "Sms_Dispositions" }, { "type": "get", "url": "/api/sms/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Sms_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsDisposition/index.js", "groupTitle": "Sms_Dispositions" }, { "type": "put", "url": "/api/sms/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Sms_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsDisposition/index.js", "groupTitle": "Sms_Dispositions" }, { "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": "String", "optional": true, "field": "contact", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "smsIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "smsOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "ParentId", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "voiceSource", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/interactions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/interactions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/interactions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/interactions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/interactions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": false, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "to", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "body", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "errorcode", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "skebby_message_id", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "res_data", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "source", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "auto", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": false, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "to", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "body", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "errorcode", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "skebby_message_id", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "res_data", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "source", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "auto", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsMessage/index.js", "groupTitle": "Sms_Messages" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "lastAgent", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsQueue/index.js", "groupTitle": "Sms_Queues" }, { "type": "post", "url": "/api/sms/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "Sms_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeslot", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountnumber", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "messageid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "calledAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "post", "url": "/api/sms/session/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "Sms_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "subject", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountaddress", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "fidelity", "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": "completeAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "complete", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"agent\"" ], "optional": true, "field": "completeReason", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeslot", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "delete", "url": "/api/sms/session/reports/{id}", "title": "Deletes a Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "delete", "url": "/api/sms/reports/{id}", "title": "Deletes a Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "get", "url": "/api/sms/session/reports/describe", "title": "Gets table info about Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports/describe -v -u {name}:{password}", "type": "json" } ], "name": "DescribeReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "get", "url": "/api/sms/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Sms_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/smsReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "get", "url": "/api/sms/session/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Sms_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/session/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/session/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/session/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/session/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/session/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "get", "url": "/api/sms/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "get", "url": "/api/sms/session/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "put", "url": "/api/sms/reports/{id}", "title": "Update an existing Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "put", "url": "/api/sms/session/reports/{id}", "title": "Update an existing Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sounds?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sounds?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sounds?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sounds?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sounds?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/square/details/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/square/details/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/square/details/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/square/details/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/square/details/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/squareReportDetail/index.js", "groupTitle": "Square_Details_Reports" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/square/odbc?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/square/odbc?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/square/odbc?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/square/odbc?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/square/odbc?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/squareOdbc/index.js", "groupTitle": "Square_ODBC" }, { "type": "post", "url": "/api/square/projects", "title": "Creates a new Project", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/square/projects -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateProjects", "group": "Square_Projects", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "notes", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "preproduction", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "production", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/square/projects?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/square/projects?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/square/projects?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/square/projects?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/square/projects?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/squareRecording/index.js", "groupTitle": "Square_Recordings" }, { "type": "delete", "url": "/api/square/recordings/{id}", "title": "Deletes a Recording", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/square/recordings/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteRecordings", "group": "Square_Recordings", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/square/recordings?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/square/recordings?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/square/recordings?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/square/recordings?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/square/recordings?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/square/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/square/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/square/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/square/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/square/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/sugarcrm/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/sugarcrm/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/sugarcrm/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/sugarcrm/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/sugarcrm/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intSugarcrmConfiguration/index.js", "groupTitle": "SugarCRM_Configurations" }, { "type": "post", "url": "/api/integrations/sugarcrm/accounts", "title": "Creates a new Sugarcrm Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/sugarcrm/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateSugarcrm_Accounts", "group": "Sugarcrm_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "username", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "password", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remoteUri", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "serverUrl", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/sugarcrm/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/sugarcrm/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/sugarcrm/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/sugarcrm/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/sugarcrm/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intSugarcrmConfiguration/index.js", "groupTitle": "Sugarcrm_Configurations" }, { "type": "post", "url": "/api/integrations/sugarcrm/fields", "title": "Creates a new Sugarcrm Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/sugarcrm/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateSugarcrm_Fields", "group": "Sugarcrm_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "nameField", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "customField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/sugarcrm/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/sugarcrm/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/sugarcrm/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/sugarcrm/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/sugarcrm/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion returns the system information.

", "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": "description", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/tags?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/tags?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/tags?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/tags?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/tags?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/teams?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/teams?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/teams?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/teams?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/teams?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/team/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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsQueue/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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelQueue/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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxQueue/index.js", "groupTitle": "Teams" }, { "type": "get", "url": "/api/teams/{id}", "title": "Gets a single Team", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/teams/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowTeams", "group": "Teams", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": true, "field": "subject", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "html", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/templates?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/templates?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/templates?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/templates?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/templates?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/triggers?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/triggers?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/triggers?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/triggers?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/triggers?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Allowed values: contactManager, integration, motionbar, jscripty, urlForward, browser

" }, { "group": "Body", "type": "String", "optional": true, "field": "data1", "description": "

contactManager[ListId], integration[intName(zendesk)], motionbar[Popup(0),URL(1),WinApp(2)], urlForward[GET,POST], browser[TemplateId(0),URL(1)]

" }, { "group": "Body", "type": "String", "optional": true, "field": "data2", "description": "

integration[AccountId], motionbar[TemplateId,URL,WinAppPath], urlForward[URL]

" }, { "group": "Body", "type": "String", "optional": true, "field": "data3", "description": "

motionbar[NULL,NULL,WinAppArguments]

" }, { "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/trigger/index.js", "groupTitle": "Triggers" }, { "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": "

String is deprecated. Please use an Array as ["udp", "tcp"]

" }, { "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": "

String is deprecated. Please use an Array as ["force_rport", "comedia"]

" }, { "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": "

String is deprecated. Please use an Array as ["ulaw", "alaw", "alaw"]

" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "autoframing", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "insecure", "description": "

String is deprecated. Please use an Array as ["port", "invite"]

" }, { "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/trunks?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/trunks?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/trunks?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/trunks?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/trunks?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/trunk/index.js", "groupTitle": "Trunks" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/user/index.js", "groupTitle": "Users" }, { "type": "post", "url": "/api/users/create_many", "title": "Creates many Users", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/users/create_many -d '[{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}]' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "BulkCreateUsers", "group": "Users", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "

The name of the user

" }, { "group": "Body", "type": "String", "optional": false, "field": "fullname", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "email", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"admin\"", "\"user\"", "\"agent\"", "\"telephone\"" ], "optional": false, "field": "role", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "password", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "provider", "description": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "internal", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "salt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "phone", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mobile", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "address", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "zipcode", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "userpic", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "city", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "country", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "online", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastLoginAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "voicePause", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "chatPause", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "mailPause", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "faxPause", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "smsPause", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "openchannelPause", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "pauseType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastPauseAt", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "chatCapacity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "mailCapacity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "faxCapacity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "smsCapacity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "openchannelCapacity", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarAutoAnswer", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarEnableSettings", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "phoneBarListenPort", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "phoneBarExpires", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarRemoteControl", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "phoneBarRemoteControlPort", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarEnableRecording", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarRingInUse", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "chanspy", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "host", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "ipaddr", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "port", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "regseconds", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "fullcontact", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "regserver", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "useragent", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "lastms", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"friend\"", "\"user\"", "\"peer\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "context", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"ALLOWED_NOT_SCREENED\"", "\"ALLOWED_PASSED_SCREEN\"", "\"ALLOWED_FAILED_SCREEN\"", "\"ALLOWED\"", "\"PROHIB_NOT_SCREENED\"", "\"PROHIB_PASSED_SCREEN\"", "\"PROHIB_FAILED_SCREEN\"", "\"PROHIB\"" ], "optional": true, "field": "callingpres", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "deny", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "permit", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "secret", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "md5secret", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remotesecret", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "transport", "description": "

String is deprecated. Please use an Array as ["udp", "tcp"]

" }, { "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": "

String is deprecated. Please use an Array as ["force_rport", "comedia"]

" }, { "group": "Body", "type": "String", "optional": true, "field": "callgroup", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "namedcallgroup", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "pickupgroup", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "namedpickupgroup", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "language", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "tonezone", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "disallow", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "allow", "description": "

String is deprecated. Please use an Array as ["ulaw", "alaw", "gsm"]

" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "autoframing", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "insecure", "description": "

String is deprecated. Please use an Array as ["port", "invite"]

" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "trustrpid", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "trust_id_outbound", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"", "\"never\"" ], "optional": true, "field": "progressinband", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "promiscredir", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "useclientcode", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "accountcode", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "setvar", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "callerid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "amaflags", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "callcounter", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "busylevel", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "allowoverlap", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "allowsubscribe", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "allowtransfer", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "ignoresdpversion", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "subscribecontext", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "template", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"", "\"always\"" ], "optional": true, "field": "videosupport", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "maxcallbitrate", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "rfc2833compensate", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mailbox", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"accept\"", "\"refuse\"", "\"originate\"" ], "optional": true, "field": "session_timers", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "session_expires", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "session_minse", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"uac\"", "\"uas\"" ], "optional": true, "field": "session_refresher", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "t38pt_usertpsource", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "regexten", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "fromdomain", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "fromuser", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "qualify", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "keepalive", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "defaultip", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "defaultuser", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "rtptimeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "rtpholdtimeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "rtpkeepalive", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "sendrpid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "outboundproxy", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "callbackextension", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timert1", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timerb", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "qualifyfreq", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "contactpermit", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "contactdeny", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "contactacl", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "unsolicited_mailbox", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "use_q850_reason", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "maxforwards", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "encryption", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "avpf", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "force_avp", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "icesupport", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "dtlsenable", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"", "\"fingerprint\"", "\"certificate\"" ], "optional": true, "field": "dtlsverify", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dtlsrekey", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlscertfile", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlsprivatekey", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlscipher", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlscafile", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlscapath", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"active\"", "\"passive\"", "\"actpass\"" ], "optional": true, "field": "dtlssetup", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlsfingerprint", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "usereqphone", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "recordonfeature", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "recordofffeature", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "call_limit", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "registertrying", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "subscribemwi", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "vmexten", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mohinterpret", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mohsuggest", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "parkinglot", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"", "\"nonat\"", "\"update\"", "\"update,nonat\"" ], "optional": true, "field": "canreinvite", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "loginInPause", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "resetPasswordToken", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "resetPasswordExpires", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "showWebBar", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "permissions", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/user/index.js", "groupTitle": "Users" }, { "type": "delete", "url": "/api/users/destroy_many?ids={ids}", "title": "Deletes many Users", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/users/destroy_many?ids=1&ids=2&ids=3 -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "BulkDeleteUsers", "group": "Users", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "DeleteUsers", "group": "Users", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetAgents", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetContacts", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetLists", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetQueues", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetRecordings", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetTeams", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/users?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/users?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/users?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/users?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/users?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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}", "type": "json" } ], "name": "GetVoiceQueuesRt", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "Login", "group": "Users", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "Logout", "group": "Users", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "Pause", "group": "Users", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "Unpause", "group": "Users", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/variables?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/variables?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/variables?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/variables?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/variables?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion run the following command: git fetch origin master

", "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": "

Motion returns the current and latest motion version.

", "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": "

Motion run the following command: git pull

", "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": "

Motion run the following command: git reset --hard FETCH_HEAD

", "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": "

Motion run the following command: pm2 restart motion

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/agents/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/agents/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/agents/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/agents/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/agents/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/calls/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/calls/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/calls/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/calls/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/calls/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/chanspy?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/chanspy?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/chanspy?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/chanspy?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/chanspy?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/contexts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/contexts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/contexts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/contexts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/contexts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/dials/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/dials/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/dials/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/dials/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/dials/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceDialReport/index.js", "groupTitle": "Voice_Dial_Reports" }, { "type": "post", "url": "/api/voice/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Voice_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceDisposition/index.js", "groupTitle": "Voice_Dispositions" }, { "type": "delete", "url": "/api/voice/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Voice_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceDisposition/index.js", "groupTitle": "Voice_Dispositions" }, { "type": "get", "url": "/api/voice/dispositions", "title": "Gets a list of Dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/dispositions -v -u {name}:{password}", "type": "json" } ], "name": "GetDispositions", "group": "Voice_Dispositions", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/dispositions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/dispositions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/dispositions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/dispositions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/dispositions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/voiceDisposition/index.js", "groupTitle": "Voice_Dispositions" }, { "type": "get", "url": "/api/voice/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Voice_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceDisposition/index.js", "groupTitle": "Voice_Dispositions" }, { "type": "put", "url": "/api/voice/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Voice_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceDisposition/index.js", "groupTitle": "Voice_Dispositions" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/extensions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/extensions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/extensions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/extensions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/extensions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/mohs?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/mohs?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/mohs?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/mohs?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/mohs?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "maxsecs", "description": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "maxmsg", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/mails?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/mails?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/mails?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/mails?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/mails?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceMail/index.js", "groupTitle": "Voice_Mails" }, { "type": "post", "url": "/api/voice/mails/messages", "title": "Creates a new Message", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/mails/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateMessages", "group": "Voice_Messages", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "Virtual", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "msgnum", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dir", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "context", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "macrocontext", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "callerid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "origtime", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "duration", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mailboxuser", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mailboxcontext", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "recording", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "flag", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "msg_id", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "stamp", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/mails/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/mails/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/mails/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/mails/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/mails/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceMailMessage/index.js", "groupTitle": "Voice_Messages" }, { "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/queues/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/queues/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/queues/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/queues/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/queues/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": [ "\"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": "String", "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": "

Active/Disactive Campaign

" }, { "group": "Body", "type": "String", "allowedValues": [ "\"preview\"", "\"progressive\"", "\"power\"", "\"predictive\"" ], "optional": true, "field": "dialMethod", "description": "

Dial Method.

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialLimitChannel", "description": "

Max 9999 channels, 0 means unlimited.

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialLimitQueue", "description": "

Max 9999 member in queue(min:1, max:9999), 0 means unlimited.

" }, { "group": "Body", "type": "Float", "optional": true, "field": "dialPowerLevel", "description": "

Power Level: Calls for agents (min:1, max:10).

" }, { "group": "Body", "type": "String", "allowedValues": [ "\"agentBusyFactor\"", "\"dropRate\"" ], "optional": true, "field": "dialPredictiveOptimization", "description": "

Only for predictive method.

" }, { "group": "Body", "type": "Float", "optional": true, "field": "dialPredictiveOptimizationPercentage", "description": "

Predictive Optimization Percentage (min: 1, max: 95)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialPredictiveInterval", "description": "

Intervall Predictive Minutes (min:5 max:30)

" }, { "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": "

Originate Timeout Seconds (min:1, max:999)

" }, { "group": "Body", "type": "String", "optional": true, "field": "dialQueueOptions", "description": "

https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialQueueTimeout", "description": "

Queue Timeout Seconds (min:1, max:99)

" }, { "group": "Body", "type": "String", "optional": true, "field": "dialQueueProject", "description": "

AGI queue option (use: agi://127.0.0.1/square,<project_name>)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialCongestionMaxRetry", "description": "

#Congestion Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialCongestionRetryFrequency", "description": "

Congestion Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialBusyMaxRetry", "description": "

#Busy Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialBusyRetryFrequency", "description": "

Busy Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialNoAnswerMaxRetry", "description": "

#NoAnswer Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialNoAnswerRetryFrequency", "description": "

NoAnswer Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialGlobalMaxRetry", "description": "

#Global Max Retry (min:1, max:999)

" }, { "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "createdAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "updatedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceRecording/index.js", "groupTitle": "Voice_Recordings" }, { "type": "delete", "url": "/api/voice/recordings/{id}", "title": "Deletes a Recording", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/recordings/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteRecordings", "group": "Voice_Recordings", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/recordings?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/recordings?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/recordings?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/recordings?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/recordings?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/transfers/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/transfers/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/transfers/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/transfers/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/transfers/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceTransferReport/index.js", "groupTitle": "Voice_Transfer_Reports" }, { "type": "post", "url": "/api/integrations/zendesk/accounts", "title": "Creates a new Zendesk Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/zendesk/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateZendesk_Accounts", "group": "Zendesk_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "username", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "password", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "token", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remoteUri", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"password\"", "\"token\"" ], "optional": true, "field": "authType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "serverUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"integrationTab\"", "\"newTab\"" ], "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zendesk/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zendesk/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zendesk/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zendesk/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zendesk/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zendesk/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zendesk/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zendesk/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zendesk/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zendesk/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intZendeskConfiguration/index.js", "groupTitle": "Zendesk_Configurations" }, { "type": "post", "url": "/api/integrations/zendesk/fields", "title": "Creates a new Zendesk Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/zendesk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateZendesk_Fields", "group": "Zendesk_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "nameField", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "customField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zendesk/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zendesk/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zendesk/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zendesk/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zendesk/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "authToken", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "host", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "serverUrl", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zoho/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zoho/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zoho/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zoho/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zoho/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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", "optional": true, "field": "description", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zoho/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zoho/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zoho/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zoho/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zoho/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intZohoConfiguration/index.js", "groupTitle": "Zoho_Configurations" }, { "type": "post", "url": "/api/integrations/zoho/fields", "title": "Creates a new Zoho Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/zoho/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateZoho_Fields", "group": "Zoho_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "nameField", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "customField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zoho/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zoho/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zoho/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zoho/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zoho/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cdr?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cdr?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cdr?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cdr?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cdr?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voiceQueuesLog?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voiceQueuesLog?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voiceQueuesLog?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voiceQueuesLog?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voiceQueuesLog?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/custom_reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/custom_reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/custom_reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/custom_reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/custom_reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/default_reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/default_reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/default_reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/default_reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/default_reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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", "allowedValues": [ "\"csv\"", "\"pdf\"", "\"xls\"" ], "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/extracted_reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/extracted_reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/extracted_reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/extracted_reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/extracted_reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": false, "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": false, "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/field_reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/field_reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/field_reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/field_reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/field_reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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 -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addFields", "group": "Analytic_Field_Reports", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/metrics?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/metrics?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/metrics?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/metrics?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/metrics?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/analytics/tree_reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/analytics/tree_reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/analytics/tree_reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/analytics/tree_reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/analytics/tree_reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/analyticTreeReport/index.js", "groupTitle": "Analytic_Tree_Reports" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/authGoogle/index.js", "groupTitle": "Authentication" }, { "type": "post", "url": "/api/auth/local", "title": "Creates a new User token", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/auth/local -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST", "type": "json" } ], "name": "Local_login", "group": "Authentication", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "password", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/authLocal/index.js", "groupTitle": "Authentication" }, { "type": "post", "url": "/api/automations", "title": "Creates a new Automation", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/automations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateAutomations", "group": "Automations", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "channel", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/automations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/automations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/automations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/automations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/automations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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\": \"john.doe@xcally.com\", \"...\": \"...\"}]' \\ \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": "

Allowed values: contactManager, integration, motionbar, jscripty, urlForward, browser

" }, { "group": "Body", "type": "String", "optional": true, "field": "data1", "description": "

contactManager[ListId], integration[intName(zendesk)], motionbar[Popup(0),URL(1),WinApp(2)], urlForward[GET,POST], browser[TemplateId(0),URL(1)]

" }, { "group": "Body", "type": "String", "optional": true, "field": "data2", "description": "

integration[AccountId], motionbar[TemplateId,URL,WinAppPath], urlForward[URL]

" }, { "group": "Body", "type": "String", "optional": true, "field": "data3", "description": "

motionbar[NULL,NULL,WinAppArguments]

" }, { "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"john.doe@xcally.com\", \"...\": \"...\"}]' \\ \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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/automation/index.js", "groupTitle": "Automations" }, { "type": "post", "url": "/api/campaigns/{id}/blacklists", "title": "Add blacklists to a 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": "Campaigns", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "post", "url": "/api/campaigns/{id}/lists", "title": "Add lists to a 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": "Campaigns", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "post", "url": "/api/campaigns", "title": "Creates a new 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": "CreateCampaigns", "group": "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": "

Active/Disactive Campaign

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "limitCalls", "description": "

Max 200 calls.

" }, { "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": "

Originate Timeout Seconds (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialCongestionMaxRetry", "description": "

#Congestion Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialCongestionRetryFrequency", "description": "

Congestion Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialBusyMaxRetry", "description": "

#Busy Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialBusyRetryFrequency", "description": "

Busy Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialNoAnswerMaxRetry", "description": "

#NoAnswer Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialNoAnswerRetryFrequency", "description": "

NoAnswer Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialGlobalMaxRetry", "description": "

#Global Max Retry (min:1, max:999)

" }, { "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": "

Active/Disactive AMD

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDInitialSilence", "description": "

#AMD Initial Silence

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDGreeting", "description": "

#AMD Greeting

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDAfterGreetingSilence", "description": "

#AMD After Greeting Silence

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDTotalAnalysisTime", "description": "

#AMD Total Analysis Time

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDMinWordLength", "description": "

#AMD Min Word Length

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDBetweenWordsSilence", "description": "

#AMD Between Words Silence

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDMaximumNumberOfWords", "description": "

#AMD Maximum Number Of Words

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDSilenceThreshold", "description": "

#AMD Silence Threshold (min:0, max:32767)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDMaximumWordLength", "description": "

#AMD Maximum Word Length

" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "delete", "url": "/api/campaigns/{id}", "title": "Deletes a Campaign", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/campaigns/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteCampaigns", "group": "Campaigns", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/blacklists", "title": "Get 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns", "title": "Gets a list of Campaigns", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/campaigns -v -u {name}:{password}", "type": "json" } ], "name": "GetCampaigns", "group": "Campaigns", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/campaigns?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/campaigns?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/campaigns?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/campaigns?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/campaigns?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/finals", "title": "Gets 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/hopper_histories", "title": "Gets 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/hoppers", "title": "Gets 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/lists", "title": "Get 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "delete", "url": "/api/campaigns/{id}/blacklists", "title": "Remove blacklists from a 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": "Campaigns", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "delete", "url": "/api/campaigns/{id}/lists", "title": "Remove lists from a 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": "Campaigns", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}", "title": "Gets a single Campaign", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/campaigns/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowCampaigns", "group": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "get", "url": "/api/campaigns/{id}/blacks", "title": "Gets 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": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "put", "url": "/api/campaigns/{id}", "title": "Update an existing 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": "updateCampaigns", "group": "Campaigns", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/campaign/index.js", "groupTitle": "Campaigns" }, { "type": "post", "url": "/api/canned_answers", "title": "Creates a new Canned Answer", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/canned_answers -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateCanned_Answers", "group": "Canned_Answers", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/canned_answers?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/canned_answers?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/canned_answers?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/canned_answers?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/canned_answers?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cannedAnswer/index.js", "groupTitle": "Canned_Answers" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatApplication/index.js", "groupTitle": "Chat_Applications" }, { "type": "post", "url": "/api/chat/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Chat_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatDisposition/index.js", "groupTitle": "Chat_Dispositions" }, { "type": "delete", "url": "/api/chat/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Chat_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatDisposition/index.js", "groupTitle": "Chat_Dispositions" }, { "type": "get", "url": "/api/chat/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Chat_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatDisposition/index.js", "groupTitle": "Chat_Dispositions" }, { "type": "put", "url": "/api/chat/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Chat_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatDisposition/index.js", "groupTitle": "Chat_Dispositions" }, { "type": "delete", "url": "/api/chat/enquiries/{id}", "title": "Deletes a Enquiry", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/enquiries/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteEnquiries", "group": "Chat_Enquiries", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatEnquiry/index.js", "groupTitle": "Chat_Enquiries" }, { "type": "get", "url": "/api/chat/enquiries/{id}", "title": "Gets a single Enquiry", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/enquiries/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowEnquiries", "group": "Chat_Enquiries", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatEnquiry/index.js", "groupTitle": "Chat_Enquiries" }, { "type": "put", "url": "/api/chat/enquiries/{id}", "title": "Update an existing Enquiry", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/enquiries/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateEnquiries", "group": "Chat_Enquiries", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatEnquiry/index.js", "groupTitle": "Chat_Enquiries" }, { "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": "String", "optional": true, "field": "closedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "note", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/interactions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/interactions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/interactions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/interactions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/interactions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "allowedValues": [ "\"in\"", "\"out\"" ], "optional": false, "field": "direction", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatInteraction/index.js", "groupTitle": "Chat_Interactions" }, { "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": "String", "allowedValues": [ "\"in\"", "\"out\"" ], "optional": false, "field": "direction", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatMessage/index.js", "groupTitle": "Chat_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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatProactiveAction/index.js", "groupTitle": "Chat_Proactive_Actions" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatQueue/index.js", "groupTitle": "Chat_Queues" }, { "type": "post", "url": "/api/chat/session/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "Chat_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "websitename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "websiteaddress", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "websiteid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitorid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitorname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitoremail", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "fidelity", "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": "completeAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "complete", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"agent\"", "\"requester\"" ], "optional": true, "field": "completeReason", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "abandon", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeslot", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "post", "url": "/api/chat/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "Chat_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "timeslot", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "websitename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "websiteaddress", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "websiteid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitorid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitorname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "visitoremail", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "calledAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "delete", "url": "/api/chat/session/reports/{id}", "title": "Deletes a Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "delete", "url": "/api/chat/reports/{id}", "title": "Deletes a Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "get", "url": "/api/chat/session/reports/describe", "title": "Gets table info about Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports/describe -v -u {name}:{password}", "type": "json" } ], "name": "DescribeReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "get", "url": "/api/chat/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Chat_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/chatReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "get", "url": "/api/chat/session/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Chat_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/session/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/session/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/session/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/session/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/session/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "get", "url": "/api/chat/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "get", "url": "/api/chat/session/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "put", "url": "/api/chat/reports/{id}", "title": "Update an existing Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "put", "url": "/api/chat/session/reports/{id}", "title": "Update an existing Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/session/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateReports", "group": "Chat_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatSessionReport/index.js", "groupTitle": "Chat_Reports" }, { "type": "delete", "url": "/api/chat/visitors/{id}", "title": "Deletes a Visitor", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/visitors/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteVisitors", "group": "Chat_Visitors", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatVisitor/index.js", "groupTitle": "Chat_Visitors" }, { "type": "get", "url": "/api/chat/visitors/{id}", "title": "Gets a single Visitor", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/visitors/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowVisitors", "group": "Chat_Visitors", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatVisitor/index.js", "groupTitle": "Chat_Visitors" }, { "type": "put", "url": "/api/chat/visitors/{id}", "title": "Update an existing Visitor", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/visitors/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateVisitors", "group": "Chat_Visitors", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatVisitor/index.js", "groupTitle": "Chat_Visitors" }, { "type": "delete", "url": "/api/chat/website_fields/{id}", "title": "Deletes a Website Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/website_fields/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteWebsite_Fields", "group": "Chat_Website_Fields", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsiteField/index.js", "groupTitle": "Chat_Website_Fields" }, { "type": "get", "url": "/api/chat/website_fields/{id}", "title": "Gets a single Website Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/website_fields/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowWebsite_Fields", "group": "Chat_Website_Fields", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsiteField/index.js", "groupTitle": "Chat_Website_Fields" }, { "type": "put", "url": "/api/chat/website_fields/{id}", "title": "Update an existing Website Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/website_fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateWebsite_Fields", "group": "Chat_Website_Fields", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsiteField/index.js", "groupTitle": "Chat_Website_Fields" }, { "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": "color", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "color_button", "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": "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": "onlineForm", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "offlineForm", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/chat/websites?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/chat/websites?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/chat/websites?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/chat/websites?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/chat/websites?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatMessage/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": "String", "optional": true, "field": "appdata", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"Satisfied\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDisposition", "group": "Chat_Websites", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsite/index.js", "groupTitle": "Chat_Websites" }, { "type": "post", "url": "/api/chat/websites/{id}/dispositions", "title": "Creates many dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/websites/{id}/dispositions -d '[{\"name\": \"Satisfied\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDispositions", "group": "Chat_Websites", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": true, "field": "closedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "note", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsite/index.js", "groupTitle": "Chat_Websites" }, { "type": "get", "url": "/api/chat/websites/{id}/dispositions", "title": "Gets Website 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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsite/index.js", "groupTitle": "Chat_Websites" }, { "type": "get", "url": "/api/chat/websites/{id}/online_fields", "title": "Gets Website Online Fields", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/chat/websites/{id}/online_fields -v -u {name}:{password} -X GET", "type": "json" } ], "name": "getOnlineFields", "group": "Chat_Websites", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatWebsite/index.js", "groupTitle": "Chat_Websites" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/companies?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/companies?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/companies?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/companies?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/companies?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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\": \"john.doe@xcally.com\", \"...\": \"...\"}]' \\ \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": "tags", "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": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": false, "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/contacts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/contacts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/contacts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/contacts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/contacts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmContact/index.js", "groupTitle": "Cm_Contacts" }, { "type": "post", "url": "/api/cm/contacts", "title": "Create Contacts", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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 '{\"fullName\": \"John\", \"lastName\": \"Doe\"}' -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "update", "group": "Cm_Contacts", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/custom_fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/custom_fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/custom_fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/custom_fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/custom_fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/hopper?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/hopper?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/hopper?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/hopper?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/hopper?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/hopper_black?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/hopper_black?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/hopper_black?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/hopper_black?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/hopper_black?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/hopper_final?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/hopper_final?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/hopper_final?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/hopper_final?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/hopper_final?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmHopperFinal/index.js", "groupTitle": "Cm_Hopper_Final" }, { "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/hopper_history?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/hopper_history?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/hopper_history?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/hopper_history?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/hopper_history?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmHopper/index.js", "groupTitle": "Cm_Hopper" }, { "type": "get", "url": "/api/cm/hopper/preview", "title": "Gets Preview Dialer Contacts", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/cm/hopper/preview -v -u {name}:{password} -X GET", "type": "json" } ], "name": "getPreview", "group": "Cm_Hopper", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm/lists?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm/lists?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm/lists?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm/lists?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm/lists?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"john.doe@xcally.com\", \"...\": \"...\"}]' \\ \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": "tags", "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": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": false, "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmList/index.js", "groupTitle": "Cm_Lists" }, { "type": "post", "url": "/api/lists/{id}/dispositions", "title": "Creates a new sub disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/lists/{id}/disposition -d '{\"name\": \"SATISFIED\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDisposition", "group": "Cm_Lists", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmList/index.js", "groupTitle": "Cm_Lists" }, { "type": "get", "url": "/api/cm/lists/{id}/dispositions", "title": "Gets 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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmList/index.js", "groupTitle": "Cm_Lists" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/cmCustomField/index.js", "groupTitle": "Custom_Fields" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/dashboardItem/index.js", "groupTitle": "Dashboard_Items" }, { "type": "put", "url": "/api/dashboards/items/{id}", "title": "Update an existing Dashboard Item", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/dashboards/items/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDashboard_Items", "group": "Dashboard_Items", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/dashboardItem/index.js", "groupTitle": "Dashboard_Items" }, { "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": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "interval", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/dashboards?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/dashboards?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/dashboards?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/dashboards?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/dashboards?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/dashboard/index.js", "groupTitle": "Dashboards" }, { "type": "get", "url": "/api/dashboards/{id}/run", "title": "Run dashboard widgets queries", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/dashboards/{id}/run -v -u {name}:{password} -X GET", "type": "json" } ], "name": "run", "group": "Dashboards", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "Dashboars", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/dashboard/index.js", "groupTitle": "Dashboars" }, { "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", "allowedValues": [ "\"integrationTab\"", "\"newTab\"" ], "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/desk/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/desk/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/desk/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/desk/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/desk/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/desk/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/desk/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/desk/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/desk/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/desk/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intDeskConfiguration/index.js", "groupTitle": "Desk_Configurations" }, { "type": "post", "url": "/api/integrations/desk/fields", "title": "Creates a new Desk Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/desk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDesk_Fields", "group": "Desk_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "nameField", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "customField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/desk/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/desk/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/desk/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/desk/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/desk/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intDeskField/index.js", "groupTitle": "Desk_Fields" }, { "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": "Boolean", "optional": true, "field": "fidelity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "acceptUrl", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "acceptMethod", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "rejectMethod", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "actions", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closeUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "closeMethod", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "allowedValues": [ "\"queue\"", "\"agent\"", "\"sendMail\"", "\"sendSms\"" ], "optional": false, "field": "app", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "priority", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data1", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data2", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data3", "description": "" }, { "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": "Blob", "optional": true, "field": "data7", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data8", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data9", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data10", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"Satisfied\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDisposition", "group": "Fax_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAccount/index.js", "groupTitle": "Fax_Accounts" }, { "type": "post", "url": "/api/fax/accounts/{id}/dispositions", "title": "Creates many dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/accounts/{id}/dispositions -d '[{\"name\": \"Satisfied\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDispositions", "group": "Fax_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": true, "field": "contact", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "faxIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "faxOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENT\"", "\"SENDING\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAccount/index.js", "groupTitle": "Fax_Accounts" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxApplication/index.js", "groupTitle": "Fax_Applications" }, { "type": "post", "url": "/api/fax/attachments", "title": "Creates a new Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/attachments -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateAttachments", "group": "Fax_Attachments", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "path", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "basename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAttachment/index.js", "groupTitle": "Fax_Attachments" }, { "type": "delete", "url": "/api/fax/attachments/{id}", "title": "Deletes a Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/attachments/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteAttachments", "group": "Fax_Attachments", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAttachment/index.js", "groupTitle": "Fax_Attachments" }, { "type": "get", "url": "/api/fax/attachments", "title": "Gets a list of Attachments", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/attachments -v -u {name}:{password}", "type": "json" } ], "name": "GetAttachments", "group": "Fax_Attachments", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/attachments?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/attachments?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/attachments?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/attachments?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/attachments?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/faxAttachment/index.js", "groupTitle": "Fax_Attachments" }, { "type": "get", "url": "/api/fax/attachments/{id}", "title": "Gets a single Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/attachments/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowAttachments", "group": "Fax_Attachments", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAttachment/index.js", "groupTitle": "Fax_Attachments" }, { "type": "put", "url": "/api/fax/attachments/{id}", "title": "Update an existing Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/attachments/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateAttachments", "group": "Fax_Attachments", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxAttachment/index.js", "groupTitle": "Fax_Attachments" }, { "type": "post", "url": "/api/fax/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Fax_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxDisposition/index.js", "groupTitle": "Fax_Dispositions" }, { "type": "delete", "url": "/api/fax/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Fax_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxDisposition/index.js", "groupTitle": "Fax_Dispositions" }, { "type": "get", "url": "/api/fax/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Fax_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxDisposition/index.js", "groupTitle": "Fax_Dispositions" }, { "type": "put", "url": "/api/fax/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Fax_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxDisposition/index.js", "groupTitle": "Fax_Dispositions" }, { "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": "String", "optional": true, "field": "contact", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "faxIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "faxOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENT\"", "\"SENDING\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/interactions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/interactions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/interactions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/interactions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/interactions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": false, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "to", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENT\"", "\"SENDING\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "status", "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": "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": "Integer", "optional": true, "field": "priority", "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": "localstationid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remotestationid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "pagestransferred", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "resolution", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "transferrate", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "filename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastStatus", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "error", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "text", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "retry", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxInteraction/index.js", "groupTitle": "Fax_Interactions" }, { "type": "post", "url": "/api/fax/messages", "title": "Creates a new Message", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateMessages", "group": "Fax_Messages", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "to", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENT\"", "\"SENDING\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "status", "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": "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": "Integer", "optional": true, "field": "priority", "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": "localstationid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remotestationid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "pagestransferred", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "resolution", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "transferrate", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "filename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastStatus", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "error", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "text", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "retry", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxMessage/index.js", "groupTitle": "Fax_Messages" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxMessage/index.js", "groupTitle": "Fax_Messages" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxQueue/index.js", "groupTitle": "Fax_Queues" }, { "type": "post", "url": "/api/fax/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "Fax_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeslot", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountphone", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "messageid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "calledAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "from", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxReport/index.js", "groupTitle": "Fax_Reports" }, { "type": "delete", "url": "/api/fax/reports/{id}", "title": "Deletes a Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteReports", "group": "Fax_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxReport/index.js", "groupTitle": "Fax_Reports" }, { "type": "get", "url": "/api/fax/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Fax_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/faxReport/index.js", "groupTitle": "Fax_Reports" }, { "type": "get", "url": "/api/fax/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Fax_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxReport/index.js", "groupTitle": "Fax_Reports" }, { "type": "put", "url": "/api/fax/reports/{id}", "title": "Update an existing Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateReports", "group": "Fax_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxReport/index.js", "groupTitle": "Fax_Reports" }, { "type": "post", "url": "/api/fax/sessions/reports", "title": "Creates a new Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateSession_Reports", "group": "Fax_Session_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountphone", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "fidelity", "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": "completeAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "complete", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"agent\"" ], "optional": true, "field": "completeReason", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeslot", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "delete", "url": "/api/fax/sessions/reports/{id}", "title": "Deletes a Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteSession_Reports", "group": "Fax_Session_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "get", "url": "/api/fax/sessions/reports/describe", "title": "Gets table info about Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports/describe -v -u {name}:{password}", "type": "json" } ], "name": "DescribeSession_Reports", "group": "Fax_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "get", "url": "/api/fax/sessions/reports", "title": "Gets a list of Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetSession_Reports", "group": "Fax_Session_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/fax/sessions/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/fax/sessions/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/fax/sessions/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/fax/sessions/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/fax/sessions/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "get", "url": "/api/fax/sessions/reports/{id}", "title": "Gets a single Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowSession_Reports", "group": "Fax_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "put", "url": "/api/fax/sessions/reports/{id}", "title": "Update an existing Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/fax/sessions/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateSession_Reports", "group": "Fax_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxSessionReport/index.js", "groupTitle": "Fax_Session_Reports" }, { "type": "post", "url": "/api/integrations/freshdesk/accounts", "title": "Creates a new Freshdesk Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/freshdesk/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateFreshdesk_Accounts", "group": "Freshdesk_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "username", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "apiKey", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remoteUri", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "serverUrl", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/freshdesk/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/freshdesk/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/freshdesk/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/freshdesk/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/freshdesk/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/freshdesk/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/freshdesk/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/freshdesk/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/freshdesk/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/freshdesk/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intFreshdeskConfiguration/index.js", "groupTitle": "Freshdesk_Configurations" }, { "type": "post", "url": "/api/integrations/freshdesk/fields", "title": "Creates a new Freshdesk Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/freshdesk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateFreshdesk_Fields", "group": "Freshdesk_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "nameField", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "customField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/freshdesk/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/freshdesk/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/freshdesk/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/freshdesk/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/freshdesk/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intFreshdeskField/index.js", "groupTitle": "Freshdesk_Fields" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/intervals?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/intervals?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/intervals?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/intervals?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/intervals?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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 -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addIntervals", "group": "Intervals", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/jira/index.js", "groupTitle": "Issue" }, { "type": "post", "url": "/api/jscripty/answers/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/jscripty/answers/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "JscriptyAnswerReport", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "question", "description": "" }, { "group": "Body", "type": "String", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/jscripty/answers/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/jscripty/answers/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/jscripty/answers/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/jscripty/answers/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/jscripty/answers/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/jscriptyAnswerReport/index.js", "groupTitle": "JscriptyAnswerReport" }, { "type": "post", "url": "/api/jscripty/questions/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/jscripty/questions/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "JscriptyQuestionReport", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "question", "description": "" }, { "group": "Body", "type": "String", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/jscripty/questions/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/jscripty/questions/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/jscripty/questions/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/jscripty/questions/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/jscripty/questions/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/jscripty/sessions/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/jscripty/sessions/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/jscripty/sessions/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/jscripty/sessions/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/jscripty/sessions/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/jscriptySessionReport/index.js", "groupTitle": "JscriptySessionReport" }, { "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/jscripty/projects?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/jscripty/projects?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/jscripty/projects?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/jscripty/projects?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/jscripty/projects?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/license/index.js", "groupTitle": "License" }, { "type": "put", "url": "/api/license/{id}", "title": "Update an existing License", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/license/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateLiense", "group": "License", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/license/index.js", "groupTitle": "License" }, { "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": "String", "optional": true, "field": "username", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "password", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "port", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mailbox", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "ssl", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "delete", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"UNSEEN\"" ], "optional": true, "field": "filter", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"IMAP\"", "\"POP3\"" ], "optional": true, "field": "protocol", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"CONNECTING\"", "\"CONNECTED\"", "\"DISCONNECTED\"", "\"ERROR\"", "\"UNKNOWN\"" ], "optional": true, "field": "state", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "source", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "connTimeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "authTimeout", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "keepalive", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "service", "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": "state", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "authentication", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAccount/index.js", "groupTitle": "Mail_Accounts" }, { "type": "post", "url": "/api/mail/accounts", "title": "Creates a new Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateAccounts", "group": "Mail_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "fidelity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "whiteLabel", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "acceptUrl", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "acceptMethod", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "rejectMethod", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "actions", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closeUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "closeMethod", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "signature", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "custom", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "service", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "email", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAccount/index.js", "groupTitle": "Mail_Accounts" }, { "type": "delete", "url": "/api/mail/accounts/{id}", "title": "Deletes a Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/accounts/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteAccounts", "group": "Mail_Accounts", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "allowedValues": [ "\"queue\"", "\"agent\"", "\"sendMail\"", "\"replyMail\"", "\"sendSms\"" ], "optional": true, "field": "app", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "priority", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data1", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data2", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data3", "description": "" }, { "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": "Blob", "optional": true, "field": "data7", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data8", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data9", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data10", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\"}' \\ \n -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": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAccount/index.js", "groupTitle": "Mail_Accounts" }, { "type": "post", "url": "/api/mail/accounts/{id}/dispositions", "title": "Creates many dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/accounts/{id}/dispositions -d '[{\"name\": \"vip\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDispositions", "group": "Mail_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": true, "field": "subject", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "attachment", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "mailIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "mailOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "deleted", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "ParentId", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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\" '}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "sendMail", "group": "Mail_Accounts", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailApplication/index.js", "groupTitle": "Mail_Applications" }, { "type": "post", "url": "/api/mail/attachments", "title": "Creates a new Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/attachments -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateAttachments", "group": "Mail_Attachments", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "domain", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "size", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "path", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "basename", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAttachment/index.js", "groupTitle": "Mail_Attachments" }, { "type": "delete", "url": "/api/mail/attachments/{id}", "title": "Deletes a Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/attachments/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteAttachments", "group": "Mail_Attachments", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAttachment/index.js", "groupTitle": "Mail_Attachments" }, { "type": "get", "url": "/api/mail/attachments", "title": "Gets a list of Attachments", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/attachments -v -u {name}:{password}", "type": "json" } ], "name": "GetAttachments", "group": "Mail_Attachments", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/attachments?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/attachments?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/attachments?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/attachments?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/attachments?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/mailAttachment/index.js", "groupTitle": "Mail_Attachments" }, { "type": "get", "url": "/api/mail/attachments/{id}", "title": "Gets a single Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/attachments/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowAttachments", "group": "Mail_Attachments", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAttachment/index.js", "groupTitle": "Mail_Attachments" }, { "type": "put", "url": "/api/mail/attachments/{id}", "title": "Update an existing Attachment", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/attachments/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateAttachments", "group": "Mail_Attachments", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailAttachment/index.js", "groupTitle": "Mail_Attachments" }, { "type": "post", "url": "/api/mail/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Mail_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailDisposition/index.js", "groupTitle": "Mail_Dispositions" }, { "type": "delete", "url": "/api/mail/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Mail_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailDisposition/index.js", "groupTitle": "Mail_Dispositions" }, { "type": "get", "url": "/api/mail/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Mail_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailDisposition/index.js", "groupTitle": "Mail_Dispositions" }, { "type": "put", "url": "/api/mail/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Mail_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailDisposition/index.js", "groupTitle": "Mail_Dispositions" }, { "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": "String", "optional": true, "field": "subject", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "attachment", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "mailIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "mailOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "deleted", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "ParentId", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/interactions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/interactions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/interactions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/interactions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/interactions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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\": \"sales@xcally.com\", \"...\": \"...\"}]' \\ \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": "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": "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": "Integer", "optional": true, "field": "fromId", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "attachment", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "text", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "html", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "auto", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "retry", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "voiceSource", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "userName", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "userFullname", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "accountId", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailInteraction/index.js", "groupTitle": "Mail_Interactions" }, { "type": "post", "url": "/api/mail/messages", "title": "Creates a new Message", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateMessages", "group": "Mail_Messages", "parameter": { "fields": { "Body": [ { "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": "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": "Integer", "optional": true, "field": "fromId", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "attachment", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "text", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "html", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "auto", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "retry", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "voiceSource", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "userName", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "userFullname", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "accountId", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailMessage/index.js", "groupTitle": "Mail_Messages" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailMessage/index.js", "groupTitle": "Mail_Messages" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "lastAgent", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailQueue/index.js", "groupTitle": "Mail_Queues" }, { "type": "get", "url": "/api/mail/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Mail_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/mailReport/index.js", "groupTitle": "Mail_Reports" }, { "type": "get", "url": "/api/mail/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Mail_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailReport/index.js", "groupTitle": "Mail_Reports" }, { "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": "service", "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": "state", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "authentication", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/out_servers?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/out_servers?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/out_servers?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/out_servers?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/out_servers?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailServerOut/index.js", "groupTitle": "Mail_SMTP" }, { "type": "get", "url": "/api/mail/sessions/reports/describe", "title": "Gets table info about Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/sessions/reports/describe -v -u {name}:{password}", "type": "json" } ], "name": "DescribeSession_Reports", "group": "Mail_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailSessionReport/index.js", "groupTitle": "Mail_Session_Reports" }, { "type": "get", "url": "/api/mail/sessions/reports", "title": "Gets a list of Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/sessions/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetSession_Reports", "group": "Mail_Session_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/mail/sessions/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/mail/sessions/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/mail/sessions/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/mail/sessions/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/mail/sessions/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/mailSessionReport/index.js", "groupTitle": "Mail_Session_Reports" }, { "type": "get", "url": "/api/mail/sessions/reports/{id}", "title": "Gets a single Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/sessions/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowSession_Reports", "group": "Mail_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/mailSessionReport/index.js", "groupTitle": "Mail_Session_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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/members/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/members/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/members/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/members/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/members/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/memberReport/index.js", "groupTitle": "Member_Reports" }, { "type": "post", "url": "/api/voice/networks", "title": "Create a new network", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/networks -v -u {name}:{password} -X POST", "type": "json" } ], "name": "Create", "group": "Networks", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/networks?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/networks?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/networks?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/networks?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/networks?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/network/index.js", "groupTitle": "Networks" }, { "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": "replyUri", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelAccount/index.js", "groupTitle": "Openchannel_Accounts" }, { "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_Accounts", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelMessage/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": "String", "optional": true, "field": "appdata", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"Satisfied\"}' \\ \n -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": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelAccount/index.js", "groupTitle": "Openchannel_Accounts" }, { "type": "post", "url": "/api/openchannel/accounts/{id}/dispositions", "title": "Creates many dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/accounts/{id}/dispositions -d '[{\"name\": \"Satisfied\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDispositions", "group": "Openchannel_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelAccount/index.js", "groupTitle": "Openchannel_Accounts" }, { "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_Accounts", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelMessage/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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": true, "field": "appdata", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/applications?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/applications?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/applications?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/applications?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/applications?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelApplication/index.js", "groupTitle": "Openchannel_Applications" }, { "type": "post", "url": "/api/openchannel/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Openchannel_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelDisposition/index.js", "groupTitle": "Openchannel_Dispositions" }, { "type": "delete", "url": "/api/openchannel/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Openchannel_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelDisposition/index.js", "groupTitle": "Openchannel_Dispositions" }, { "type": "get", "url": "/api/openchannel/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Openchannel_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelDisposition/index.js", "groupTitle": "Openchannel_Dispositions" }, { "type": "put", "url": "/api/openchannel/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Openchannel_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelDisposition/index.js", "groupTitle": "Openchannel_Dispositions" }, { "type": "post", "url": "/api/openchannel/interactions", "title": "Creates a new Interaction", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateInteractions", "group": "Openchannel_Interactions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "Boolean", "optional": true, "field": "closed", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "note", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/interactions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/interactions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/interactions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/interactions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/interactions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "allowedValues": [ "\"in\"", "\"out\"" ], "optional": false, "field": "direction", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "allowedValues": [ "\"in\"", "\"out\"" ], "optional": false, "field": "direction", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelMessage/index.js", "groupTitle": "Openchannel_Messages" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelQueue/index.js", "groupTitle": "Openchannel_Queues" }, { "type": "post", "url": "/api/openchannel/reports", "title": "Creates a new Openchannel Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateOpenchannel_Reports", "group": "Openchannel_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "timeslot", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "messageid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "calledAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelReport/index.js", "groupTitle": "Openchannel_Reports" }, { "type": "delete", "url": "/api/openchannel/reports/{id}", "title": "Deletes a Openchannel Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteOpenchannel_Reports", "group": "Openchannel_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelReport/index.js", "groupTitle": "Openchannel_Reports" }, { "type": "get", "url": "/api/openchannel/reports", "title": "Gets a list of Openchannel Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetOpenchannel_Reports", "group": "Openchannel_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/openchannelReport/index.js", "groupTitle": "Openchannel_Reports" }, { "type": "get", "url": "/api/openchannel/reports/{id}", "title": "Gets a single Openchannel Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowOpenchannel_Reports", "group": "Openchannel_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelReport/index.js", "groupTitle": "Openchannel_Reports" }, { "type": "put", "url": "/api/openchannel/reports/{id}", "title": "Update an existing Openchannel Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateOpenchannel_Reports", "group": "Openchannel_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelReport/index.js", "groupTitle": "Openchannel_Reports" }, { "type": "get", "url": "/api/openchannel/sessions/reports/describe", "title": "Gets table info about Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/sessions/reports/describe -v -u {name}:{password}", "type": "json" } ], "name": "DescribeSession_Reports", "group": "Openchannel_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelSessionReport/index.js", "groupTitle": "Openchannel_Session_Reports" }, { "type": "get", "url": "/api/openchannel/sessions/reports", "title": "Gets a list of Session Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/sessions/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetSession_Reports", "group": "Openchannel_Session_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/openchannel/sessions/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/openchannel/sessions/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/openchannel/sessions/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/openchannel/sessions/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/openchannel/sessions/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/openchannelSessionReport/index.js", "groupTitle": "Openchannel_Session_Reports" }, { "type": "get", "url": "/api/openchannel/sessions/reports/{id}", "title": "Gets a single Session Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/openchannel/sessions/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowSession_Reports", "group": "Openchannel_Session_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelSessionReport/index.js", "groupTitle": "Openchannel_Session_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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/pauses?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/pauses?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/pauses?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/pauses?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/pauses?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/pause/index.js", "groupTitle": "Pauses" }, { "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion returns the pm2 processes list.

", "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": "updateProcesses", "group": "Pm2", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime campaigns parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime agents parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime outbound channels.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of telephones parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime trunks parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a specific realtime voice queue channel.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will hangup a specific realtime voice queue channel.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will redirect a specific realtime voice queue channel to a specific extension.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a specific preview contact.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime outbound parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime voice queues parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a list of realtime voice queues channels.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/rpc/index.js", "groupTitle": "RPC_Realtime" }, { "type": "post", "url": "/api/integrations/salesforce/accounts", "title": "Creates a new Salesforce Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/salesforce/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateSalesforce_Accounts", "group": "Salesforce_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "username", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remoteUri", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "password", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "clientId", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "clientSecret", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "securityToken", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "serverUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"integrationTab\"", "\"newTab\"" ], "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/salesforce/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/salesforce/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/salesforce/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/salesforce/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/salesforce/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/salesforce/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/salesforce/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/salesforce/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/salesforce/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/salesforce/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intSalesforceConfiguration/index.js", "groupTitle": "Salesforce_Configurations" }, { "type": "post", "url": "/api/integrations/salesforce/fields", "title": "Creates a new Salesforce Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/salesforce/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateSalesforce_Fields", "group": "Salesforce_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/salesforce/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/salesforce/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/salesforce/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/salesforce/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/salesforce/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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\"", "\"xls\"" ], "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/schedules?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/schedules?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/schedules?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/schedules?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/schedules?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/schedule/index.js", "groupTitle": "Schedules" }, { "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/settings?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/settings?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/settings?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/settings?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/settings?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/setting/index.js", "groupTitle": "Settings" }, { "type": "put", "url": "/api/settings/{id}", "title": "Update settings", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/settings/{id} -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "Update", "group": "Settings", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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 -u {name}:{password} -X GET", "type": "json" } ], "name": "getLogo", "group": "Settings", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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 -u {name}:{password} -X GET", "type": "json" } ], "name": "getLogoLogin", "group": "Settings", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/setting/index.js", "groupTitle": "Settings" }, { "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": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"twilio\"", "\"skebby\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"basic\"", "\"classic\"", "\"classic+\"" ], "optional": true, "field": "smstype", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remote", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "fidelity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "phone", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "sid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "token", "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": "acceptUrl", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "acceptMethod", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "rejectMethod", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closeUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"GET\"", "\"POST\"" ], "optional": true, "field": "closeMethod", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "actions", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "allowedValues": [ "\"queue\"", "\"agent\"" ], "optional": true, "field": "app", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "priority", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "interval", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data1", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data2", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "data3", "description": "" }, { "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": "Blob", "optional": true, "field": "data7", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data8", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data9", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "data10", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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\": \"Satisfied\"}' \\ \n -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": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsAccount/index.js", "groupTitle": "Sms_Accounts" }, { "type": "post", "url": "/api/sms/accounts/{id}/dispositions", "title": "Creates many dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/accounts/{id}/dispositions -d '[{\"name\": \"Satisfied\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], "name": "addDispositions", "group": "Sms_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsAccount/index.js", "groupTitle": "Sms_Accounts" }, { "type": "post", "url": "/api/sms/accounts/{id}/interactions", "title": "Creates new interactions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/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": "Sms_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "contact", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "smsIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "smsOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "ParentId", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "voiceSource", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsAccount/index.js", "groupTitle": "Sms_Accounts" }, { "type": "get", "url": "/api/sms/accounts/{id}/interactions", "title": "Gets account interactions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/accounts/{id}/interactions -v -u {name}:{password} -X GET", "type": "json" } ], "name": "getInteraction", "group": "Sms_Accounts", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsAccount/index.js", "groupTitle": "Sms_Accounts" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsApplication/index.js", "groupTitle": "Sms_Applications" }, { "type": "post", "url": "/api/sms/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Sms_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsDisposition/index.js", "groupTitle": "Sms_Dispositions" }, { "type": "delete", "url": "/api/sms/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Sms_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsDisposition/index.js", "groupTitle": "Sms_Dispositions" }, { "type": "get", "url": "/api/sms/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Sms_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsDisposition/index.js", "groupTitle": "Sms_Dispositions" }, { "type": "put", "url": "/api/sms/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Sms_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsDisposition/index.js", "groupTitle": "Sms_Dispositions" }, { "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": "String", "optional": true, "field": "contact", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "smsIn", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "smsOut", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"NEW\"", "\"OPEN\"", "\"PENDING\"", "\"CLOSED\"" ], "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"SENDING\"", "\"SENT\"", "\"RECEIVED\"", "\"FAILED\"", "\"NOTE\"" ], "optional": true, "field": "lastEvent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastEventAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "waiting", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "tags", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "disposition", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "openReason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "arrivedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "closedAt", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "ParentId", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "voiceSource", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "account", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/interactions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/interactions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/interactions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/interactions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/interactions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": false, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "to", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "body", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "errorcode", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "skebby_message_id", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "res_data", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "source", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "auto", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": false, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "to", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "body", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "status", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "errorcode", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "skebby_message_id", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "res_data", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "source", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "auto", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsMessage/index.js", "groupTitle": "Sms_Messages" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "lastAgent", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsQueue/index.js", "groupTitle": "Sms_Queues" }, { "type": "post", "url": "/api/sms/session/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "Sms_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "subject", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountaddress", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "fidelity", "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": "completeAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "complete", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"agent\"" ], "optional": true, "field": "completeReason", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "timeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeslot", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "post", "url": "/api/sms/reports", "title": "Creates a new Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateReports", "group": "Sms_Reports", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "uniqueid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timeslot", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "from", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountname", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "accountnumber", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "application", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "memberid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "membername", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "queue", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "queuename", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "roomid", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "messageid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "reason", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "calledAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "rejectedAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "connectedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "delete", "url": "/api/sms/session/reports/{id}", "title": "Deletes a Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "delete", "url": "/api/sms/reports/{id}", "title": "Deletes a Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/reports/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "get", "url": "/api/sms/session/reports/describe", "title": "Gets table info about Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports/describe -v -u {name}:{password}", "type": "json" } ], "name": "DescribeReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "get", "url": "/api/sms/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Sms_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/smsReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "get", "url": "/api/sms/session/reports", "title": "Gets a list of Reports", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports -v -u {name}:{password}", "type": "json" } ], "name": "GetReports", "group": "Sms_Reports", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sms/session/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sms/session/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sms/session/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sms/session/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sms/session/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "get", "url": "/api/sms/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "get", "url": "/api/sms/session/reports/{id}", "title": "Gets a single Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "put", "url": "/api/sms/reports/{id}", "title": "Update an existing Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsReport/index.js", "groupTitle": "Sms_Reports" }, { "type": "put", "url": "/api/sms/session/reports/{id}", "title": "Update an existing Report", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/sms/session/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateReports", "group": "Sms_Reports", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsSessionReport/index.js", "groupTitle": "Sms_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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/sounds?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/sounds?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/sounds?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/sounds?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/sounds?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/square/details/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/square/details/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/square/details/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/square/details/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/square/details/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/squareReportDetail/index.js", "groupTitle": "Square_Details_Reports" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/square/odbc?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/square/odbc?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/square/odbc?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/square/odbc?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/square/odbc?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/squareOdbc/index.js", "groupTitle": "Square_ODBC" }, { "type": "post", "url": "/api/square/projects", "title": "Creates a new Project", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/square/projects -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateProjects", "group": "Square_Projects", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "notes", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "preproduction", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "production", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/square/projects?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/square/projects?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/square/projects?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/square/projects?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/square/projects?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/squareRecording/index.js", "groupTitle": "Square_Recordings" }, { "type": "delete", "url": "/api/square/recordings/{id}", "title": "Deletes a Recording", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/square/recordings/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteRecordings", "group": "Square_Recordings", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/square/recordings?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/square/recordings?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/square/recordings?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/square/recordings?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/square/recordings?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/square/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/square/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/square/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/square/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/square/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/sugarcrm/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/sugarcrm/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/sugarcrm/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/sugarcrm/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/sugarcrm/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intSugarcrmConfiguration/index.js", "groupTitle": "SugarCRM_Configurations" }, { "type": "post", "url": "/api/integrations/sugarcrm/accounts", "title": "Creates a new Sugarcrm Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/sugarcrm/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateSugarcrm_Accounts", "group": "Sugarcrm_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "username", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "password", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remoteUri", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "serverUrl", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/sugarcrm/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/sugarcrm/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/sugarcrm/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/sugarcrm/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/sugarcrm/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intSugarcrmConfiguration/index.js", "groupTitle": "Sugarcrm_Configurations" }, { "type": "post", "url": "/api/integrations/sugarcrm/fields", "title": "Creates a new Sugarcrm Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/sugarcrm/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateSugarcrm_Fields", "group": "Sugarcrm_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "nameField", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "customField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/sugarcrm/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/sugarcrm/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/sugarcrm/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/sugarcrm/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/sugarcrm/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion returns the system information.

", "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": "description", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/tags?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/tags?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/tags?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/tags?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/tags?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/teams?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/teams?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/teams?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/teams?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/teams?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/team/index.js", "groupTitle": "Teams" }, { "type": "delete", "url": "/api/mail/queues/{id}/teams", "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "RemoveTeams", "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsQueue/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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/openchannelQueue/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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/chatQueue/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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceQueue/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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxQueue/index.js", "groupTitle": "Teams" }, { "type": "get", "url": "/api/teams/{id}", "title": "Gets a single Team", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/teams/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowTeams", "group": "Teams", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": true, "field": "subject", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "html", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/templates?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/templates?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/templates?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/templates?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/templates?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/triggers?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/triggers?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/triggers?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/triggers?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/triggers?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Allowed values: contactManager, integration, motionbar, jscripty, urlForward, browser

" }, { "group": "Body", "type": "String", "optional": true, "field": "data1", "description": "

contactManager[ListId], integration[intName(zendesk)], motionbar[Popup(0),URL(1),WinApp(2)], urlForward[GET,POST], browser[TemplateId(0),URL(1)]

" }, { "group": "Body", "type": "String", "optional": true, "field": "data2", "description": "

integration[AccountId], motionbar[TemplateId,URL,WinAppPath], urlForward[URL]

" }, { "group": "Body", "type": "String", "optional": true, "field": "data3", "description": "

motionbar[NULL,NULL,WinAppArguments]

" }, { "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/trigger/index.js", "groupTitle": "Triggers" }, { "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": "

String is deprecated. Please use an Array as ["udp", "tcp"]

" }, { "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": "

String is deprecated. Please use an Array as ["force_rport", "comedia"]

" }, { "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": "

String is deprecated. Please use an Array as ["ulaw", "alaw", "alaw"]

" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "autoframing", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "insecure", "description": "

String is deprecated. Please use an Array as ["port", "invite"]

" }, { "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": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/trunks?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/trunks?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/trunks?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/trunks?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/trunks?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/trunk/index.js", "groupTitle": "Trunks" }, { "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/user/index.js", "groupTitle": "Users" }, { "type": "post", "url": "/api/users/create_many", "title": "Creates many Users", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/users/create_many -d '[{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}]' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "BulkCreateUsers", "group": "Users", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": false, "field": "name", "description": "

The name of the user

" }, { "group": "Body", "type": "String", "optional": false, "field": "fullname", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "email", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"admin\"", "\"user\"", "\"agent\"", "\"telephone\"" ], "optional": false, "field": "role", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "password", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "provider", "description": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "internal", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "salt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "phone", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mobile", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "address", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "zipcode", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "userpic", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "city", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "country", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "online", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastLoginAt", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "voicePause", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "chatPause", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "mailPause", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "faxPause", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "smsPause", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "openchannelPause", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "pauseType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "lastPauseAt", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "chatCapacity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "mailCapacity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "faxCapacity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "smsCapacity", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "openchannelCapacity", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarAutoAnswer", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarEnableSettings", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "phoneBarListenPort", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "phoneBarExpires", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarRemoteControl", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "phoneBarRemoteControlPort", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarEnableRecording", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarRingInUse", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "chanspy", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "host", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "ipaddr", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "port", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "regseconds", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "fullcontact", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "regserver", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "useragent", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "lastms", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"friend\"", "\"user\"", "\"peer\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "context", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"ALLOWED_NOT_SCREENED\"", "\"ALLOWED_PASSED_SCREEN\"", "\"ALLOWED_FAILED_SCREEN\"", "\"ALLOWED\"", "\"PROHIB_NOT_SCREENED\"", "\"PROHIB_PASSED_SCREEN\"", "\"PROHIB_FAILED_SCREEN\"", "\"PROHIB\"" ], "optional": true, "field": "callingpres", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "deny", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "permit", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "secret", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "md5secret", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remotesecret", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "transport", "description": "

String is deprecated. Please use an Array as ["udp", "tcp"]

" }, { "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": "

String is deprecated. Please use an Array as ["force_rport", "comedia"]

" }, { "group": "Body", "type": "String", "optional": true, "field": "callgroup", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "namedcallgroup", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "pickupgroup", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "namedpickupgroup", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "language", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "tonezone", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "disallow", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "allow", "description": "

String is deprecated. Please use an Array as ["ulaw", "alaw", "gsm"]

" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "autoframing", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "insecure", "description": "

String is deprecated. Please use an Array as ["port", "invite"]

" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "trustrpid", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "trust_id_outbound", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"", "\"never\"" ], "optional": true, "field": "progressinband", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "promiscredir", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "useclientcode", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "accountcode", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "setvar", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "callerid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "amaflags", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "callcounter", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "busylevel", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "allowoverlap", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "allowsubscribe", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "allowtransfer", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "ignoresdpversion", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "subscribecontext", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "template", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"", "\"always\"" ], "optional": true, "field": "videosupport", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "maxcallbitrate", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "rfc2833compensate", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mailbox", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"accept\"", "\"refuse\"", "\"originate\"" ], "optional": true, "field": "session_timers", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "session_expires", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "session_minse", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"uac\"", "\"uas\"" ], "optional": true, "field": "session_refresher", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "t38pt_usertpsource", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "regexten", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "fromdomain", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "fromuser", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "qualify", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "keepalive", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "defaultip", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "defaultuser", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "rtptimeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "rtpholdtimeout", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "rtpkeepalive", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "sendrpid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "outboundproxy", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "callbackextension", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timert1", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "timerb", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "qualifyfreq", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "contactpermit", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "contactdeny", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "contactacl", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "unsolicited_mailbox", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "use_q850_reason", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "maxforwards", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "encryption", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "avpf", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "force_avp", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "icesupport", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "dtlsenable", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"", "\"fingerprint\"", "\"certificate\"" ], "optional": true, "field": "dtlsverify", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dtlsrekey", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlscertfile", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlsprivatekey", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlscipher", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlscafile", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlscapath", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"active\"", "\"passive\"", "\"actpass\"" ], "optional": true, "field": "dtlssetup", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dtlsfingerprint", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "usereqphone", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "recordonfeature", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "recordofffeature", "description": "" }, { "group": "Body", "type": "Integer", "optional": true, "field": "call_limit", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "registertrying", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"" ], "optional": true, "field": "subscribemwi", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "vmexten", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mohinterpret", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mohsuggest", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "parkinglot", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"yes\"", "\"no\"", "\"nonat\"", "\"update\"", "\"update,nonat\"" ], "optional": true, "field": "canreinvite", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "loginInPause", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "resetPasswordToken", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "resetPasswordExpires", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "showWebBar", "description": "" }, { "group": "Body", "type": "Text", "optional": true, "field": "permissions", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "phoneBarUnconditionalNumber", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "phoneBarNoReplyNumber", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "phoneBarBusyNumber", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarUnconditional", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarNoReply", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarBusy", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "phoneBarDnd", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/user/index.js", "groupTitle": "Users" }, { "type": "delete", "url": "/api/users/destroy_many?ids={ids}", "title": "Deletes many Users", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/users/destroy_many?ids=1&ids=2&ids=3 -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "BulkDeleteUsers", "group": "Users", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "DeleteUsers", "group": "Users", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetAgents", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetChatInteractions", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetContacts", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetLists", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetQueues", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetRecordings", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "GetTeams", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/users?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/users?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/users?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/users?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/users?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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}", "type": "json" } ], "name": "GetVoiceQueuesRt", "group": "Users", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "Login", "group": "Users", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "Logout", "group": "Users", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "Pause", "group": "Users", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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}", "type": "json" } ], "name": "Unpause", "group": "Users", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/variables?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/variables?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/variables?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/variables?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/variables?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion run the following command: git fetch origin master

", "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": "

Motion returns the current and latest motion version.

", "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": "

Motion run the following command: git pull

", "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": "

Motion run the following command: git reset --hard FETCH_HEAD

", "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": "

Motion run the following command: pm2 restart motion

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/agents/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/agents/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/agents/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/agents/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/agents/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/calls/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/calls/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/calls/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/calls/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/calls/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/chanspy?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/chanspy?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/chanspy?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/chanspy?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/chanspy?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/contexts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/contexts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/contexts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/contexts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/contexts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/dials/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/dials/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/dials/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/dials/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/dials/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceDialReport/index.js", "groupTitle": "Voice_Dial_Reports" }, { "type": "post", "url": "/api/voice/dispositions", "title": "Creates a new Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateDispositions", "group": "Voice_Dispositions", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceDisposition/index.js", "groupTitle": "Voice_Dispositions" }, { "type": "delete", "url": "/api/voice/dispositions/{id}", "title": "Deletes a Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/dispositions/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteDispositions", "group": "Voice_Dispositions", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceDisposition/index.js", "groupTitle": "Voice_Dispositions" }, { "type": "get", "url": "/api/voice/dispositions", "title": "Gets a list of Dispositions", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/dispositions -v -u {name}:{password}", "type": "json" } ], "name": "GetDispositions", "group": "Voice_Dispositions", "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/dispositions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/dispositions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/dispositions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/dispositions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/dispositions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "version": "0.0.0", "filename": "server/api/voiceDisposition/index.js", "groupTitle": "Voice_Dispositions" }, { "type": "get", "url": "/api/voice/dispositions/{id}", "title": "Gets a single Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/dispositions/{id} -v -u {name}:{password}", "type": "json" } ], "name": "ShowDispositions", "group": "Voice_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceDisposition/index.js", "groupTitle": "Voice_Dispositions" }, { "type": "put", "url": "/api/voice/dispositions/{id}", "title": "Update an existing Disposition", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", "type": "json" } ], "name": "updateDispositions", "group": "Voice_Dispositions", "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceDisposition/index.js", "groupTitle": "Voice_Dispositions" }, { "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/extensions?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/extensions?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/extensions?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/extensions?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/extensions?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/mohs?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/mohs?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/mohs?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/mohs?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/mohs?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "maxsecs", "description": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "maxmsg", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/mails?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/mails?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/mails?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/mails?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/mails?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceMail/index.js", "groupTitle": "Voice_Mails" }, { "type": "post", "url": "/api/voice/mails/messages", "title": "Creates a new Message", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/mails/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateMessages", "group": "Voice_Messages", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "Virtual", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "Integer", "optional": false, "field": "msgnum", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "dir", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "context", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "macrocontext", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "callerid", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "origtime", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "duration", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mailboxuser", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "mailboxcontext", "description": "" }, { "group": "Body", "type": "Blob", "optional": true, "field": "recording", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "flag", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "msg_id", "description": "" }, { "group": "Body", "type": "String", "optional": false, "field": "stamp", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/mails/messages?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/mails/messages?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/mails/messages?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/mails/messages?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/mails/messages?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceMailMessage/index.js", "groupTitle": "Voice_Messages" }, { "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/queues/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/queues/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/queues/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/queues/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/queues/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": [ "\"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": "String", "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": "

Active/Disactive Campaign

" }, { "group": "Body", "type": "String", "allowedValues": [ "\"preview\"", "\"progressive\"", "\"power\"", "\"predictive\"" ], "optional": true, "field": "dialMethod", "description": "

Dial Method.

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialLimitChannel", "description": "

Max 9999 channels, 0 means unlimited.

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialLimitQueue", "description": "

Max 9999 member in queue(min:1, max:9999), 0 means unlimited.

" }, { "group": "Body", "type": "Float", "optional": true, "field": "dialPowerLevel", "description": "

Power Level: Calls for agents (min:1, max:10).

" }, { "group": "Body", "type": "String", "allowedValues": [ "\"agentBusyFactor\"", "\"dropRate\"" ], "optional": true, "field": "dialPredictiveOptimization", "description": "

Only for predictive method.

" }, { "group": "Body", "type": "Float", "optional": true, "field": "dialPredictiveOptimizationPercentage", "description": "

Predictive Optimization Percentage (min: 1, max: 95)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialPredictiveInterval", "description": "

Intervall Predictive Minutes (min:5 max:30)

" }, { "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": "

Originate Timeout Seconds (min:1, max:999)

" }, { "group": "Body", "type": "String", "optional": true, "field": "dialQueueOptions", "description": "

https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialQueueTimeout", "description": "

Queue Timeout Seconds (min:1, max:999)

" }, { "group": "Body", "type": "String", "optional": true, "field": "dialQueueProject", "description": "

AGI queue option (use: agi://127.0.0.1/square,<project_name>)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialCongestionMaxRetry", "description": "

#Congestion Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialCongestionRetryFrequency", "description": "

Congestion Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialBusyMaxRetry", "description": "

#Busy Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialBusyRetryFrequency", "description": "

Busy Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialNoAnswerMaxRetry", "description": "

#NoAnswer Retry (min:1, max:999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialNoAnswerRetryFrequency", "description": "

NoAnswer Retry Frequency Minutes (min:1, max:99999)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialGlobalMaxRetry", "description": "

#Global Max Retry (min:1, max:999)

" }, { "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": "

Active/Disactive AMD

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDInitialSilence", "description": "

#AMD Initial Silence

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDGreeting", "description": "

#AMD Greeting

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDAfterGreetingSilence", "description": "

#AMD After Greeting Silence

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDTotalAnalysisTime", "description": "

#AMD Total Analysis Time

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDMinWordLength", "description": "

#AMD Min Word Length

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDBetweenWordsSilence", "description": "

#AMD Between Words Silence

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDMaximumNumberOfWords", "description": "

#AMD Maximum Number Of Words

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDSilenceThreshold", "description": "

#AMD Silence Threshold (min:0, max:32767)

" }, { "group": "Body", "type": "Integer", "optional": true, "field": "dialAMDMaximumWordLength", "description": "

#AMD Maximum Word Length

" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/queues?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/queues?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/queues?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/queues?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/queues?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "createdAt", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "updatedAt", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceRecording/index.js", "groupTitle": "Voice_Recordings" }, { "type": "delete", "url": "/api/voice/recordings/{id}", "title": "Deletes a Recording", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/voice/recordings/{id} -v -u {name}:{password} -X DELETE", "type": "json" } ], "name": "DeleteRecordings", "group": "Voice_Recordings", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/recordings?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/recordings?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/recordings?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/recordings?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/recordings?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voice/transfers/reports?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voice/transfers/reports?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voice/transfers/reports?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voice/transfers/reports?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voice/transfers/reports?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/voiceTransferReport/index.js", "groupTitle": "Voice_Transfer_Reports" }, { "type": "post", "url": "/api/integrations/zendesk/accounts", "title": "Creates a new Zendesk Account", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/zendesk/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateZendesk_Accounts", "group": "Zendesk_Accounts", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "optional": true, "field": "name", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "description", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "username", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "password", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "token", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "remoteUri", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"password\"", "\"token\"" ], "optional": true, "field": "authType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "serverUrl", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"integrationTab\"", "\"newTab\"" ], "optional": true, "field": "type", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zendesk/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zendesk/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zendesk/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zendesk/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zendesk/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zendesk/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zendesk/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zendesk/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zendesk/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zendesk/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intZendeskConfiguration/index.js", "groupTitle": "Zendesk_Configurations" }, { "type": "post", "url": "/api/integrations/zendesk/fields", "title": "Creates a new Zendesk Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/zendesk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateZendesk_Fields", "group": "Zendesk_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "nameField", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "customField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zendesk/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zendesk/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zendesk/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zendesk/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zendesk/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "authToken", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "host", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "serverUrl", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zoho/accounts?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zoho/accounts?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zoho/accounts?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zoho/accounts?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zoho/accounts?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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", "optional": true, "field": "description", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zoho/configurations?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zoho/configurations?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zoho/configurations?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zoho/configurations?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zoho/configurations?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/intZohoConfiguration/index.js", "groupTitle": "Zoho_Configurations" }, { "type": "post", "url": "/api/integrations/zoho/fields", "title": "Creates a new Zoho Field", "examples": [ { "title": "Example usage:", "content": "curl https://{domain}/api/integrations/zoho/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", "type": "json" } ], "name": "CreateZoho_Fields", "group": "Zoho_Fields", "parameter": { "fields": { "Body": [ { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"", "\"keyValue\"" ], "optional": true, "field": "type", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "content", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "key", "description": "" }, { "group": "Body", "type": "String", "allowedValues": [ "\"string\"", "\"variable\"", "\"customVariable\"" ], "optional": true, "field": "keyType", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "keyContent", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "idField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "nameField", "description": "" }, { "group": "Body", "type": "Boolean", "optional": true, "field": "customField", "description": "" }, { "group": "Body", "type": "String", "optional": true, "field": "variableName", "description": "" } ] } }, "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/integrations/zoho/fields?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/integrations/zoho/fields?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/integrations/zoho/fields?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/integrations/zoho/fields?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/integrations/zoho/fields?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cdr?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cdr?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cdr?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cdr?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cdr?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "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": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/voiceQueuesLog?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/voiceQueuesLog?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/voiceQueuesLog?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/voiceQueuesLog?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/voiceQueuesLog?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "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 a640248..4bee870 100644 --- a/apidoc/api_project.js +++ b/apidoc/api_project.js @@ -1 +1 @@ -define({ "name": "xCALLY Motion API", "version": "2.0.28", "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": "

The API

\n

This is the documentation for the xCALLY MOTION API.

\n

We make changes to the APIs from time to time. For more information, see Changelog.

\n

The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.

\n

The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].

\n

Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:

\n
GET /api/users\n
\n

Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:

\n
https://motion.xcally.com/api/users\n
\n

Curly braces, {}, indicate values you have to supply. Example:

\n
GET  /api/users/{id}\n
\n

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].

\n

The examples use basic authentication requiring a xCALLY username and password.

\n

Security and Authentication

\n

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.

\n

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 a xCALLY API token.

\n

Basic authentication

\n

Use the following authentication format with your username and password:\n{username}:{password}

\n

Example:

\n
curl -u admin:password https://motion.xcally.com/api/users\n
\n

OAuth access token

\n

The xCALLY API supports OAuth authorization flows.

\n

OAuth access tokens also permit client-side API requests.

\n

In your requests, specify the access token in an Authorization header as follows:\nAuthorization: Bearer {token}

\n

Example:

\n
curl -H "Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo" https://motion.xcally.com/api/users\n
\n

Request Format

\n

The xCALLY API is a JSON API. You must supply a Content-Type: application/json header in PUT and POST requests. You must set an Accept: application/json header on all requests. You may get a text/plain response in case of an error like a bad request. You should treat this as an error you need to fix.

\n

Response Format

\n

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.

\n

Responses may have the status codes described in the following sections.

\n

200 range

\n

The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.

\n

400 range

\n

The request was not successful. The content type of the response may be text/plain for API-level error messages, such as when trying to call the API without SSL. The content type is application/json for business-level error messages because the response includes a JSON object with information about the error.

\n

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.

\n

500 range

\n

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 support@xcally.com.

\n

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.

\n

Data Types

\n

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.

\n

ID integers

\n

Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.

\n

The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.

\n

Time stamps

\n

Time stamps use UTC time and are formatted as ISO 8601 strings. Example: 2017-04-16T09:14:57Z

\n" }, "template": { "withGenerator": false, "withCompare": false, "forceLanguage": "en" }, "sampleUrl": false, "defaultVersion": "0.0.0", "apidoc": "0.3.0", "generator": { "name": "apidoc", "time": "2017-09-05T09:32:17.147Z", "url": "http://apidocjs.com", "version": "0.17.6" } }); +define({ "name": "xCALLY Motion API", "version": "2.0.29", "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": "

The API

\n

This is the documentation for the xCALLY MOTION API.

\n

We make changes to the APIs from time to time. For more information, see Changelog.

\n

The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.

\n

The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].

\n

Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:

\n
GET /api/users\n
\n

Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:

\n
https://motion.xcally.com/api/users\n
\n

Curly braces, {}, indicate values you have to supply. Example:

\n
GET  /api/users/{id}\n
\n

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].

\n

The examples use basic authentication requiring a xCALLY username and password.

\n

Security and Authentication

\n

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.

\n

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 a xCALLY API token.

\n

Basic authentication

\n

Use the following authentication format with your username and password:\n{username}:{password}

\n

Example:

\n
curl -u admin:password https://motion.xcally.com/api/users\n
\n

OAuth access token

\n

The xCALLY API supports OAuth authorization flows.

\n

OAuth access tokens also permit client-side API requests.

\n

In your requests, specify the access token in an Authorization header as follows:\nAuthorization: Bearer {token}

\n

Example:

\n
curl -H "Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo" https://motion.xcally.com/api/users\n
\n

Request Format

\n

The xCALLY API is a JSON API. You must supply a Content-Type: application/json header in PUT and POST requests. You must set an Accept: application/json header on all requests. You may get a text/plain response in case of an error like a bad request. You should treat this as an error you need to fix.

\n

Response Format

\n

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.

\n

Responses may have the status codes described in the following sections.

\n

200 range

\n

The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.

\n

400 range

\n

The request was not successful. The content type of the response may be text/plain for API-level error messages, such as when trying to call the API without SSL. The content type is application/json for business-level error messages because the response includes a JSON object with information about the error.

\n

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.

\n

500 range

\n

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 support@xcally.com.

\n

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.

\n

Data Types

\n

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.

\n

ID integers

\n

Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.

\n

The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.

\n

Time stamps

\n

Time stamps use UTC time and are formatted as ISO 8601 strings. Example: 2017-04-16T09:14:57Z

\n" }, "template": { "withGenerator": false, "withCompare": false, "forceLanguage": "en" }, "sampleUrl": false, "defaultVersion": "0.0.0", "apidoc": "0.3.0", "generator": { "name": "apidoc", "time": "2017-09-20T13:38:50.342Z", "url": "http://apidocjs.com", "version": "0.17.6" } }); diff --git a/apidoc/api_project.json b/apidoc/api_project.json index 69704ec..1bb97d4 100644 --- a/apidoc/api_project.json +++ b/apidoc/api_project.json @@ -1 +1 @@ -{ "name": "xCALLY Motion API", "version": "2.0.28", "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": "

The API

\n

This is the documentation for the xCALLY MOTION API.

\n

We make changes to the APIs from time to time. For more information, see Changelog.

\n

The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.

\n

The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].

\n

Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:

\n
GET /api/users\n
\n

Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:

\n
https://motion.xcally.com/api/users\n
\n

Curly braces, {}, indicate values you have to supply. Example:

\n
GET  /api/users/{id}\n
\n

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].

\n

The examples use basic authentication requiring a xCALLY username and password.

\n

Security and Authentication

\n

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.

\n

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 a xCALLY API token.

\n

Basic authentication

\n

Use the following authentication format with your username and password:\n{username}:{password}

\n

Example:

\n
curl -u admin:password https://motion.xcally.com/api/users\n
\n

OAuth access token

\n

The xCALLY API supports OAuth authorization flows.

\n

OAuth access tokens also permit client-side API requests.

\n

In your requests, specify the access token in an Authorization header as follows:\nAuthorization: Bearer {token}

\n

Example:

\n
curl -H "Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo" https://motion.xcally.com/api/users\n
\n

Request Format

\n

The xCALLY API is a JSON API. You must supply a Content-Type: application/json header in PUT and POST requests. You must set an Accept: application/json header on all requests. You may get a text/plain response in case of an error like a bad request. You should treat this as an error you need to fix.

\n

Response Format

\n

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.

\n

Responses may have the status codes described in the following sections.

\n

200 range

\n

The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.

\n

400 range

\n

The request was not successful. The content type of the response may be text/plain for API-level error messages, such as when trying to call the API without SSL. The content type is application/json for business-level error messages because the response includes a JSON object with information about the error.

\n

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.

\n

500 range

\n

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 support@xcally.com.

\n

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.

\n

Data Types

\n

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.

\n

ID integers

\n

Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.

\n

The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.

\n

Time stamps

\n

Time stamps use UTC time and are formatted as ISO 8601 strings. Example: 2017-04-16T09:14:57Z

\n" }, "template": { "withGenerator": false, "withCompare": false, "forceLanguage": "en" }, "sampleUrl": false, "defaultVersion": "0.0.0", "apidoc": "0.3.0", "generator": { "name": "apidoc", "time": "2017-09-05T09:32:17.147Z", "url": "http://apidocjs.com", "version": "0.17.6" } } +{ "name": "xCALLY Motion API", "version": "2.0.29", "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": "

The API

\n

This is the documentation for the xCALLY MOTION API.

\n

We make changes to the APIs from time to time. For more information, see Changelog.

\n

The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.

\n

The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].

\n

Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:

\n
GET /api/users\n
\n

Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:

\n
https://motion.xcally.com/api/users\n
\n

Curly braces, {}, indicate values you have to supply. Example:

\n
GET  /api/users/{id}\n
\n

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].

\n

The examples use basic authentication requiring a xCALLY username and password.

\n

Security and Authentication

\n

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.

\n

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 a xCALLY API token.

\n

Basic authentication

\n

Use the following authentication format with your username and password:\n{username}:{password}

\n

Example:

\n
curl -u admin:password https://motion.xcally.com/api/users\n
\n

OAuth access token

\n

The xCALLY API supports OAuth authorization flows.

\n

OAuth access tokens also permit client-side API requests.

\n

In your requests, specify the access token in an Authorization header as follows:\nAuthorization: Bearer {token}

\n

Example:

\n
curl -H "Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo" https://motion.xcally.com/api/users\n
\n

Request Format

\n

The xCALLY API is a JSON API. You must supply a Content-Type: application/json header in PUT and POST requests. You must set an Accept: application/json header on all requests. You may get a text/plain response in case of an error like a bad request. You should treat this as an error you need to fix.

\n

Response Format

\n

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.

\n

Responses may have the status codes described in the following sections.

\n

200 range

\n

The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.

\n

400 range

\n

The request was not successful. The content type of the response may be text/plain for API-level error messages, such as when trying to call the API without SSL. The content type is application/json for business-level error messages because the response includes a JSON object with information about the error.

\n

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.

\n

500 range

\n

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 support@xcally.com.

\n

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.

\n

Data Types

\n

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.

\n

ID integers

\n

Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.

\n

The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.

\n

Time stamps

\n

Time stamps use UTC time and are formatted as ISO 8601 strings. Example: 2017-04-16T09:14:57Z

\n" }, "template": { "withGenerator": false, "withCompare": false, "forceLanguage": "en" }, "sampleUrl": false, "defaultVersion": "0.0.0", "apidoc": "0.3.0", "generator": { "name": "apidoc", "time": "2017-09-20T13:38:50.342Z", "url": "http://apidocjs.com", "version": "0.17.6" } } diff --git a/package.json b/package.json index ae53003..985d304 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "motion", - "version": "2.0.28", + "version": "2.0.29", "description": "xCALLY Motion is the new Realtime asynchronous solution for your multichannel contact center over Asterisk.", "main": "server/app.js", "engines": { @@ -117,4 +117,4 @@ "mocha": "^3.1.0", "time-grunt": "^1.4.0" } -} +} \ No newline at end of file diff --git a/public/app/main/apps/analytics/i18n/da.json b/public/app/main/apps/analytics/i18n/da.json index 29f279f..1031787 100644 --- a/public/app/main/apps/analytics/i18n/da.json +++ b/public/app/main/apps/analytics/i18n/da.json @@ -77,6 +77,9 @@ "CUSTOM_METRIC": "Custom metrisk", "DELETE_EXTRACTEDREPORT": "Slet uddraget rapport", "DOWNLOAD_EXTRACTEDREPORT": "Hent uddraget rapport", - "EDIT_EXTRACTEDREPORT": "Rediger uddraget rapport" + "EDIT_EXTRACTEDREPORT": "Rediger uddraget rapport", + "PAGE": "Page", + "ROWSPERPAGE": "Rækker pr. side", + "OF": "Af" } } \ No newline at end of file diff --git a/public/app/main/apps/analytics/i18n/de.json b/public/app/main/apps/analytics/i18n/de.json index a86718c..0e684d8 100644 --- a/public/app/main/apps/analytics/i18n/de.json +++ b/public/app/main/apps/analytics/i18n/de.json @@ -77,6 +77,9 @@ "CUSTOM_METRIC": "Benutzerdefinierte Metrik", "DELETE_EXTRACTEDREPORT": "Extrahiert Bericht löschen", "DOWNLOAD_EXTRACTEDREPORT": "Download extrahiert Bericht", - "EDIT_EXTRACTEDREPORT": "Extrahiert Bericht bearbeiten" + "EDIT_EXTRACTEDREPORT": "Extrahiert Bericht bearbeiten", + "PAGE": "Seite", + "ROWSPERPAGE": "Zeilen pro Seite", + "OF": "Von" } } \ No newline at end of file diff --git a/public/app/main/apps/analytics/i18n/en.json b/public/app/main/apps/analytics/i18n/en.json index 47187fd..21fa4ef 100644 --- a/public/app/main/apps/analytics/i18n/en.json +++ b/public/app/main/apps/analytics/i18n/en.json @@ -80,6 +80,6 @@ "DOWNLOAD_EXTRACTEDREPORT": "Download Extracted Report", "PAGE": "Page", "ROWSPERPAGE": "Rows per page", - "OF": "Of" + "OF": "of" } } \ No newline at end of file diff --git a/public/app/main/apps/analytics/i18n/es.json b/public/app/main/apps/analytics/i18n/es.json index 01e6e78..bd6e2e3 100644 --- a/public/app/main/apps/analytics/i18n/es.json +++ b/public/app/main/apps/analytics/i18n/es.json @@ -77,6 +77,9 @@ "CUSTOM_METRIC": "Métrica personalizada", "DELETE_EXTRACTEDREPORT": "Eliminar informe extraído", "DOWNLOAD_EXTRACTEDREPORT": "Descargar informe extraído", - "EDIT_EXTRACTEDREPORT": "Editar informe extraído" + "EDIT_EXTRACTEDREPORT": "Editar informe extraído", + "PAGE": "Página", + "ROWSPERPAGE": "Filas por página.", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/analytics/i18n/fa.json b/public/app/main/apps/analytics/i18n/fa.json index 0ccc2a3..218bebb 100644 --- a/public/app/main/apps/analytics/i18n/fa.json +++ b/public/app/main/apps/analytics/i18n/fa.json @@ -77,6 +77,9 @@ "CUSTOM_METRIC": "متري سفارشی", "DELETE_EXTRACTEDREPORT": "گزارش استخراج شده را حذف کنید", "DOWNLOAD_EXTRACTEDREPORT": "گزارش استخراج شده را بارگیری کنید", - "EDIT_EXTRACTEDREPORT": "ویرایش گزارش استخراج شده" + "EDIT_EXTRACTEDREPORT": "ویرایش گزارش استخراج شده", + "PAGE": "صفحه", + "ROWSPERPAGE": "رديف در صفحه", + "OF": "از" } } \ No newline at end of file diff --git a/public/app/main/apps/analytics/i18n/fi.json b/public/app/main/apps/analytics/i18n/fi.json index ee2e050..c9883f8 100644 --- a/public/app/main/apps/analytics/i18n/fi.json +++ b/public/app/main/apps/analytics/i18n/fi.json @@ -77,6 +77,9 @@ "CUSTOM_METRIC": "Mukautettu metrinen", "DELETE_EXTRACTEDREPORT": "Poista uutetaan raportti", "DOWNLOAD_EXTRACTEDREPORT": "Lataa raportti uuttaa", - "EDIT_EXTRACTEDREPORT": "Muokkaa raportin uuttaa" + "EDIT_EXTRACTEDREPORT": "Muokkaa raportin uuttaa", + "PAGE": "Sivu", + "ROWSPERPAGE": "Riviä sivulle", + "OF": "," } } \ No newline at end of file diff --git a/public/app/main/apps/analytics/i18n/fr.json b/public/app/main/apps/analytics/i18n/fr.json index 09b6526..be8d5e4 100644 --- a/public/app/main/apps/analytics/i18n/fr.json +++ b/public/app/main/apps/analytics/i18n/fr.json @@ -77,6 +77,9 @@ "CUSTOM_METRIC": "Métriques personnalisées", "DELETE_EXTRACTEDREPORT": "Supprimer rapport extrait", "DOWNLOAD_EXTRACTEDREPORT": "Télécharger le rapport d'Extraits", - "EDIT_EXTRACTEDREPORT": "Rapport Edit" + "EDIT_EXTRACTEDREPORT": "Rapport Edit", + "PAGE": "La page", + "ROWSPERPAGE": "Les lignes par page", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/analytics/i18n/hi.json b/public/app/main/apps/analytics/i18n/hi.json index b965c90..4140a58 100644 --- a/public/app/main/apps/analytics/i18n/hi.json +++ b/public/app/main/apps/analytics/i18n/hi.json @@ -77,6 +77,9 @@ "CUSTOM_METRIC": "कस्टम मीट्रिक", "DELETE_EXTRACTEDREPORT": "सत्व प्रतिवेदन को हटाएं", "DOWNLOAD_EXTRACTEDREPORT": "डाउनलोड निष्कर्षित की रिपोर्ट", - "EDIT_EXTRACTEDREPORT": "संपादित करने के लिए सत्व प्रतिवेदन" + "EDIT_EXTRACTEDREPORT": "संपादित करने के लिए सत्व प्रतिवेदन", + "PAGE": "पृष्ठ", + "ROWSPERPAGE": "पंक्तियां प्रति पृष्ठ", + "OF": "की" } } \ No newline at end of file diff --git a/public/app/main/apps/analytics/i18n/it.json b/public/app/main/apps/analytics/i18n/it.json index 23e37b7..ec10756 100644 --- a/public/app/main/apps/analytics/i18n/it.json +++ b/public/app/main/apps/analytics/i18n/it.json @@ -80,6 +80,6 @@ "DOWNLOAD_EXTRACTEDREPORT": "Scarica Report Estratto", "PAGE": "Pagina", "ROWSPERPAGE": "Righe per pagina", - "OF": "Di" + "OF": "di" } } \ No newline at end of file diff --git a/public/app/main/apps/analytics/i18n/ja.json b/public/app/main/apps/analytics/i18n/ja.json index 06d14e0..87baba6 100644 --- a/public/app/main/apps/analytics/i18n/ja.json +++ b/public/app/main/apps/analytics/i18n/ja.json @@ -77,6 +77,9 @@ "CUSTOM_METRIC": "カスタムメトリック", "DELETE_EXTRACTEDREPORT": "抽出されたレポートを削除します。", "DOWNLOAD_EXTRACTEDREPORT": "抽出されたレポートのダウンロード", - "EDIT_EXTRACTEDREPORT": "抽出されたレポートの編集" + "EDIT_EXTRACTEDREPORT": "抽出されたレポートの編集", + "PAGE": "ページ", + "ROWSPERPAGE": "ページあたりの行数", + "OF": "の" } } \ No newline at end of file diff --git a/public/app/main/apps/analytics/i18n/ko.json b/public/app/main/apps/analytics/i18n/ko.json index 6177a82..0d31f94 100644 --- a/public/app/main/apps/analytics/i18n/ko.json +++ b/public/app/main/apps/analytics/i18n/ko.json @@ -77,6 +77,9 @@ "CUSTOM_METRIC": "사용자 정의 메트릭을", "DELETE_EXTRACTEDREPORT": "추출된 보고서 삭제", "DOWNLOAD_EXTRACTEDREPORT": "추출된 보고서 다운로드", - "EDIT_EXTRACTEDREPORT": "추출된 보고서 편집" + "EDIT_EXTRACTEDREPORT": "추출된 보고서 편집", + "PAGE": "페이지", + "ROWSPERPAGE": "페이지 당 행", + "OF": "중" } } \ No newline at end of file diff --git a/public/app/main/apps/analytics/i18n/nl.json b/public/app/main/apps/analytics/i18n/nl.json index a9cad4d..7376c58 100644 --- a/public/app/main/apps/analytics/i18n/nl.json +++ b/public/app/main/apps/analytics/i18n/nl.json @@ -77,6 +77,9 @@ "CUSTOM_METRIC": "Aangepaste metrisch", "DELETE_EXTRACTEDREPORT": "Verwijder geëxtraheerd verslag", "DOWNLOAD_EXTRACTEDREPORT": "Download geëxtraheerd verslag", - "EDIT_EXTRACTEDREPORT": "Edit geëxtraheerd verslag" + "EDIT_EXTRACTEDREPORT": "Edit geëxtraheerd verslag", + "PAGE": "Pagina", + "ROWSPERPAGE": "Rijen per pagina", + "OF": "Van" } } \ No newline at end of file diff --git a/public/app/main/apps/analytics/i18n/no.json b/public/app/main/apps/analytics/i18n/no.json index 6347737..4a01556 100644 --- a/public/app/main/apps/analytics/i18n/no.json +++ b/public/app/main/apps/analytics/i18n/no.json @@ -77,6 +77,9 @@ "CUSTOM_METRIC": "Egendefinerte nøkkeltall", "DELETE_EXTRACTEDREPORT": "Slette ut rapport", "DOWNLOAD_EXTRACTEDREPORT": "Last ned rapporten ut", - "EDIT_EXTRACTEDREPORT": "Rediger ekstrahert rapport" + "EDIT_EXTRACTEDREPORT": "Rediger ekstrahert rapport", + "PAGE": "Siden", + "ROWSPERPAGE": "Linjer per side", + "OF": "Av" } } \ No newline at end of file diff --git a/public/app/main/apps/analytics/i18n/pt-PT.json b/public/app/main/apps/analytics/i18n/pt-PT.json index 739ff5e..d701d70 100644 --- a/public/app/main/apps/analytics/i18n/pt-PT.json +++ b/public/app/main/apps/analytics/i18n/pt-PT.json @@ -77,6 +77,9 @@ "CUSTOM_METRIC": "Métrica personalizada", "DELETE_EXTRACTEDREPORT": "Excluir Relatório extraído", "DOWNLOAD_EXTRACTEDREPORT": "Baixar relatório extraído", - "EDIT_EXTRACTEDREPORT": "Editar Relatório extraído" + "EDIT_EXTRACTEDREPORT": "Editar Relatório extraído", + "PAGE": "Página", + "ROWSPERPAGE": "Linhas por página", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/analytics/i18n/ru.json b/public/app/main/apps/analytics/i18n/ru.json index 3a43896..58c72a0 100644 --- a/public/app/main/apps/analytics/i18n/ru.json +++ b/public/app/main/apps/analytics/i18n/ru.json @@ -77,6 +77,9 @@ "CUSTOM_METRIC": "Пользовательские метрики", "DELETE_EXTRACTEDREPORT": "Удалить извлеченные доклад", "DOWNLOAD_EXTRACTEDREPORT": "Загрузить доклад извлечены", - "EDIT_EXTRACTEDREPORT": "Редактировать распаковали доклад" + "EDIT_EXTRACTEDREPORT": "Редактировать распаковали доклад", + "PAGE": "Страница", + "ROWSPERPAGE": "Строк на странице", + "OF": "В" } } \ No newline at end of file diff --git a/public/app/main/apps/analytics/i18n/sv.json b/public/app/main/apps/analytics/i18n/sv.json index 4c26652..5abfcb8 100644 --- a/public/app/main/apps/analytics/i18n/sv.json +++ b/public/app/main/apps/analytics/i18n/sv.json @@ -77,6 +77,9 @@ "CUSTOM_METRIC": "Anpassad metrisk", "DELETE_EXTRACTEDREPORT": "Ta bort utdraget rapport", "DOWNLOAD_EXTRACTEDREPORT": "Download extraheras rapport", - "EDIT_EXTRACTEDREPORT": "Redigera extraheras rapport" + "EDIT_EXTRACTEDREPORT": "Redigera extraheras rapport", + "PAGE": "Sidan", + "ROWSPERPAGE": "Rader per sida", + "OF": "Av" } } \ No newline at end of file diff --git a/public/app/main/apps/analytics/i18n/tr.json b/public/app/main/apps/analytics/i18n/tr.json index e703a5a..ea14f57 100644 --- a/public/app/main/apps/analytics/i18n/tr.json +++ b/public/app/main/apps/analytics/i18n/tr.json @@ -77,6 +77,9 @@ "CUSTOM_METRIC": "Özel Metrik", "DELETE_EXTRACTEDREPORT": "Ayıklanan Silin Raporu", "DOWNLOAD_EXTRACTEDREPORT": "Ayıklanan Karşıdan Raporu", - "EDIT_EXTRACTEDREPORT": "Ayıklanan Düzenle Rapor" + "EDIT_EXTRACTEDREPORT": "Ayıklanan Düzenle Rapor", + "PAGE": "Sayfa", + "ROWSPERPAGE": "Sayfadaki satırları", + "OF": "Ve" } } \ No newline at end of file diff --git a/public/app/main/apps/analytics/i18n/zh-CN.json b/public/app/main/apps/analytics/i18n/zh-CN.json index 8021581..252d73a 100644 --- a/public/app/main/apps/analytics/i18n/zh-CN.json +++ b/public/app/main/apps/analytics/i18n/zh-CN.json @@ -77,6 +77,9 @@ "CUSTOM_METRIC": "自定义度量", "DELETE_EXTRACTEDREPORT": "删除解压的报告。", "DOWNLOAD_EXTRACTEDREPORT": "下载解压缩的报告。", - "EDIT_EXTRACTEDREPORT": "编辑解压的报告。" + "EDIT_EXTRACTEDREPORT": "编辑解压的报告。", + "PAGE": "页面", + "ROWSPERPAGE": "每页的行数。", + "OF": "的" } } \ No newline at end of file diff --git a/public/app/main/apps/analytics/i18n/zh-TW.json b/public/app/main/apps/analytics/i18n/zh-TW.json index 4191970..e18c0d2 100644 --- a/public/app/main/apps/analytics/i18n/zh-TW.json +++ b/public/app/main/apps/analytics/i18n/zh-TW.json @@ -77,6 +77,9 @@ "CUSTOM_METRIC": "自訂公制", "DELETE_EXTRACTEDREPORT": "解壓縮後刪除報告", "DOWNLOAD_EXTRACTEDREPORT": "解壓縮下載報告", - "EDIT_EXTRACTEDREPORT": "編輯擷取報告" + "EDIT_EXTRACTEDREPORT": "編輯擷取報告", + "PAGE": "頁面", + "ROWSPERPAGE": "每頁行數", + "OF": "的" } } \ No newline at end of file diff --git a/public/app/main/apps/callysquare/i18n/da.json b/public/app/main/apps/callysquare/i18n/da.json index 2221a76..557bd6f 100644 --- a/public/app/main/apps/callysquare/i18n/da.json +++ b/public/app/main/apps/callysquare/i18n/da.json @@ -170,6 +170,9 @@ "TEST_ODBC": "Test ODBC", "FILENAME": "Filnavn", "EDIT_SQUARERECORDING": "Rediger Square optagelse", - "DELETE": "Slet" + "DELETE": "Slet", + "PAGE": "Page", + "ROWSPERPAGE": "Rækker pr. side", + "OF": "Af" } } \ No newline at end of file diff --git a/public/app/main/apps/callysquare/i18n/de.json b/public/app/main/apps/callysquare/i18n/de.json index 88af369..f6fdd89 100644 --- a/public/app/main/apps/callysquare/i18n/de.json +++ b/public/app/main/apps/callysquare/i18n/de.json @@ -170,6 +170,9 @@ "TEST_ODBC": "Test ODBC", "FILENAME": "Dateiname", "EDIT_SQUARERECORDING": "Platz Aufnahme bearbeiten", - "DELETE": "Löschen" + "DELETE": "Löschen", + "PAGE": "Seite", + "ROWSPERPAGE": "Zeilen pro Seite", + "OF": "Von" } } \ No newline at end of file diff --git a/public/app/main/apps/callysquare/i18n/en.json b/public/app/main/apps/callysquare/i18n/en.json index 1efcb30..b21ff9b 100644 --- a/public/app/main/apps/callysquare/i18n/en.json +++ b/public/app/main/apps/callysquare/i18n/en.json @@ -173,6 +173,6 @@ "DELETE": "Delete", "PAGE": "Page", "ROWSPERPAGE": "Rows per page", - "OF": "Of" + "OF": "of" } } \ No newline at end of file diff --git a/public/app/main/apps/callysquare/i18n/es.json b/public/app/main/apps/callysquare/i18n/es.json index 469e0ac..ce044f0 100644 --- a/public/app/main/apps/callysquare/i18n/es.json +++ b/public/app/main/apps/callysquare/i18n/es.json @@ -170,6 +170,9 @@ "TEST_ODBC": "ODBC Test", "FILENAME": "Filename", "EDIT_SQUARERECORDING": "Editar la grabación cuadrado", - "DELETE": "Eliminar" + "DELETE": "Eliminar", + "PAGE": "Página", + "ROWSPERPAGE": "Filas por página.", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/callysquare/i18n/fa.json b/public/app/main/apps/callysquare/i18n/fa.json index 810db61..7df8b09 100644 --- a/public/app/main/apps/callysquare/i18n/fa.json +++ b/public/app/main/apps/callysquare/i18n/fa.json @@ -170,6 +170,9 @@ "TEST_ODBC": "تست ODBC", "FILENAME": "Filename", "EDIT_SQUARERECORDING": "ویرایش ثبت مربع", - "DELETE": "حذف" + "DELETE": "حذف", + "PAGE": "صفحه", + "ROWSPERPAGE": "رديف در صفحه", + "OF": "از" } } \ No newline at end of file diff --git a/public/app/main/apps/callysquare/i18n/fi.json b/public/app/main/apps/callysquare/i18n/fi.json index 38aecb3..2aa1001 100644 --- a/public/app/main/apps/callysquare/i18n/fi.json +++ b/public/app/main/apps/callysquare/i18n/fi.json @@ -170,6 +170,9 @@ "TEST_ODBC": "Testaa ODBC", "FILENAME": "Tiedostonimi", "EDIT_SQUARERECORDING": "Muokkaa Square tallennus", - "DELETE": "Poista" + "DELETE": "Poista", + "PAGE": "Sivu", + "ROWSPERPAGE": "Riviä sivulle", + "OF": "," } } \ No newline at end of file diff --git a/public/app/main/apps/callysquare/i18n/fr.json b/public/app/main/apps/callysquare/i18n/fr.json index 1e795f2..4a31042 100644 --- a/public/app/main/apps/callysquare/i18n/fr.json +++ b/public/app/main/apps/callysquare/i18n/fr.json @@ -170,6 +170,9 @@ "TEST_ODBC": "ODBC Test", "FILENAME": "Nom du fichier", "EDIT_SQUARERECORDING": "Modifier enregistrement carrés", - "DELETE": "Supprimer" + "DELETE": "Supprimer", + "PAGE": "La page", + "ROWSPERPAGE": "Les lignes par page", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/callysquare/i18n/hi.json b/public/app/main/apps/callysquare/i18n/hi.json index 9c61cd8..fc4aec8 100644 --- a/public/app/main/apps/callysquare/i18n/hi.json +++ b/public/app/main/apps/callysquare/i18n/hi.json @@ -170,6 +170,9 @@ "TEST_ODBC": "टेस्ट ODBC", "FILENAME": "फ़ाइल नाम", "EDIT_SQUARERECORDING": "रिकॉर्डिंग वर्गाकार संपादित करें", - "DELETE": "हटाना" + "DELETE": "हटाना", + "PAGE": "पृष्ठ", + "ROWSPERPAGE": "पंक्तियां प्रति पृष्ठ", + "OF": "की" } } \ No newline at end of file diff --git a/public/app/main/apps/callysquare/i18n/it.json b/public/app/main/apps/callysquare/i18n/it.json index 0dc2680..883536d 100644 --- a/public/app/main/apps/callysquare/i18n/it.json +++ b/public/app/main/apps/callysquare/i18n/it.json @@ -173,6 +173,6 @@ "DELETE": "Elimina", "PAGE": "Pagina", "ROWSPERPAGE": "Righe per pagina", - "OF": "Di" + "OF": "di" } } \ No newline at end of file diff --git a/public/app/main/apps/callysquare/i18n/ja.json b/public/app/main/apps/callysquare/i18n/ja.json index 3f0b666..970409a 100644 --- a/public/app/main/apps/callysquare/i18n/ja.json +++ b/public/app/main/apps/callysquare/i18n/ja.json @@ -170,6 +170,9 @@ "TEST_ODBC": "ODBC をテスト", "FILENAME": "ファイル名", "EDIT_SQUARERECORDING": "編集広場の録音", - "DELETE": "削除" + "DELETE": "削除", + "PAGE": "ページ", + "ROWSPERPAGE": "ページあたりの行数", + "OF": "の" } } \ No newline at end of file diff --git a/public/app/main/apps/callysquare/i18n/ko.json b/public/app/main/apps/callysquare/i18n/ko.json index 8e48f83..1ff3fa0 100644 --- a/public/app/main/apps/callysquare/i18n/ko.json +++ b/public/app/main/apps/callysquare/i18n/ko.json @@ -170,6 +170,9 @@ "TEST_ODBC": "ODBC 테스트", "FILENAME": "파일 이름", "EDIT_SQUARERECORDING": "광장 녹음 편집", - "DELETE": "삭제" + "DELETE": "삭제", + "PAGE": "페이지", + "ROWSPERPAGE": "페이지 당 행", + "OF": "중" } } \ No newline at end of file diff --git a/public/app/main/apps/callysquare/i18n/nl.json b/public/app/main/apps/callysquare/i18n/nl.json index 192218e..139f9ae 100644 --- a/public/app/main/apps/callysquare/i18n/nl.json +++ b/public/app/main/apps/callysquare/i18n/nl.json @@ -170,6 +170,9 @@ "TEST_ODBC": "Test ODBC", "FILENAME": "Bestandsnaam", "EDIT_SQUARERECORDING": "Edit plein opnemen", - "DELETE": "Verwijderen" + "DELETE": "Verwijderen", + "PAGE": "Pagina", + "ROWSPERPAGE": "Rijen per pagina", + "OF": "Van" } } \ No newline at end of file diff --git a/public/app/main/apps/callysquare/i18n/no.json b/public/app/main/apps/callysquare/i18n/no.json index 632231c..6f55adc 100644 --- a/public/app/main/apps/callysquare/i18n/no.json +++ b/public/app/main/apps/callysquare/i18n/no.json @@ -170,6 +170,9 @@ "TEST_ODBC": "Test ODBC", "FILENAME": "Filnavn", "EDIT_SQUARERECORDING": "Rediger Square opptak", - "DELETE": "Slette" + "DELETE": "Slette", + "PAGE": "Siden", + "ROWSPERPAGE": "Linjer per side", + "OF": "Av" } } \ No newline at end of file diff --git a/public/app/main/apps/callysquare/i18n/pt-PT.json b/public/app/main/apps/callysquare/i18n/pt-PT.json index 604e7ae..3400019 100644 --- a/public/app/main/apps/callysquare/i18n/pt-PT.json +++ b/public/app/main/apps/callysquare/i18n/pt-PT.json @@ -170,6 +170,9 @@ "TEST_ODBC": "Teste ODBC", "FILENAME": "Nome de arquivo", "EDIT_SQUARERECORDING": "Editar a gravação de quadrados", - "DELETE": "Excluir" + "DELETE": "Excluir", + "PAGE": "Página", + "ROWSPERPAGE": "Linhas por página", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/callysquare/i18n/ru.json b/public/app/main/apps/callysquare/i18n/ru.json index 07c6a5d..2820cb5 100644 --- a/public/app/main/apps/callysquare/i18n/ru.json +++ b/public/app/main/apps/callysquare/i18n/ru.json @@ -170,6 +170,9 @@ "TEST_ODBC": "Проверка ODBC", "FILENAME": "Имя файла", "EDIT_SQUARERECORDING": "Редактировать запись площади", - "DELETE": "Удалить" + "DELETE": "Удалить", + "PAGE": "Страница", + "ROWSPERPAGE": "Строк на странице", + "OF": "В" } } \ No newline at end of file diff --git a/public/app/main/apps/callysquare/i18n/sv.json b/public/app/main/apps/callysquare/i18n/sv.json index afb7723..1690e87 100644 --- a/public/app/main/apps/callysquare/i18n/sv.json +++ b/public/app/main/apps/callysquare/i18n/sv.json @@ -170,6 +170,9 @@ "TEST_ODBC": "Testa ODBC", "FILENAME": "Filnamn", "EDIT_SQUARERECORDING": "Redigera Square inspelning", - "DELETE": "Ta bort" + "DELETE": "Ta bort", + "PAGE": "Sidan", + "ROWSPERPAGE": "Rader per sida", + "OF": "Av" } } \ No newline at end of file diff --git a/public/app/main/apps/callysquare/i18n/tr.json b/public/app/main/apps/callysquare/i18n/tr.json index bddbeff..f5eab0a 100644 --- a/public/app/main/apps/callysquare/i18n/tr.json +++ b/public/app/main/apps/callysquare/i18n/tr.json @@ -170,6 +170,9 @@ "TEST_ODBC": "Test ODBC", "FILENAME": "Dosya adı", "EDIT_SQUARERECORDING": "Edit Kare Kayıt", - "DELETE": "Sil" + "DELETE": "Sil", + "PAGE": "Sayfa", + "ROWSPERPAGE": "Sayfadaki satırları", + "OF": "Ve" } } \ No newline at end of file diff --git a/public/app/main/apps/callysquare/i18n/zh-CN.json b/public/app/main/apps/callysquare/i18n/zh-CN.json index 5b26cc2..44f92af 100644 --- a/public/app/main/apps/callysquare/i18n/zh-CN.json +++ b/public/app/main/apps/callysquare/i18n/zh-CN.json @@ -170,6 +170,9 @@ "TEST_ODBC": "测试 ODBC", "FILENAME": "文件名。", "EDIT_SQUARERECORDING": "编辑广场录像", - "DELETE": "删除" + "DELETE": "删除", + "PAGE": "页面", + "ROWSPERPAGE": "每页的行数。", + "OF": "的" } } \ No newline at end of file diff --git a/public/app/main/apps/callysquare/i18n/zh-TW.json b/public/app/main/apps/callysquare/i18n/zh-TW.json index 8124f5d..d8f4231 100644 --- a/public/app/main/apps/callysquare/i18n/zh-TW.json +++ b/public/app/main/apps/callysquare/i18n/zh-TW.json @@ -170,6 +170,9 @@ "TEST_ODBC": "測試 ODBC", "FILENAME": "檔案名稱", "EDIT_SQUARERECORDING": "編輯錄製方塊", - "DELETE": "刪除" + "DELETE": "刪除", + "PAGE": "頁面", + "ROWSPERPAGE": "每頁行數", + "OF": "的" } } \ No newline at end of file diff --git a/public/app/main/apps/chat/i18n/da.json b/public/app/main/apps/chat/i18n/da.json index ab9dfc1..1f04b01 100644 --- a/public/app/main/apps/chat/i18n/da.json +++ b/public/app/main/apps/chat/i18n/da.json @@ -17,7 +17,12 @@ "ACCEPTURL_MUST_VALID_URL": "Det acceptere URL skal være skrevet i et gyldigt format", "TIMEOUT_REQUIRED": "Timeout er pÃ¥krævet", "REJECTURL_MUST_VALID_URL": "Reject-URL skal være skrevet i et gyldigt format", - "CLOSEURL_MUST_VALID_URL": "Den tætte URL skal være skrevet i et gyldigt format" + "CLOSEURL_MUST_VALID_URL": "Den tætte URL skal være skrevet i et gyldigt format", + "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Prioriteringen skal være større end eller lig med", + "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den sande prioritering skal være større end eller lig med", + "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den Falske prioritet skal være større end eller lig med", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Time-out skal være større end eller lig med", + "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Valghandlingen skal være større end eller lig med" }, "ADD_CHATQUEUE": "Tilføj Chat kø", "EDIT_CHATQUEUE": "Rediger Chat kø", @@ -87,7 +92,9 @@ "SELECT_NONE": "Vælg Ingen", "BACK": "Tilbage", "HELP": { - "MOTIONADDRESS": "Indtast i følgende format: ://[:]. Eksempel: https://X.Y.Z.W" + "MOTIONADDRESS": "Indtast i følgende format: ://[:]. Eksempel: https://X.Y.Z.W", + "NAME": "Kun tal og bogstaver og specielle tegn (.________) understøttes", + "COPYSCRIPTTOCLIPBOARD": "Kopier og indsæt script til din hjemmeside" }, "ADDRESS": "Adresse", "TIMEOUT": "Timeout", @@ -110,6 +117,24 @@ "SQUARED": "Kvadreret", "NO_AVAILABLE_INFO": "Der er ingen tilgængelig info", "ALL_TEAMS": "Alle hold", - "SELECTED_TEAMS": "Udvalgte Teams" + "SELECTED_TEAMS": "Udvalgte Teams", + "PAGE": "Page", + "ROWSPERPAGE": "Rækker pr. side", + "OF": "Af", + "AGENT": "Agent", + "GOTO": "Goto", + "GOTOIF": "GotoIf", + "NOOP": "Noop", + "QUEUE": "Kø", + "BUILDER": "Builder", + "PREVIEW": "Preview", + "EDIT_AGENT": "Rediger Agent", + "EDIT_QUEUE": "Rediger kø", + "EDIT_GOTO": "Rediger Goto", + "EDIT_GOTOIf": "Rediger GotoIf", + "EDIT_NOOP": "Rediger Noop", + "UP": "Op", + "DOWN": "Ned", + "COLLAPSE": "Kollaps" } } \ No newline at end of file diff --git a/public/app/main/apps/chat/i18n/de.json b/public/app/main/apps/chat/i18n/de.json index 2bbf2db..e4bbbc7 100644 --- a/public/app/main/apps/chat/i18n/de.json +++ b/public/app/main/apps/chat/i18n/de.json @@ -17,7 +17,12 @@ "ACCEPTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format", "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich", "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format", - "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format" + "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format", + "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Priorität muss größer als oder gleich", + "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die wahre Priorität muss größer als oder gleich", + "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die falsche Priorität muss größer als oder gleich", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Timeout muss größer als oder gleich", + "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Abfrage muss größer als oder gleich" }, "ADD_CHATQUEUE": "Chat Warteschlange hinzufügen", "EDIT_CHATQUEUE": "Chat Warteschlange bearbeiten", @@ -87,7 +92,9 @@ "SELECT_NONE": "Wählen Sie \"Keine\"", "BACK": "Zurück", "HELP": { - "MOTIONADDRESS": "Bitte geben Sie im folgenden Format ein: ≪protocol>://[:]. Beispiel: https://X.Y.Z.W" + "MOTIONADDRESS": "Bitte geben Sie im folgenden Format ein: ≪protocol>://[:]. Beispiel: https://X.Y.Z.W", + "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.", + "COPYSCRIPTTOCLIPBOARD": "Kopieren Sie das Script in Ihre Webseite" }, "ADDRESS": "Adresse", "TIMEOUT": "Timeout", @@ -110,6 +117,24 @@ "SQUARED": "Quadrat", "NO_AVAILABLE_INFO": "Keine verfügbaren Info", "ALL_TEAMS": "Alle Mannschaften", - "SELECTED_TEAMS": "Ausgewählte Teams" + "SELECTED_TEAMS": "Ausgewählte Teams", + "PAGE": "Seite", + "ROWSPERPAGE": "Zeilen pro Seite", + "OF": "Von", + "AGENT": "Agent", + "GOTO": "Gehe zu", + "GOTOIF": "GotoIf", + "NOOP": "Noop", + "QUEUE": "Warteschlange", + "BUILDER": "Builder", + "PREVIEW": "Vorschau", + "EDIT_AGENT": "Agent bearbeiten", + "EDIT_QUEUE": "Warteschlange bearbeiten", + "EDIT_GOTO": "Bearbeiten Gehe zu", + "EDIT_GOTOIf": "Bearbeiten GotoIf", + "EDIT_NOOP": "Bearbeiten Noop", + "UP": "Bis", + "DOWN": "Nach unten", + "COLLAPSE": "Zusammenbruch" } } \ No newline at end of file diff --git a/public/app/main/apps/chat/i18n/en.json b/public/app/main/apps/chat/i18n/en.json index 26f95d7..b053a80 100644 --- a/public/app/main/apps/chat/i18n/en.json +++ b/public/app/main/apps/chat/i18n/en.json @@ -6,6 +6,8 @@ "STRATEGY": "Strategy", "AGENT_TIMEOUT": "Agent Timeout", "DESCRIPTION": "Description", + "VARIABLE": "Variable", + "NONE": "None", "ERRORS": { "NAME_REQUIRED": "The Name is required", "AGENT_TIMEOUT_REQUIRED": "The Agent Timeout is required", @@ -17,8 +19,36 @@ "ACCEPTURL_MUST_VALID_URL": "The Accept URL must be written in a valid format", "TIMEOUT_REQUIRED": "The Timeout is required", "REJECTURL_MUST_VALID_URL": "The Reject URL must be written in a valid format", - "CLOSEURL_MUST_VALID_URL": "The Close URL must be written in a valid format" + "CLOSEURL_MUST_VALID_URL": "The Close URL must be written in a valid format", + "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The Priority must be greater than or equal to", + "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The True Priority must be greater than or equal to", + "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The False Priority must be greater than or equal to", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The Timeout must be greater than or equal to", + "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The Polling must be greater than or equal to" }, + "CM_FIELD": "Contact Manager Field", + "CHATPROACTIVEACTIONS": "Proactive Actions", + "NEW_CHATPROACTIVEACTION": "New Proactive Action", + "EDIT_CHATPROACTIVEACTION": "Edit Proactive Action", + "DELETE_CHATPROACTIVEACTION": "Delete Proactive Action", + "ADD_CHATPROACTIVEACTION": "Add Proactive Action", + "NO_CHATPROACTIVEACTION_AVAILABLE": "No Proactive Actions Available", + "MOUSEOVER": "Mouse Over", + "TIMEOUT": "Timeout", + "TYPE": "Type", + "SELECTOR": "Selector", + "AGENT": "Agent", + "GOTO": "Goto", + "GOTOIF": "GotoIf", + "NOOP": "Noop", + "QUEUE": "Queue", + "BUILDER": "Builder", + "PREVIEW": "Preview", + "EDIT_AGENT": "Edit Agent", + "EDIT_QUEUE": "Edit Queue", + "EDIT_GOTO": "Edit Goto", + "EDIT_GOTOIf": "Edit GotoIf", + "EDIT_NOOP": "Edit Noop", "ADD_CHATQUEUE": "Add Chat Queue", "EDIT_CHATQUEUE": "Edit Chat Queue", "DELETE_CHATQUEUE": "Delete Chat Queue", @@ -33,6 +63,9 @@ "LIST": "List", "SNIPPET": "Snippet", "FORMS": "Forms", + "UP": "Up", + "DOWN": "Down", + "COLLAPSE": "Collapse", "PROACTIVEACTIONS": "Proactive Actions", "DISPOSITIONS": "Dispositions", "WEBHOOKS": "WebHooks", @@ -87,8 +120,12 @@ "SELECT_NONE": "Select None", "BACK": "Back", "HELP": { + "FROMKEY": "The following Motion Contact Manager field:", + "MAPKEY": "Will be mapped in your Motion Chat Snippet as:", + "COPYSCRIPTTOCLIPBOARD": "Copy and paste the script into your website", "MOTIONADDRESS": "Please, enter in the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W", - "NAME": "Only numbers, letters and specific characters (._) are supported" + "NAME": "Only numbers, letters and specific characters (._) are supported", + "LIST": "Contact Manager list used to associate contacts" }, "ADDRESS": "Address", "TIMEOUT": "Timeout", @@ -114,6 +151,30 @@ "SELECTED_TEAMS": "Selected Teams", "PAGE": "Page", "ROWSPERPAGE": "Rows per page", - "OF": "Of" + "OF": "of", + "CONTACT": "Contact", + "STARTEDAT": "Started At", + "STATUS": "Status", + "CLOSED": "Closed", + "OPENED": "Open", + "OPEN": "Open", + "ACCOUNT": "Account", + "INTERACTION": "Interaction", + "INTERACTIONS": "Interactions", + "WEBSITE": "Website", + "ALL": "All", + "SELECT_STATUS": "Select a status", + "FILTER": "Filter", + "FILTERS": "Filters", + "TEAMADD_CHATQUEUE": "Add Team to Chat Queue", + "AGENTADD_CHATQUEUE": "Add Agent to Chat Queue", + "ALL_AGENTS": "All Agents", + "SELECTED_AGENTS": "Selected Agents", + "CLOSEDAT": "Closed At", + "DISPOSITION": "Disposition", + "CREATEDAT": "Created At", + "NOTES": "Notes", + "NO_INTERACTION_AVAILABLE": "No interactions available", + "SELECTED_WEBSITE": "Select a website" } } \ No newline at end of file diff --git a/public/app/main/apps/chat/i18n/es.json b/public/app/main/apps/chat/i18n/es.json index 6556902..1ad45dc 100644 --- a/public/app/main/apps/chat/i18n/es.json +++ b/public/app/main/apps/chat/i18n/es.json @@ -17,7 +17,12 @@ "ACCEPTURL_MUST_VALID_URL": "Aceptar la URL debe estar escrito en un formato válido", "TIMEOUT_REQUIRED": "El tiempo de espera es necesario", "REJECTURL_MUST_VALID_URL": "Rechazar la URL debe estar escrito en un formato válido", - "CLOSEURL_MUST_VALID_URL": "La estrecha URL debe ser escrito en un formato válido" + "CLOSEURL_MUST_VALID_URL": "La estrecha URL debe ser escrito en un formato válido", + "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La prioridad debe ser mayor o igual a", + "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La verdadera prioridad debe ser mayor o igual a", + "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La falsa prioridad debe ser mayor o igual a", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El tiempo de espera debe ser mayor o igual a", + "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El sondeo debe ser mayor o igual a" }, "ADD_CHATQUEUE": "Añadir cola de chat", "EDIT_CHATQUEUE": "Editar cola de chat", @@ -87,7 +92,9 @@ "SELECT_NONE": "Seleccione Ninguno", "BACK": "Volver", "HELP": { - "MOTIONADDRESS": "Por favor, introduzca en el siguiente formato: <> protocolo://://[:]. Esimerkki: https://X.Y.Z.W" + "MOTIONADDRESS": "Anna seuraavassa muodossa: ://[:]. Esimerkki: https://X.Y.Z.W", + "NAME": "Vain numeroita, kirjaimia ja erikoismerkkejä (._ tuetaan", + "COPYSCRIPTTOCLIPBOARD": "Kopioi ja liitä käsikirjoitus, your website" }, "ADDRESS": "Osoite", "TIMEOUT": "Aikakatkaisu", @@ -110,6 +117,24 @@ "SQUARED": "Korrelaatiokertoimen neliö", "NO_AVAILABLE_INFO": "Ei saatavana olevasta lataustehosta", "ALL_TEAMS": "Kaikki joukkueet", - "SELECTED_TEAMS": "Valittu työryhmille" + "SELECTED_TEAMS": "Valittu työryhmille", + "PAGE": "Sivu", + "ROWSPERPAGE": "Riviä sivulle", + "OF": ",", + "AGENT": "Agent", + "GOTO": "Siirry tietoturvakeskukseen", + "GOTOIF": "GotoIf", + "NOOP": "Noop", + "QUEUE": "Jono", + "BUILDER": "Rakennusjätteet", + "PREVIEW": "Esikatselu", + "EDIT_AGENT": "Muokkaa Agent", + "EDIT_QUEUE": "Muokkaa jonoa", + "EDIT_GOTO": "Muokkaa Goto", + "EDIT_GOTOIf": "Muokkaa GotoIf", + "EDIT_NOOP": "Muokkaa Noop", + "UP": "Ylös", + "DOWN": "Alas", + "COLLAPSE": "Supista" } } \ No newline at end of file diff --git a/public/app/main/apps/chat/i18n/fr.json b/public/app/main/apps/chat/i18n/fr.json index 884b155..4f456d5 100644 --- a/public/app/main/apps/chat/i18n/fr.json +++ b/public/app/main/apps/chat/i18n/fr.json @@ -17,7 +17,12 @@ "ACCEPTURL_MUST_VALID_URL": "Accepter l'URL doit être écrit dans un format valide", "TIMEOUT_REQUIRED": "Le délai est nécessaire", "REJECTURL_MUST_VALID_URL": "Rejeter l'URL doit être écrit dans un format valide", - "CLOSEURL_MUST_VALID_URL": "Fermer l'URL doit être écrit dans un format valide" + "CLOSEURL_MUST_VALID_URL": "Fermer l'URL doit être écrit dans un format valide", + "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La priorité doit être supérieure ou égale à", + "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La véritable priorité doit être supérieure ou égale à", + "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La fausse priorité doit être supérieure ou égale à", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Le délai doit être supérieure ou égale à", + "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Le scrutin doit être supérieure ou égale à" }, "ADD_CHATQUEUE": "Ajouter attente de discussion", "EDIT_CHATQUEUE": "Attente de discussion modifier", @@ -87,7 +92,9 @@ "SELECT_NONE": "Sélectionnez Aucun", "BACK": "Retour", "HELP": { - "MOTIONADDRESS": "S'il vous plaît, entrez dans le format suivant : ://[:]. Voorbeeld: https://X.Y.Z.W" + "MOTIONADDRESS": "Voer in de volgende notatie: ://[:]. Voorbeeld: https://X.Y.Z.W", + "NAME": "Alleen cijfers, letters en speciale tekens (_) worden ondersteund", + "COPYSCRIPTTOCLIPBOARD": "Kopieer en plak dit script in uw website" }, "ADDRESS": "Adres", "TIMEOUT": "Timeout", @@ -110,6 +117,24 @@ "SQUARED": "Kwadraat", "NO_AVAILABLE_INFO": "Geen beschikbare informatie", "ALL_TEAMS": "Alle teams", - "SELECTED_TEAMS": "Geselecteerde teams" + "SELECTED_TEAMS": "Geselecteerde teams", + "PAGE": "Pagina", + "ROWSPERPAGE": "Rijen per pagina", + "OF": "Van", + "AGENT": "Agent", + "GOTO": "Goto", + "GOTOIF": "GotoIf", + "NOOP": "Noop", + "QUEUE": "Wachtrij", + "BUILDER": "Builder", + "PREVIEW": "Afdrukvoorbeeld", + "EDIT_AGENT": "Edit Agent", + "EDIT_QUEUE": "Wachtrij bewerken", + "EDIT_GOTO": "Ga naar bewerken", + "EDIT_GOTOIf": "GotoIf bewerken", + "EDIT_NOOP": "Noop bewerken", + "UP": "Omhoog", + "DOWN": "Omlaag", + "COLLAPSE": "Samenvouwen" } } \ No newline at end of file diff --git a/public/app/main/apps/chat/i18n/no.json b/public/app/main/apps/chat/i18n/no.json index 64b9edb..eda1562 100644 --- a/public/app/main/apps/chat/i18n/no.json +++ b/public/app/main/apps/chat/i18n/no.json @@ -17,7 +17,12 @@ "ACCEPTURL_MUST_VALID_URL": "Godta URL mÃ¥ være skrevet i et gyldig format", "TIMEOUT_REQUIRED": "Tidsavbruddet er nødvendig", "REJECTURL_MUST_VALID_URL": "Avvis URL mÃ¥ være skrevet i et gyldig format", - "CLOSEURL_MUST_VALID_URL": "Lukk URL mÃ¥ være skrevet i et gyldig format" + "CLOSEURL_MUST_VALID_URL": "Lukk URL mÃ¥ være skrevet i et gyldig format", + "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Prioritet mÃ¥ være større enn eller lik", + "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den ekte prioritet mÃ¥ være større enn eller lik", + "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den falske prioritet mÃ¥ være større enn eller lik", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den stille mÃ¥ være større enn eller lik", + "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Polling mÃ¥ være større enn eller lik" }, "ADD_CHATQUEUE": "Legg til Chat kø", "EDIT_CHATQUEUE": "Rediger Chat kø", @@ -87,7 +92,9 @@ "SELECT_NONE": "Velg ingen", "BACK": "Tilbake", "HELP": { - "MOTIONADDRESS": "Skriv inn i følgende format: ://[:]. Eksempel: https://X.Y.Z.W" + "MOTIONADDRESS": "Skriv inn i følgende format: ://[:]. Eksempel: https://X.Y.Z.W", + "NAME": "Bare tall, bokstaver og bestemte tegn (._) støttes", + "COPYSCRIPTTOCLIPBOARD": "Kopier og lim inn manuset til nettstedet ditt" }, "ADDRESS": "Adresse", "TIMEOUT": "Tidsavbrudd", @@ -110,6 +117,24 @@ "SQUARED": "Kvadrert", "NO_AVAILABLE_INFO": "Ingen tilgjengelig info", "ALL_TEAMS": "Alle grupper", - "SELECTED_TEAMS": "Valgte lag" + "SELECTED_TEAMS": "Valgte lag", + "PAGE": "Siden", + "ROWSPERPAGE": "Linjer per side", + "OF": "Av", + "AGENT": "Agent", + "GOTO": "GÃ¥ til", + "GOTOIF": "GotoIf", + "NOOP": "Noop", + "QUEUE": "Kø", + "BUILDER": "Builder", + "PREVIEW": "ForhÃ¥ndsvisning", + "EDIT_AGENT": "Rediger Agent", + "EDIT_QUEUE": "Rediger kø", + "EDIT_GOTO": "Rediger Goto", + "EDIT_GOTOIf": "Rediger GotoIf", + "EDIT_NOOP": "Rediger Noop", + "UP": "Opp", + "DOWN": "Ned", + "COLLAPSE": "Skjule" } } \ No newline at end of file diff --git a/public/app/main/apps/chat/i18n/pt-PT.json b/public/app/main/apps/chat/i18n/pt-PT.json index eac1ec5..ea37de2 100644 --- a/public/app/main/apps/chat/i18n/pt-PT.json +++ b/public/app/main/apps/chat/i18n/pt-PT.json @@ -17,7 +17,12 @@ "ACCEPTURL_MUST_VALID_URL": "A aceitar a URL deve ser escrito em um formato válido", "TIMEOUT_REQUIRED": "O tempo limite é necessária", "REJECTURL_MUST_VALID_URL": "A rejeitar a URL deve ser escrito em um formato válido", - "CLOSEURL_MUST_VALID_URL": "A FECHAR A URL deve ser escrito em um formato válido" + "CLOSEURL_MUST_VALID_URL": "A FECHAR A URL deve ser escrito em um formato válido", + "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "A prioridade deve ser maior do que ou igual a", + "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "A verdadeira prioridade deve ser maior do que ou igual a", + "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "A falsa prioridade deve ser maior do que ou igual a", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O tempo limite deve ser maior do que ou igual a", + "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O Polling deve ser maior do que ou igual a" }, "ADD_CHATQUEUE": "Adicionar fila de bate-papo", "EDIT_CHATQUEUE": "Editar Fila de bate-papo", @@ -87,7 +92,9 @@ "SELECT_NONE": "Selecione Nenhum", "BACK": "De volta", "HELP": { - "MOTIONADDRESS": "Por favor, digite no seguinte formato: ://[:]. Exemplo: https://X.Y.Z.W" + "MOTIONADDRESS": "Por favor, digite no seguinte formato: ://[:]. Exemplo: https://X.Y.Z.W", + "NAME": "Apenas números, letras e caracteres específicos (._) são suportados", + "COPYSCRIPTTOCLIPBOARD": "Copie e cole o script em seu site" }, "ADDRESS": "Endereço", "TIMEOUT": "Timeout", @@ -110,6 +117,24 @@ "SQUARED": "Quadrado", "NO_AVAILABLE_INFO": "Sem informações disponíveis", "ALL_TEAMS": "Todas as equipas", - "SELECTED_TEAMS": "Equipes selecionadas" + "SELECTED_TEAMS": "Equipes selecionadas", + "PAGE": "Página", + "ROWSPERPAGE": "Linhas por página", + "OF": "De", + "AGENT": "Agente", + "GOTO": "Ir para", + "GOTOIF": "GotoIf", + "NOOP": "Noop", + "QUEUE": "Fila", + "BUILDER": "Builder", + "PREVIEW": "Visualização", + "EDIT_AGENT": "Editar Agente", + "EDIT_QUEUE": "Fila de edição", + "EDIT_GOTO": "Ir para editar", + "EDIT_GOTOIf": "Editar GotoIf", + "EDIT_NOOP": "Editar Noop", + "UP": "Para Cima", + "DOWN": "Para Baixo", + "COLLAPSE": "Colapso" } } \ No newline at end of file diff --git a/public/app/main/apps/chat/i18n/ru.json b/public/app/main/apps/chat/i18n/ru.json index 1ae21c7..657ff30 100644 --- a/public/app/main/apps/chat/i18n/ru.json +++ b/public/app/main/apps/chat/i18n/ru.json @@ -17,7 +17,12 @@ "ACCEPTURL_MUST_VALID_URL": "Принять URL должен быть записан в действительный формат", "TIMEOUT_REQUIRED": "Тайм-аут не требуется", "REJECTURL_MUST_VALID_URL": "Отклонить URL должен быть записан в действительный формат", - "CLOSEURL_MUST_VALID_URL": "Закрыть адрес URL должен быть записан в действительный формат" + "CLOSEURL_MUST_VALID_URL": "Закрыть адрес URL должен быть записан в действительный формат", + "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Первоочередной задачей должно быть больше или равно", + "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Истинный приоритет должен быть больше или равен", + "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Ложные приоритетной задачей должно быть больше или равно", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Тайм-аута должно быть больше или равно", + "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Избирательных должно быть больше или равно" }, "ADD_CHATQUEUE": "Добавить Чат очереди", "EDIT_CHATQUEUE": "Редактировать очереди чата", @@ -87,7 +92,9 @@ "SELECT_NONE": "Выберите пункт None", "BACK": "Назад", "HELP": { - "MOTIONADDRESS": "Пожалуйста, введите в следующем формате: <протокола>://://[:]. Exempel: https://X.Y.Z.W" + "MOTIONADDRESS": "Ange följande format: ://[:]. Exempel: https://X.Y.Z.W", + "NAME": "Endast siffror, bokstäver och särskilda tecken (_) stöds", + "COPYSCRIPTTOCLIPBOARD": "Kopiera och klistra in skriptet i din webbplats" }, "ADDRESS": "Adress", "TIMEOUT": "Tidsgräns", @@ -110,6 +117,24 @@ "SQUARED": "Fyrkantig", "NO_AVAILABLE_INFO": "Inga tillgängliga info", "ALL_TEAMS": "Alla grupper", - "SELECTED_TEAMS": "Valda grupper" + "SELECTED_TEAMS": "Valda grupper", + "PAGE": "Sidan", + "ROWSPERPAGE": "Rader per sida", + "OF": "Av", + "AGENT": "Agent", + "GOTO": "Goto", + "GOTOIF": "GotoIf", + "NOOP": "Noop", + "QUEUE": "Kö", + "BUILDER": "Byggmästare", + "PREVIEW": "Förhandsgranska", + "EDIT_AGENT": "Redigera Agent", + "EDIT_QUEUE": "Redigera kö", + "EDIT_GOTO": "Redigera Goto", + "EDIT_GOTOIf": "Redigera GotoIf", + "EDIT_NOOP": "Redigera Noop", + "UP": "Upp", + "DOWN": "NedÃ¥t", + "COLLAPSE": "Komprimera" } } \ No newline at end of file diff --git a/public/app/main/apps/chat/i18n/tr.json b/public/app/main/apps/chat/i18n/tr.json index f9edf9f..1ffbcf0 100644 --- a/public/app/main/apps/chat/i18n/tr.json +++ b/public/app/main/apps/chat/i18n/tr.json @@ -17,7 +17,12 @@ "ACCEPTURL_MUST_VALID_URL": "Kabul URL yazılmış olması gerekir. geçerli bir format", "TIMEOUT_REQUIRED": "Zaman Aşımı gerekiyor.", "REJECTURL_MUST_VALID_URL": "Reddetme URL yazılmış olması gerekir. geçerli bir format", - "CLOSEURL_MUST_VALID_URL": "Kapat URL yazılmış olması gerekir. geçerli bir format" + "CLOSEURL_MUST_VALID_URL": "Kapat URL yazılmış olması gerekir. geçerli bir format", + "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Öncelik eşit veya daha büyük olmalıdır.", + "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gerçek Öncelik eşit veya daha büyük olmalıdır.", + "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Yanlış Öncelik eşit veya daha büyük olmalıdır.", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zaman Aşımı eşit veya daha büyük olmalıdır.", + "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Yoklama eşit veya daha büyük olmalıdır." }, "ADD_CHATQUEUE": "Add Sohbet Sırası", "EDIT_CHATQUEUE": "Edit Sohbet Sırası", @@ -87,7 +92,9 @@ "SELECT_NONE": "Hiçbiri", "BACK": "Geri", "HELP": { - "MOTIONADDRESS": "Lütfen aşağıdaki biçimi: ://[:]. Örneğin: https://X.Y.Z.W" + "MOTIONADDRESS": "Lütfen aşağıdaki biçimi: ://[:]. Örneğin: https://X.Y.Z.W", + "NAME": "Sadece sayılar, harfler ve özel karakterler (._) desteklenir.", + "COPYSCRIPTTOCLIPBOARD": "Kopyala ve yapıştır komut dosyası, web sitesi" }, "ADDRESS": "Adres", "TIMEOUT": "Zaman Aşımı", @@ -110,6 +117,24 @@ "SQUARED": "Kare", "NO_AVAILABLE_INFO": "Mevcut bilgisi", "ALL_TEAMS": "Tüm takımlar", - "SELECTED_TEAMS": "Seçilen Ekipleri" + "SELECTED_TEAMS": "Seçilen Ekipleri", + "PAGE": "Sayfa", + "ROWSPERPAGE": "Sayfadaki satırları", + "OF": "Ve", + "AGENT": "Ajan", + "GOTO": "Git", + "GOTOIF": "GotoIf", + "NOOP": "Noop", + "QUEUE": "Kuyruk", + "BUILDER": "Oluşturucu", + "PREVIEW": "Önizleme", + "EDIT_AGENT": "Edit Agent", + "EDIT_QUEUE": "Edit Sırası", + "EDIT_GOTO": "Edit Git", + "EDIT_GOTOIf": "Edit GotoIf", + "EDIT_NOOP": "Noop Düzenle", + "UP": "Yukarı", + "DOWN": "Aşağı", + "COLLAPSE": "Çöktü" } } \ No newline at end of file diff --git a/public/app/main/apps/chat/i18n/zh-CN.json b/public/app/main/apps/chat/i18n/zh-CN.json index 9ccf2a4..a1bbea2 100644 --- a/public/app/main/apps/chat/i18n/zh-CN.json +++ b/public/app/main/apps/chat/i18n/zh-CN.json @@ -17,7 +17,12 @@ "ACCEPTURL_MUST_VALID_URL": "接受 URL 必须是书面的格式无效", "TIMEOUT_REQUIRED": "超时是必需的", "REJECTURL_MUST_VALID_URL": "“拒绝” 的 URL 必须是书面的格式无效", - "CLOSEURL_MUST_VALID_URL": "关闭 URL 必须是书面的格式无效" + "CLOSEURL_MUST_VALID_URL": "关闭 URL 必须是书面的格式无效", + "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "优先级必须是大于或等于", + "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "真正的优先事项必须大于或等于", + "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "错误的优先级必须大于或等于", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "超时值必须大于或等于", + "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "投票必须大于或等于" }, "ADD_CHATQUEUE": "添加聊天队列", "EDIT_CHATQUEUE": "编辑聊天队列", @@ -87,7 +92,9 @@ "SELECT_NONE": "选择 “无”", "BACK": "返回", "HELP": { - "MOTIONADDRESS": "请以下列格式输入: & lt; 协议发 gt;:// 发 lt; ipaddress 发 gt; [: & lt; 端口& gt; ]。 例如: https://X.Y.Z.W" + "MOTIONADDRESS": "请以下列格式输入: & lt; 协议发 gt;:// 发 lt; ipaddress 发 gt; [: & lt; 端口& gt; ]。 例如: https://X.Y.Z.W", + "NAME": "只有数字、字母和特殊字符(_)的支持", + "COPYSCRIPTTOCLIPBOARD": "将该脚本复制并粘贴到您的网站" }, "ADDRESS": "地址", "TIMEOUT": "超时", @@ -110,6 +117,24 @@ "SQUARED": "方形", "NO_AVAILABLE_INFO": "无可用的信息", "ALL_TEAMS": "所有的团队", - "SELECTED_TEAMS": "选定的组" + "SELECTED_TEAMS": "选定的组", + "PAGE": "页面", + "ROWSPERPAGE": "每页的行数。", + "OF": "的", + "AGENT": "座席", + "GOTO": "Goto", + "GOTOIF": "GotoIf", + "NOOP": "Noop", + "QUEUE": "队列", + "BUILDER": "构建器", + "PREVIEW": "预览", + "EDIT_AGENT": "编辑座席", + "EDIT_QUEUE": "编辑队列", + "EDIT_GOTO": "编辑 Goto", + "EDIT_GOTOIf": "GotoIf 编辑", + "EDIT_NOOP": "编辑 Noop", + "UP": "高达", + "DOWN": "关闭", + "COLLAPSE": "崩溃" } } \ No newline at end of file diff --git a/public/app/main/apps/chat/i18n/zh-TW.json b/public/app/main/apps/chat/i18n/zh-TW.json index 83adb50..b67f145 100644 --- a/public/app/main/apps/chat/i18n/zh-TW.json +++ b/public/app/main/apps/chat/i18n/zh-TW.json @@ -17,7 +17,12 @@ "ACCEPTURL_MUST_VALID_URL": "接受 URL 必須以有效的格式", "TIMEOUT_REQUIRED": "逾時時間為必要資訊", "REJECTURL_MUST_VALID_URL": "拒絕 URL 必須以有效的格式", - "CLOSEURL_MUST_VALID_URL": "關閉的 URL 必須以有效的格式" + "CLOSEURL_MUST_VALID_URL": "關閉的 URL 必須以有效的格式", + "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "優先必須大於或等於", + "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "真正的優先權必須大於或等於", + "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "這個錯誤的優先順序必須大於或等於", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "超時必須大於或等於", + "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "「輪詢」必須大於或等於" }, "ADD_CHATQUEUE": "新增聊天佇列", "EDIT_CHATQUEUE": "編輯文字交談」佇列", @@ -87,7 +92,9 @@ "SELECT_NONE": "選取「無」", "BACK": "備份", "HELP": { - "MOTIONADDRESS": "請輸入下列格式 : & lt ; 通訊協定與 gt ; : / / 史坦普 lt ; IP 位址坦 gt ; [ : 坦 lt ; 連接埠坦 gt ; ] 。 例如 : https://X.Y.Z.W" + "MOTIONADDRESS": "請輸入下列格式 : & lt ; 通訊協定與 gt ; : / / 史坦普 lt ; IP 位址坦 gt ; [ : 坦 lt ; 連接埠坦 gt ; ] 。 例如 : https://X.Y.Z.W", + "NAME": "只有數字、字母和特殊字元 ( _ ) 都受到支援", + "COPYSCRIPTTOCLIPBOARD": "複製並粘貼到您的網站的指令碼" }, "ADDRESS": "位址", "TIMEOUT": "逾時", @@ -110,6 +117,24 @@ "SQUARED": "擺出正面防守姿勢", "NO_AVAILABLE_INFO": "無可用資訊", "ALL_TEAMS": "所有群組", - "SELECTED_TEAMS": "選取群組" + "SELECTED_TEAMS": "選取群組", + "PAGE": "頁面", + "ROWSPERPAGE": "每頁行數", + "OF": "的", + "AGENT": "值機員", + "GOTO": "Goto", + "GOTOIF": "GotoIf", + "NOOP": "Noop", + "QUEUE": "佇列", + "BUILDER": "建構工具", + "PREVIEW": "預覽", + "EDIT_AGENT": "編輯值機員", + "EDIT_QUEUE": "編輯隊列", + "EDIT_GOTO": "編輯執行 ?", + "EDIT_GOTOIf": "編輯 GotoIf", + "EDIT_NOOP": "編輯 Noop", + "UP": "向上", + "DOWN": "關閉", + "COLLAPSE": "摺疊" } } \ No newline at end of file diff --git a/public/app/main/apps/contactmanager/i18n/da.json b/public/app/main/apps/contactmanager/i18n/da.json index 646dd63..e9e0fd8 100644 --- a/public/app/main/apps/contactmanager/i18n/da.json +++ b/public/app/main/apps/contactmanager/i18n/da.json @@ -11,7 +11,8 @@ "ALIAS_REQUIRED": "Aliaset er pÃ¥krævet", "VALUE_REQUIRED": "Værdien er nødvendig", "EMAIL_MUST_VALID": "E-mail-adressen skal være skrevet i et gyldigt format", - "PHONE_REQUIRED": "Telefonen er pÃ¥krævet" + "PHONE_REQUIRED": "Telefonen er pÃ¥krævet", + "PHONEBAR_API": "Kontroller at MotionBar kører, og at fjernbetjeningen til agenten er aktiveret" }, "DESCRIPTION": "Beskrivelse", "DISPOSITIONS": "Dispositions", @@ -136,6 +137,12 @@ "PROJECT": "Projekt", "SELECT_LIST": "Vælg en liste", "SELECT_COMPANY": "Vælg et firma", - "SELECT_TAGS": "Vælg én eller flere tags" + "SELECT_TAGS": "Vælg én eller flere tags", + "HELP": { + "PHONEBAR_API": "At click-to-call indsætte et telefonnummer, og kontroller, at fjernbetjeningen er aktiveret for agent" + }, + "PAGE": "Page", + "ROWSPERPAGE": "Rækker pr. side", + "OF": "Af" } } \ No newline at end of file diff --git a/public/app/main/apps/contactmanager/i18n/de.json b/public/app/main/apps/contactmanager/i18n/de.json index c2de1e8..378ed77 100644 --- a/public/app/main/apps/contactmanager/i18n/de.json +++ b/public/app/main/apps/contactmanager/i18n/de.json @@ -11,7 +11,8 @@ "ALIAS_REQUIRED": "Der Alias wird benötigt", "VALUE_REQUIRED": "Der Wert ist erforderlich", "EMAIL_MUST_VALID": "Die E-Mail Adresse muss in einem gültigen Format", - "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich" + "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich", + "PHONEBAR_API": "Prüfen, ob die MotionBar ausgeführt wird und die Fernbedienung für den Agenten aktiviert ist" }, "DESCRIPTION": "Beschreibung", "DISPOSITIONS": "Bestimmungen", @@ -136,6 +137,12 @@ "PROJECT": "Projekt", "SELECT_LIST": "Wählen Sie eine Liste aus", "SELECT_COMPANY": "Wählen Sie ein Unternehmen aus", - "SELECT_TAGS": "Wählen Sie eine oder mehrere Variablen" + "SELECT_TAGS": "Wählen Sie eine oder mehrere Variablen", + "HELP": { + "PHONEBAR_API": "Anruf-per-Mausklick einfügen, um eine Telefonnummer zu aktivieren und prüfen, ob die Fernbedienung für den Agenten aktiviert ist" + }, + "PAGE": "Seite", + "ROWSPERPAGE": "Zeilen pro Seite", + "OF": "Von" } } \ No newline at end of file diff --git a/public/app/main/apps/contactmanager/i18n/en.json b/public/app/main/apps/contactmanager/i18n/en.json index fdb500a..7d8d8f3 100644 --- a/public/app/main/apps/contactmanager/i18n/en.json +++ b/public/app/main/apps/contactmanager/i18n/en.json @@ -19,6 +19,8 @@ "DELETE_HOPPER": "Delete Hopper", "RELOAD": "Reload", "NO_COMPANIES": "No Company", + "NO_AVAILABLE_ITEMS": "No Available Items", + "ADD": "Add", "ERRORS": { "NAME_REQUIRED": "The Name is required", "FIRSTNAME_REQUIRED": "The First Name is required", @@ -70,6 +72,7 @@ "STREET": "Street", "POSTALCODE": "Postal Code", "DELETE": "Delete", + "DELETE_ALL": "Delete All", "CONTACTMANAGER": "Contacts Manager", "ID": "Id", "SETTINGS": "Settings", @@ -143,6 +146,7 @@ }, "PAGE": "Page", "ROWSPERPAGE": "Rows per page", - "OF": "Of" + "OF": "of", + "SELECT_LIST": "Select a list" } } \ No newline at end of file diff --git a/public/app/main/apps/contactmanager/i18n/es.json b/public/app/main/apps/contactmanager/i18n/es.json index 3a9e371..3c5846c 100644 --- a/public/app/main/apps/contactmanager/i18n/es.json +++ b/public/app/main/apps/contactmanager/i18n/es.json @@ -11,7 +11,8 @@ "ALIAS_REQUIRED": "El alias es obligatorio", "VALUE_REQUIRED": "El valor es obligatorio", "EMAIL_MUST_VALID": "La dirección de correo electrónico deben escribirse en un formato válido", - "PHONE_REQUIRED": "El teléfono es necesario" + "PHONE_REQUIRED": "El teléfono es necesario", + "PHONEBAR_API": "Verificar que el MotionBar está funcionando y que el control remoto está habilitado para el agente." }, "DESCRIPTION": "Descripción", "DISPOSITIONS": "Disposiciones", @@ -136,6 +137,12 @@ "PROJECT": "Proyecto", "SELECT_LIST": "Seleccione una lista", "SELECT_COMPANY": "Seleccione una empresa", - "SELECT_TAGS": "Seleccione una o más etiquetas" + "SELECT_TAGS": "Seleccione una o más etiquetas", + "HELP": { + "PHONEBAR_API": "Para permitir hacer clic para llamar insertar un número de teléfono y compruebe que el control remoto está habilitado para el agente." + }, + "PAGE": "Página", + "ROWSPERPAGE": "Filas por página.", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/contactmanager/i18n/fa.json b/public/app/main/apps/contactmanager/i18n/fa.json index 4d58202..ed83d6a 100644 --- a/public/app/main/apps/contactmanager/i18n/fa.json +++ b/public/app/main/apps/contactmanager/i18n/fa.json @@ -11,7 +11,8 @@ "ALIAS_REQUIRED": "عبدالرزاق، لازم است.", "VALUE_REQUIRED": "مقدار مورد نیاز است.", "EMAIL_MUST_VALID": "آدرس ایمیل باید با فرمت معتبر نوشته شده است", - "PHONE_REQUIRED": "تلفن لازم است." + "PHONE_REQUIRED": "تلفن لازم است.", + "PHONEBAR_API": "بررسی کنید که MotionBar در حال اجرا است و از آن به عنوان عامل كنترل از راه دور فعال است." }, "DESCRIPTION": "شرح", "DISPOSITIONS": "مكتبى", @@ -136,6 +137,12 @@ "PROJECT": "پروژه", "SELECT_LIST": "از لیست انتخاب کنید", "SELECT_COMPANY": "شرکتی را انتخاب کنید", - "SELECT_TAGS": "انتخاب یک یا چند برچسب" + "SELECT_TAGS": "انتخاب یک یا چند برچسب", + "HELP": { + "PHONEBAR_API": "کلیک کنید تا فعال شود و در تماس با یک شماره تلفن وارد کرده و بررسی کنید که کنترل از راه دور برای عامل فعال است." + }, + "PAGE": "صفحه", + "ROWSPERPAGE": "رديف در صفحه", + "OF": "از" } } \ No newline at end of file diff --git a/public/app/main/apps/contactmanager/i18n/fi.json b/public/app/main/apps/contactmanager/i18n/fi.json index 91df8ed..133ca62 100644 --- a/public/app/main/apps/contactmanager/i18n/fi.json +++ b/public/app/main/apps/contactmanager/i18n/fi.json @@ -11,7 +11,8 @@ "ALIAS_REQUIRED": "Alias on pakollinen", "VALUE_REQUIRED": "Arvo on pakollinen", "EMAIL_MUST_VALID": "Sähköpostiosoite on kirjoitettava kelvollisessa muodossa", - "PHONE_REQUIRED": "Puhelin ei tarvita" + "PHONE_REQUIRED": "Puhelin ei tarvita", + "PHONEBAR_API": "Tarkista, että MotionBar on käynnissä ja, että kauko-ohjain edustajan on käytössä" }, "DESCRIPTION": "Kuvaus", "DISPOSITIONS": "Yhteisyys", @@ -136,6 +137,12 @@ "PROJECT": "Projektin", "SELECT_LIST": "Valitse luettelo", "SELECT_COMPANY": "Valitse yritys", - "SELECT_TAGS": "Valitse yksi tai useampi tunnisteet" + "SELECT_TAGS": "Valitse yksi tai useampi tunnisteet", + "HELP": { + "PHONEBAR_API": "Jotta voit lisätä uuden puhelinnumeron ja tarkista, että kauko-ohjain on käytössä, jonka edustaja" + }, + "PAGE": "Sivu", + "ROWSPERPAGE": "Riviä sivulle", + "OF": "," } } \ No newline at end of file diff --git a/public/app/main/apps/contactmanager/i18n/fr.json b/public/app/main/apps/contactmanager/i18n/fr.json index 9abd662..933ee3d 100644 --- a/public/app/main/apps/contactmanager/i18n/fr.json +++ b/public/app/main/apps/contactmanager/i18n/fr.json @@ -11,7 +11,8 @@ "ALIAS_REQUIRED": "L'Alias est requis", "VALUE_REQUIRED": "Cette valeur est requise", "EMAIL_MUST_VALID": "L'adresse e-mail doivent être écrites dans un format valide", - "PHONE_REQUIRED": "Le téléphone est requis" + "PHONE_REQUIRED": "Le téléphone est requis", + "PHONEBAR_API": "Vérifier que le MotionBar s'exécute et que la télécommande pour l'agent est activé" }, "DESCRIPTION": "Description", "DISPOSITIONS": "Dispositions", @@ -136,6 +137,12 @@ "PROJECT": "Projet", "SELECT_LIST": "Sélectionnez une liste", "SELECT_COMPANY": "Sélectionnez une entreprise", - "SELECT_TAGS": "Sélectionner une ou plusieurs marques" + "SELECT_TAGS": "Sélectionner une ou plusieurs marques", + "HELP": { + "PHONEBAR_API": "Pour activer l'appel web insérer un numéro de téléphone et vérifiez que la télécommande est activée pour l'agent" + }, + "PAGE": "La page", + "ROWSPERPAGE": "Les lignes par page", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/contactmanager/i18n/hi.json b/public/app/main/apps/contactmanager/i18n/hi.json index 9b16400..3f8feea 100644 --- a/public/app/main/apps/contactmanager/i18n/hi.json +++ b/public/app/main/apps/contactmanager/i18n/hi.json @@ -11,7 +11,8 @@ "ALIAS_REQUIRED": "इस उर्फ अपेक्षित है।", "VALUE_REQUIRED": "मूल्य की आवश्यकता है।", "EMAIL_MUST_VALID": "ईमेल पते को मान्य स्वरूप में लिखा होना", - "PHONE_REQUIRED": "फ़ोन की आवश्यकता है।" + "PHONE_REQUIRED": "फ़ोन की आवश्यकता है।", + "PHONEBAR_API": "जांचें कि MotionBar चल रहा है और यह भी कि रिमोट कंट्रोल के एजेंट सक्षम" }, "DESCRIPTION": "वर्णन", "DISPOSITIONS": "प्रवृतियों", @@ -136,6 +137,12 @@ "PROJECT": "परियोजना", "SELECT_LIST": "सूची का चयन करें.", "SELECT_COMPANY": "कंपनी का चयन करें.", - "SELECT_TAGS": "एक या एक से अधिक टैग्स चुनें" + "SELECT_TAGS": "एक या एक से अधिक टैग्स चुनें", + "HELP": { + "PHONEBAR_API": "कॉल को सक्षम करने के लिए फ़ोन नंबर पर क्लिक करें.-डालें और जांचें कि रिमोट नियंत्रण सक्षम के एजेंट" + }, + "PAGE": "पृष्ठ", + "ROWSPERPAGE": "पंक्तियां प्रति पृष्ठ", + "OF": "की" } } \ No newline at end of file diff --git a/public/app/main/apps/contactmanager/i18n/it.json b/public/app/main/apps/contactmanager/i18n/it.json index 6ac9349..ad24e3c 100644 --- a/public/app/main/apps/contactmanager/i18n/it.json +++ b/public/app/main/apps/contactmanager/i18n/it.json @@ -139,10 +139,12 @@ "SELECT_COMPANY": "Seleziona un'azienda", "SELECT_TAGS": "Seleziona uno o più tags", "HELP": { - "PHONEBAR_API_MESSAGE": "Per abilitare il click-to-call inserisci un numero di telefono e abilita il controllo remoto per l'agente" + "PHONEBAR_API_MESSAGE": "Per abilitare il click-to-call inserisci un numero di telefono e abilita il controllo remoto per l'agente", + "PHONEBAR_API": "Per abilitare la funzione chiamate con un solo clic inserire un numero di telefono e verificare che il telecomando sia attivato per l'agente" }, "PAGE": "Pagina", "ROWSPERPAGE": "Righe per pagina", - "OF": "Di" + "OF": "di", + "SELECT_LIST": "Seleziona una lista" } } \ No newline at end of file diff --git a/public/app/main/apps/contactmanager/i18n/ja.json b/public/app/main/apps/contactmanager/i18n/ja.json index 146ffad..62ac0cf 100644 --- a/public/app/main/apps/contactmanager/i18n/ja.json +++ b/public/app/main/apps/contactmanager/i18n/ja.json @@ -11,7 +11,8 @@ "ALIAS_REQUIRED": "エイリアスが必要な", "VALUE_REQUIRED": "の値が必要です", "EMAIL_MUST_VALID": "電子メールのアドレスが有効な形式で記述する必要があります", - "PHONE_REQUIRED": "の電話番号が必要です" + "PHONE_REQUIRED": "の電話番号が必要です", + "PHONEBAR_API": "のは MotionBar を実行していること、およびエージェントのリモート制御が有効になっているかどうかを確認" }, "DESCRIPTION": "説明", "DISPOSITIONS": "ディスポジション", @@ -136,6 +137,12 @@ "PROJECT": "プロジェクト", "SELECT_LIST": "リストを選択します", "SELECT_COMPANY": "会社の選択", - "SELECT_TAGS": "1 つまたは複数のキーワードタグを選択し" + "SELECT_TAGS": "1 つまたは複数のキーワードタグを選択し", + "HELP": { + "PHONEBAR_API": "のクリックコールの電話番号を挿入して、を有効にするには、エージェントのリモート制御が有効になっていることを点検します" + }, + "PAGE": "ページ", + "ROWSPERPAGE": "ページあたりの行数", + "OF": "の" } } \ No newline at end of file diff --git a/public/app/main/apps/contactmanager/i18n/ko.json b/public/app/main/apps/contactmanager/i18n/ko.json index 80cbe43..039856d 100644 --- a/public/app/main/apps/contactmanager/i18n/ko.json +++ b/public/app/main/apps/contactmanager/i18n/ko.json @@ -11,7 +11,8 @@ "ALIAS_REQUIRED": "별명이 필요합니다.", "VALUE_REQUIRED": "값이 필요합니다.", "EMAIL_MUST_VALID": "이메일 주소에 유효한 형식으로 작성되어 있어야 합니다", - "PHONE_REQUIRED": "전화가 필요" + "PHONE_REQUIRED": "전화가 필요", + "PHONEBAR_API": "이 motionbar를 실행하고 상담원이 원격 제어가 활성화되어 있는지 확인합니다." }, "DESCRIPTION": "설명", "DISPOSITIONS": "의향", @@ -136,6 +137,12 @@ "PROJECT": "프로젝트", "SELECT_LIST": "목록 선택", "SELECT_COMPANY": "회사 선택", - "SELECT_TAGS": "하나 이상의 태그를 선택합니다" + "SELECT_TAGS": "하나 이상의 태그를 선택합니다", + "HELP": { + "PHONEBAR_API": "그리고 클릭으로 전화를 전화 번호 삽입 가능 상담원에 대한 원격 제어가 활성화되어 있는지 확인합니다." + }, + "PAGE": "페이지", + "ROWSPERPAGE": "페이지 당 행", + "OF": "중" } } \ No newline at end of file diff --git a/public/app/main/apps/contactmanager/i18n/nl.json b/public/app/main/apps/contactmanager/i18n/nl.json index 9b613d2..8b0c4e7 100644 --- a/public/app/main/apps/contactmanager/i18n/nl.json +++ b/public/app/main/apps/contactmanager/i18n/nl.json @@ -11,7 +11,8 @@ "ALIAS_REQUIRED": "De alias is vereist", "VALUE_REQUIRED": "De waarde is vereist", "EMAIL_MUST_VALID": "Het e-mailadres moet worden geschreven in een geldige indeling", - "PHONE_REQUIRED": "Het telefoonnummer is verplicht" + "PHONE_REQUIRED": "Het telefoonnummer is verplicht", + "PHONEBAR_API": "Controleer of de MotionBar draait en dat de afstandsbediening voor de agent is ingeschakeld" }, "DESCRIPTION": "Beschrijving", "DISPOSITIONS": "Dispositions", @@ -136,6 +137,12 @@ "PROJECT": "Project", "SELECT_LIST": "Selecteer een lijst", "SELECT_COMPANY": "Selecteer een bedrijf", - "SELECT_TAGS": "Selecteer één of meer tags" + "SELECT_TAGS": "Selecteer één of meer tags", + "HELP": { + "PHONEBAR_API": "Om klik-en-bel een telefoonnummer en controleert u of de afstandsbediening is ingeschakeld voor de agent" + }, + "PAGE": "Pagina", + "ROWSPERPAGE": "Rijen per pagina", + "OF": "Van" } } \ No newline at end of file diff --git a/public/app/main/apps/contactmanager/i18n/no.json b/public/app/main/apps/contactmanager/i18n/no.json index dee8591..ecedb60 100644 --- a/public/app/main/apps/contactmanager/i18n/no.json +++ b/public/app/main/apps/contactmanager/i18n/no.json @@ -11,7 +11,8 @@ "ALIAS_REQUIRED": "Aliaset er nødvendig", "VALUE_REQUIRED": "Verdien er obligatorisk", "EMAIL_MUST_VALID": "E-postadressen mÃ¥ være skrevet i et gyldig format", - "PHONE_REQUIRED": "Telefonen er nødvendig" + "PHONE_REQUIRED": "Telefonen er nødvendig", + "PHONEBAR_API": "Kontroller at MotionBar er i gang og at fjernkontrollen for agent er aktivert" }, "DESCRIPTION": "Beskrivelse", "DISPOSITIONS": "Disposisjoner", @@ -136,6 +137,12 @@ "PROJECT": "Prosjekt", "SELECT_LIST": "Velg en liste", "SELECT_COMPANY": "Velg et selskap", - "SELECT_TAGS": "Velg én eller flere etiketter" + "SELECT_TAGS": "Velg én eller flere etiketter", + "HELP": { + "PHONEBAR_API": "For Ã¥ aktivere klikk-til-ring sett inn et telefonnummer og kontroller at fjernkontrollen er aktivert for agent" + }, + "PAGE": "Siden", + "ROWSPERPAGE": "Linjer per side", + "OF": "Av" } } \ No newline at end of file diff --git a/public/app/main/apps/contactmanager/i18n/pt-PT.json b/public/app/main/apps/contactmanager/i18n/pt-PT.json index 879c04d..c99be34 100644 --- a/public/app/main/apps/contactmanager/i18n/pt-PT.json +++ b/public/app/main/apps/contactmanager/i18n/pt-PT.json @@ -11,7 +11,8 @@ "ALIAS_REQUIRED": "O Alias é necessária", "VALUE_REQUIRED": "O valor é obrigatório", "EMAIL_MUST_VALID": "O endereço de e-mail deve ser escrito em um formato válido", - "PHONE_REQUIRED": "O telefone é obrigatório" + "PHONE_REQUIRED": "O telefone é obrigatório", + "PHONEBAR_API": "Verificar que o MotionBar está sendo executado e se o controle remoto para o agente está ativado" }, "DESCRIPTION": "Descrição", "DISPOSITIONS": "Disposições", @@ -136,6 +137,12 @@ "PROJECT": "Projecto", "SELECT_LIST": "Selecionar uma lista", "SELECT_COMPANY": "Selecione uma empresa", - "SELECT_TAGS": "Selecione um ou mais tags" + "SELECT_TAGS": "Selecione um ou mais tags", + "HELP": { + "PHONEBAR_API": "Para ativar clique para chamada inserir um número de telefone e verifique se o controle remoto estiver ativado para o agente" + }, + "PAGE": "Página", + "ROWSPERPAGE": "Linhas por página", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/contactmanager/i18n/ru.json b/public/app/main/apps/contactmanager/i18n/ru.json index 163d0ba..b8511bb 100644 --- a/public/app/main/apps/contactmanager/i18n/ru.json +++ b/public/app/main/apps/contactmanager/i18n/ru.json @@ -11,7 +11,8 @@ "ALIAS_REQUIRED": "Псевдоним не требуется", "VALUE_REQUIRED": "Это значение требуется", "EMAIL_MUST_VALID": "Адрес электронной почты должен быть написан в действительный формат", - "PHONE_REQUIRED": "Номер телефона не требуется" + "PHONE_REQUIRED": "Номер телефона не требуется", + "PHONEBAR_API": "Убедитесь, что MotionBar работает и что пульт дистанционного управления для оператора включен" }, "DESCRIPTION": "Описание", "DISPOSITIONS": "Распоряжения", @@ -136,6 +137,12 @@ "PROJECT": "Проект", "SELECT_LIST": "Выберите список", "SELECT_COMPANY": "Выберите компанию", - "SELECT_TAGS": "Выберите один или более тегов" + "SELECT_TAGS": "Выберите один или более тегов", + "HELP": { + "PHONEBAR_API": "С тем чтобы Click-to-Call вставьте номер телефона и убедитесь, что пульт дистанционного управления включен для оператора" + }, + "PAGE": "Страница", + "ROWSPERPAGE": "Строк на странице", + "OF": "В" } } \ No newline at end of file diff --git a/public/app/main/apps/contactmanager/i18n/sv.json b/public/app/main/apps/contactmanager/i18n/sv.json index 563040b..4d271d2 100644 --- a/public/app/main/apps/contactmanager/i18n/sv.json +++ b/public/app/main/apps/contactmanager/i18n/sv.json @@ -11,7 +11,8 @@ "ALIAS_REQUIRED": "Alias är obligatoriskt", "VALUE_REQUIRED": "Värdet är obligatoriskt", "EMAIL_MUST_VALID": "E-postadressen mÃ¥ste vara skriven pÃ¥ ett giltigt format", - "PHONE_REQUIRED": "Telefonen är obligatoriskt" + "PHONE_REQUIRED": "Telefonen är obligatoriskt", + "PHONEBAR_API": "Kontrollera att MotionBar är igÃ¥ng och att fjärrkontrollen för agent är aktiverad" }, "DESCRIPTION": "Beskrivning", "DISPOSITIONS": "Dispositioner", @@ -136,6 +137,12 @@ "PROJECT": "Projektet", "SELECT_LIST": "Välj en lista", "SELECT_COMPANY": "Välj ett företag", - "SELECT_TAGS": "Välj en eller flera etiketter" + "SELECT_TAGS": "Välj en eller flera etiketter", + "HELP": { + "PHONEBAR_API": "Om du vill aktivera klicka-för-att-ringa in ett telefonnummer och kontrollera att fjärrkontrollen är aktiverad för agent" + }, + "PAGE": "Sidan", + "ROWSPERPAGE": "Rader per sida", + "OF": "Av" } } \ No newline at end of file diff --git a/public/app/main/apps/contactmanager/i18n/tr.json b/public/app/main/apps/contactmanager/i18n/tr.json index 54273b4..555a164 100644 --- a/public/app/main/apps/contactmanager/i18n/tr.json +++ b/public/app/main/apps/contactmanager/i18n/tr.json @@ -11,7 +11,8 @@ "ALIAS_REQUIRED": "Ve diğer gerekli", "VALUE_REQUIRED": "Bu Değer gereklidir", "EMAIL_MUST_VALID": "E-Posta Adresi yazılmış olması gerekir. geçerli bir format", - "PHONE_REQUIRED": "Telefon gerekiyor." + "PHONE_REQUIRED": "Telefon gerekiyor.", + "PHONEBAR_API": "Kontrol, MotionBar ve uzaktan kumanda için temsilci etkin" }, "DESCRIPTION": "Açıklama", "DISPOSITIONS": "Işlenir", @@ -136,6 +137,12 @@ "PROJECT": "Proje", "SELECT_LIST": "Bir liste seçin", "SELECT_COMPANY": "Bir şirket seçin", - "SELECT_TAGS": "Bir veya daha fazla etiket" + "SELECT_TAGS": "Bir veya daha fazla etiket", + "HELP": { + "PHONEBAR_API": "Etkinleştirmek için çağrı ek bir telefon numarası ve uzaktan kumanda için etkin maddesi" + }, + "PAGE": "Sayfa", + "ROWSPERPAGE": "Sayfadaki satırları", + "OF": "Ve" } } \ No newline at end of file diff --git a/public/app/main/apps/contactmanager/i18n/zh-CN.json b/public/app/main/apps/contactmanager/i18n/zh-CN.json index 8814a88..2c6894a 100644 --- a/public/app/main/apps/contactmanager/i18n/zh-CN.json +++ b/public/app/main/apps/contactmanager/i18n/zh-CN.json @@ -11,7 +11,8 @@ "ALIAS_REQUIRED": "别名是必需的", "VALUE_REQUIRED": "该值是必需的", "EMAIL_MUST_VALID": "该电子邮件地址必须写的格式无效", - "PHONE_REQUIRED": "手机是必需的" + "PHONE_REQUIRED": "手机是必需的", + "PHONEBAR_API": "检查 MotionBar 运行和远程控制的代理已启用" }, "DESCRIPTION": "描述", "DISPOSITIONS": "资产处置", @@ -136,6 +137,12 @@ "PROJECT": "项目", "SELECT_LIST": "选择列表", "SELECT_COMPANY": "选择公司。", - "SELECT_TAGS": "选择一项或更多的标记" + "SELECT_TAGS": "选择一项或更多的标记", + "HELP": { + "PHONEBAR_API": "要启用单击呼叫插入电话号码并检查是否启用了远程控制代理" + }, + "PAGE": "页面", + "ROWSPERPAGE": "每页的行数。", + "OF": "的" } } \ No newline at end of file diff --git a/public/app/main/apps/contactmanager/i18n/zh-TW.json b/public/app/main/apps/contactmanager/i18n/zh-TW.json index 74d0a68..9d644b3 100644 --- a/public/app/main/apps/contactmanager/i18n/zh-TW.json +++ b/public/app/main/apps/contactmanager/i18n/zh-TW.json @@ -11,7 +11,8 @@ "ALIAS_REQUIRED": "別名是必填欄位", "VALUE_REQUIRED": "此值為必填欄位", "EMAIL_MUST_VALID": "電子郵件地址必須以有效的格式", - "PHONE_REQUIRED": "「電話」為必填欄位" + "PHONE_REQUIRED": "「電話」為必填欄位", + "PHONEBAR_API": "檢查 MotionBar 正在運行並且遠程控制代理程式已啟用" }, "DESCRIPTION": "說明", "DISPOSITIONS": "Dispositions", @@ -136,6 +137,12 @@ "PROJECT": "項目", "SELECT_LIST": "選擇清單", "SELECT_COMPANY": "選擇一家公司", - "SELECT_TAGS": "選取一或多個標籤" + "SELECT_TAGS": "選取一或多個標籤", + "HELP": { + "PHONEBAR_API": "要啓用點擊呼叫插入電話號碼並檢查遙控器已啟用值機人員" + }, + "PAGE": "頁面", + "ROWSPERPAGE": "每頁行數", + "OF": "的" } } \ No newline at end of file diff --git a/public/app/main/apps/dashboards/i18n/da.json b/public/app/main/apps/dashboards/i18n/da.json index 2be3308..196545f 100644 --- a/public/app/main/apps/dashboards/i18n/da.json +++ b/public/app/main/apps/dashboards/i18n/da.json @@ -121,6 +121,9 @@ "MOTIONDIALER": "Motion Bull", "TODAY_IVR_CAMPAIGNS_STATS": "I dag Kampagner Statistik Ivr", "DROPPED_TEXT": "Faldt Kø opkald", - "DROP_RATE_TEXT": "Kø Opkald sænkningshastighed" + "DROP_RATE_TEXT": "Kø Opkald sænkningshastighed", + "PAGE": "Page", + "ROWSPERPAGE": "Rækker pr. side", + "OF": "Af" } } \ No newline at end of file diff --git a/public/app/main/apps/dashboards/i18n/de.json b/public/app/main/apps/dashboards/i18n/de.json index fb7f7ee..cc82d0e 100644 --- a/public/app/main/apps/dashboards/i18n/de.json +++ b/public/app/main/apps/dashboards/i18n/de.json @@ -121,6 +121,9 @@ "MOTIONDIALER": "Motion Stier", "TODAY_IVR_CAMPAIGNS_STATS": "Heute Ivr-Kampagnen Stats", "DROPPED_TEXT": "Fallengelassen Anrufe aus der Warteschlange", - "DROP_RATE_TEXT": "Anrufe aus der Warteschlange, die Absenkgeschwindigkeit" + "DROP_RATE_TEXT": "Anrufe aus der Warteschlange, die Absenkgeschwindigkeit", + "PAGE": "Seite", + "ROWSPERPAGE": "Zeilen pro Seite", + "OF": "Von" } } \ No newline at end of file diff --git a/public/app/main/apps/dashboards/i18n/en.json b/public/app/main/apps/dashboards/i18n/en.json index 60e76a0..f3ab0e3 100644 --- a/public/app/main/apps/dashboards/i18n/en.json +++ b/public/app/main/apps/dashboards/i18n/en.json @@ -124,6 +124,18 @@ "OUTBOUND_ANSWER_RATE_TEXT": "Outbound calls Answer Rate", "PAGE": "Page", "ROWSPERPAGE": "Rows per page", - "OF": "Of" + "OF": "of", + "REPLY_PLACEHOLDER": "Type and hit enter to send a message", + "CONTACT_INFO": "Contact Info", + "CLOSE_AND_DISPOSE": "Close and dispose", + "DISPOSITIONS": "Dispositions", + "CLOSE_WITHOUT_DISPOSE": "Close without dispose", + "ACCEPT": "Accept", + "REJECT": "Reject", + "CLOSED": "Closed", + "INFO": "Info", + "NOTE": "Note", + "ACCEPT_ELSEWHERE": "Accepted elsewhere", + "ATTENTION": "Attention" } } \ No newline at end of file diff --git a/public/app/main/apps/dashboards/i18n/es.json b/public/app/main/apps/dashboards/i18n/es.json index 1994688..3545e96 100644 --- a/public/app/main/apps/dashboards/i18n/es.json +++ b/public/app/main/apps/dashboards/i18n/es.json @@ -121,6 +121,9 @@ "MOTIONDIALER": "Motion Bull", "TODAY_IVR_CAMPAIGNS_STATS": "Hoy campañas Ivr Stats", "DROPPED_TEXT": "Cayó la cola de llamadas", - "DROP_RATE_TEXT": "La tasa de caída de llamadas de cola" + "DROP_RATE_TEXT": "La tasa de caída de llamadas de cola", + "PAGE": "Página", + "ROWSPERPAGE": "Filas por página.", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/dashboards/i18n/fa.json b/public/app/main/apps/dashboards/i18n/fa.json index 24e757b..d0d16ca 100644 --- a/public/app/main/apps/dashboards/i18n/fa.json +++ b/public/app/main/apps/dashboards/i18n/fa.json @@ -121,6 +121,9 @@ "MOTIONDIALER": "حركت گاو", "TODAY_IVR_CAMPAIGNS_STATS": "امروز مبارزات Ivr Stats", "DROPPED_TEXT": "پائين صف تلفن", - "DROP_RATE_TEXT": "صف افت نرخ تماس ها" + "DROP_RATE_TEXT": "صف افت نرخ تماس ها", + "PAGE": "صفحه", + "ROWSPERPAGE": "رديف در صفحه", + "OF": "از" } } \ No newline at end of file diff --git a/public/app/main/apps/dashboards/i18n/fi.json b/public/app/main/apps/dashboards/i18n/fi.json index 9c3f04c..b1ae4a8 100644 --- a/public/app/main/apps/dashboards/i18n/fi.json +++ b/public/app/main/apps/dashboards/i18n/fi.json @@ -121,6 +121,9 @@ "MOTIONDIALER": "Motion Bull", "TODAY_IVR_CAMPAIGNS_STATS": "Tänään kampanjoita Ivr Stats", "DROPPED_TEXT": "Pudotettu jonoon puhelut", - "DROP_RATE_TEXT": "Jono vaatii laskunopeuden" + "DROP_RATE_TEXT": "Jono vaatii laskunopeuden", + "PAGE": "Sivu", + "ROWSPERPAGE": "Riviä sivulle", + "OF": "," } } \ No newline at end of file diff --git a/public/app/main/apps/dashboards/i18n/fr.json b/public/app/main/apps/dashboards/i18n/fr.json index 8054675..fe0d779 100644 --- a/public/app/main/apps/dashboards/i18n/fr.json +++ b/public/app/main/apps/dashboards/i18n/fr.json @@ -121,6 +121,9 @@ "MOTIONDIALER": "Motion Bull", "TODAY_IVR_CAMPAIGNS_STATS": "Aujourd'hui les campagnes Ivr Stats", "DROPPED_TEXT": "Abandonné les appels en file d'attente", - "DROP_RATE_TEXT": "Les appels en file d'attente de descente" + "DROP_RATE_TEXT": "Les appels en file d'attente de descente", + "PAGE": "La page", + "ROWSPERPAGE": "Les lignes par page", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/dashboards/i18n/hi.json b/public/app/main/apps/dashboards/i18n/hi.json index 55219d4..fa747a2 100644 --- a/public/app/main/apps/dashboards/i18n/hi.json +++ b/public/app/main/apps/dashboards/i18n/hi.json @@ -121,6 +121,9 @@ "MOTIONDIALER": "प्रस्ताव सांड", "TODAY_IVR_CAMPAIGNS_STATS": "आज Ivr अभियानों आंकड़े", "DROPPED_TEXT": "कॉल्स का तांता लगा दी है।", - "DROP_RATE_TEXT": "ड्रॉप कॉल कतार दर" + "DROP_RATE_TEXT": "ड्रॉप कॉल कतार दर", + "PAGE": "पृष्ठ", + "ROWSPERPAGE": "पंक्तियां प्रति पृष्ठ", + "OF": "की" } } \ No newline at end of file diff --git a/public/app/main/apps/dashboards/i18n/it.json b/public/app/main/apps/dashboards/i18n/it.json index 030af48..8a1133d 100644 --- a/public/app/main/apps/dashboards/i18n/it.json +++ b/public/app/main/apps/dashboards/i18n/it.json @@ -124,6 +124,18 @@ "DROP_RATE_TEXT": "Le chiamate in coda la velocità di discesa", "PAGE": "Pagina", "ROWSPERPAGE": "Righe per pagina", - "OF": "Di" + "OF": "di", + "REPLY_PLACEHOLDER": "Digitare e premere invio per inviare un messaggio", + "CONTACT_INFO": "Informazione Contatto", + "CLOSE_AND_DISPOSE": "Chiudi e disponi", + "DISPOSITIONS": "Esiti", + "CLOSE_WITHOUT_DISPOSE": "Chiudi senza esito", + "ACCEPT": "Accetta", + "REJECT": "Rifiuta", + "CLOSED": "Chiusa", + "INFO": "Info", + "NOTE": "Note", + "ACCEPT_ELSEWHERE": "Accettata da un altro agente", + "ATTENTION": "Attenzione" } } \ No newline at end of file diff --git a/public/app/main/apps/dashboards/i18n/ja.json b/public/app/main/apps/dashboards/i18n/ja.json index d5f63b2..2e2646c 100644 --- a/public/app/main/apps/dashboards/i18n/ja.json +++ b/public/app/main/apps/dashboards/i18n/ja.json @@ -121,6 +121,9 @@ "MOTIONDIALER": "モーションブル", "TODAY_IVR_CAMPAIGNS_STATS": "今日 IVR キャンペーン Stats", "DROPPED_TEXT": "ドロップされたキューコール", - "DROP_RATE_TEXT": "キューコールのドロップ率" + "DROP_RATE_TEXT": "キューコールのドロップ率", + "PAGE": "ページ", + "ROWSPERPAGE": "ページあたりの行数", + "OF": "の" } } \ No newline at end of file diff --git a/public/app/main/apps/dashboards/i18n/ko.json b/public/app/main/apps/dashboards/i18n/ko.json index 0bcb4d9..f6115ce 100644 --- a/public/app/main/apps/dashboards/i18n/ko.json +++ b/public/app/main/apps/dashboards/i18n/ko.json @@ -121,6 +121,9 @@ "MOTIONDIALER": "Motion 표적 화면", "TODAY_IVR_CAMPAIGNS_STATS": "오늘 Ivr 캠페인 통계", "DROPPED_TEXT": "떨어뜨린 대기열 통화", - "DROP_RATE_TEXT": "\" 전담팀 콜 드롭 비율" + "DROP_RATE_TEXT": "\" 전담팀 콜 드롭 비율", + "PAGE": "페이지", + "ROWSPERPAGE": "페이지 당 행", + "OF": "중" } } \ No newline at end of file diff --git a/public/app/main/apps/dashboards/i18n/nl.json b/public/app/main/apps/dashboards/i18n/nl.json index 7d1fcd0..a81f38b 100644 --- a/public/app/main/apps/dashboards/i18n/nl.json +++ b/public/app/main/apps/dashboards/i18n/nl.json @@ -121,6 +121,9 @@ "MOTIONDIALER": "Motion Bull", "TODAY_IVR_CAMPAIGNS_STATS": "Vandaag Ivr campagnes Stats", "DROPPED_TEXT": "Verbrede Wachtrij oproepen", - "DROP_RATE_TEXT": "Oproepen wachtrij daalsnelheid" + "DROP_RATE_TEXT": "Oproepen wachtrij daalsnelheid", + "PAGE": "Pagina", + "ROWSPERPAGE": "Rijen per pagina", + "OF": "Van" } } \ No newline at end of file diff --git a/public/app/main/apps/dashboards/i18n/no.json b/public/app/main/apps/dashboards/i18n/no.json index 84c4caf..fead0c2 100644 --- a/public/app/main/apps/dashboards/i18n/no.json +++ b/public/app/main/apps/dashboards/i18n/no.json @@ -121,6 +121,9 @@ "MOTIONDIALER": "Motion Bull", "TODAY_IVR_CAMPAIGNS_STATS": "I dag Ivr kampanjer statistikk.", "DROPPED_TEXT": "Droppet kø samtaler", - "DROP_RATE_TEXT": "Køen samtaler senkehastighet" + "DROP_RATE_TEXT": "Køen samtaler senkehastighet", + "PAGE": "Siden", + "ROWSPERPAGE": "Linjer per side", + "OF": "Av" } } \ No newline at end of file diff --git a/public/app/main/apps/dashboards/i18n/pt-PT.json b/public/app/main/apps/dashboards/i18n/pt-PT.json index e7bdb2d..e7fe6c2 100644 --- a/public/app/main/apps/dashboards/i18n/pt-PT.json +++ b/public/app/main/apps/dashboards/i18n/pt-PT.json @@ -121,6 +121,9 @@ "MOTIONDIALER": "Motion Bull", "TODAY_IVR_CAMPAIGNS_STATS": "Campanhas de IVR hoje Stats", "DROPPED_TEXT": "Reduziu as chamadas em fila", - "DROP_RATE_TEXT": "A taxa de queda de chamadas na fila" + "DROP_RATE_TEXT": "A taxa de queda de chamadas na fila", + "PAGE": "Página", + "ROWSPERPAGE": "Linhas por página", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/dashboards/i18n/ru.json b/public/app/main/apps/dashboards/i18n/ru.json index 3f305d1..a5d330f 100644 --- a/public/app/main/apps/dashboards/i18n/ru.json +++ b/public/app/main/apps/dashboards/i18n/ru.json @@ -121,6 +121,9 @@ "MOTIONDIALER": "Булл движения", "TODAY_IVR_CAMPAIGNS_STATS": "Сегодня кампаний IVR Stats", "DROPPED_TEXT": "Падения очереди вызовов", - "DROP_RATE_TEXT": "Вызовы в очереди скорость опускания" + "DROP_RATE_TEXT": "Вызовы в очереди скорость опускания", + "PAGE": "Страница", + "ROWSPERPAGE": "Строк на странице", + "OF": "В" } } \ No newline at end of file diff --git a/public/app/main/apps/dashboards/i18n/sv.json b/public/app/main/apps/dashboards/i18n/sv.json index 2fa3ac6..94f8098 100644 --- a/public/app/main/apps/dashboards/i18n/sv.json +++ b/public/app/main/apps/dashboards/i18n/sv.json @@ -121,6 +121,9 @@ "MOTIONDIALER": "Motion Bull", "TODAY_IVR_CAMPAIGNS_STATS": "Idag Ivr-kampanjer statistik", "DROPPED_TEXT": "Tappade kön samtal", - "DROP_RATE_TEXT": "Kön samtal sänkhastighet" + "DROP_RATE_TEXT": "Kön samtal sänkhastighet", + "PAGE": "Sidan", + "ROWSPERPAGE": "Rader per sida", + "OF": "Av" } } \ No newline at end of file diff --git a/public/app/main/apps/dashboards/i18n/tr.json b/public/app/main/apps/dashboards/i18n/tr.json index a868d0b..3ba7fe2 100644 --- a/public/app/main/apps/dashboards/i18n/tr.json +++ b/public/app/main/apps/dashboards/i18n/tr.json @@ -121,6 +121,9 @@ "MOTIONDIALER": "Hareket Boğa", "TODAY_IVR_CAMPAIGNS_STATS": "Bugün Ivr Kampanyaları İstatistikleri", "DROPPED_TEXT": "Sıraya Düştü Aramalar", - "DROP_RATE_TEXT": "Kuyruk Çağrıları Düşme Oranı" + "DROP_RATE_TEXT": "Kuyruk Çağrıları Düşme Oranı", + "PAGE": "Sayfa", + "ROWSPERPAGE": "Sayfadaki satırları", + "OF": "Ve" } } \ No newline at end of file diff --git a/public/app/main/apps/dashboards/i18n/zh-CN.json b/public/app/main/apps/dashboards/i18n/zh-CN.json index e5e3c2b..d39cba8 100644 --- a/public/app/main/apps/dashboards/i18n/zh-CN.json +++ b/public/app/main/apps/dashboards/i18n/zh-CN.json @@ -121,6 +121,9 @@ "MOTIONDIALER": "运动防撞架", "TODAY_IVR_CAMPAIGNS_STATS": "今天 Ivr 运动统计信息", "DROPPED_TEXT": "丢弃的队列中的呼叫", - "DROP_RATE_TEXT": "队列中的呼叫的下降速度" + "DROP_RATE_TEXT": "队列中的呼叫的下降速度", + "PAGE": "页面", + "ROWSPERPAGE": "每页的行数。", + "OF": "的" } } \ No newline at end of file diff --git a/public/app/main/apps/dashboards/i18n/zh-TW.json b/public/app/main/apps/dashboards/i18n/zh-TW.json index 95e91f2..adb7938 100644 --- a/public/app/main/apps/dashboards/i18n/zh-TW.json +++ b/public/app/main/apps/dashboards/i18n/zh-TW.json @@ -121,6 +121,9 @@ "MOTIONDIALER": "動態牛", "TODAY_IVR_CAMPAIGNS_STATS": "今天 Ivr 活動統計資料", "DROPPED_TEXT": "刪除佇列中的通話", - "DROP_RATE_TEXT": "將來電佇列下降速度" + "DROP_RATE_TEXT": "將來電佇列下降速度", + "PAGE": "頁面", + "ROWSPERPAGE": "每頁行數", + "OF": "的" } } \ No newline at end of file diff --git a/public/app/main/apps/fax/i18n/da.json b/public/app/main/apps/fax/i18n/da.json index 0219f96..3404b45 100644 --- a/public/app/main/apps/fax/i18n/da.json +++ b/public/app/main/apps/fax/i18n/da.json @@ -56,7 +56,8 @@ "T38TIMEOUT": "Timeout bruges til T.38 forhandling. Minimumværdien er 1000.", "ECM": "Fejl Tilslutningstilstand (ECM).", "MINRATE": "Minimums overførselshastighed indstillet før transmission. Mulige værdier er: 2400, 4800, 7200, 9600, 12000 eller 14400.", - "MAXRATE": "Maksimal overførselshastighed er før transmission. Mulige værdier er: 2400, 4800, 7200, 9600, 12000 eller 14400." + "MAXRATE": "Maksimal overførselshastighed er før transmission. Mulige værdier er: 2400, 4800, 7200, 9600, 12000 eller 14400.", + "NAME": "Kun tal og bogstaver og specielle tegn (.________) understøttes" }, "ADVANCED": "Avanceret", "ECM": "ECM", @@ -85,6 +86,9 @@ "NEW_FAXACCOUNT": "Ny e-mail konto", "NO_AVAILABLE_INFO": "Der er ingen tilgængelig info", "ALL_TEAMS": "Alle hold", - "SELECTED_TEAMS": "Udvalgte Teams" + "SELECTED_TEAMS": "Udvalgte Teams", + "PAGE": "Page", + "ROWSPERPAGE": "Rækker pr. side", + "OF": "Af" } } \ No newline at end of file diff --git a/public/app/main/apps/fax/i18n/de.json b/public/app/main/apps/fax/i18n/de.json index 6fda105..fbb26a5 100644 --- a/public/app/main/apps/fax/i18n/de.json +++ b/public/app/main/apps/fax/i18n/de.json @@ -56,7 +56,8 @@ "T38TIMEOUT": "Der Timeout für die T.38-Verhandlung. Der Mindestwert ist 1000.", "ECM": "Fehler beim Connection Mode (ECM).", "MINRATE": "Minimale Übertragungsrate eingestellt, bevor das Getriebe. Mögliche Werte sind: 2400, 4800, 7200, 9600, 12000 oder 14400.", - "MAXRATE": "Maximale Übertragungsrate eingestellt, bevor das Getriebe. Mögliche Werte sind: 2400, 4800, 7200, 9600, 12000 oder 14400." + "MAXRATE": "Maximale Übertragungsrate eingestellt, bevor das Getriebe. Mögliche Werte sind: 2400, 4800, 7200, 9600, 12000 oder 14400.", + "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt." }, "ADVANCED": "Erweiterte", "ECM": "ECM", @@ -85,6 +86,9 @@ "NEW_FAXACCOUNT": "Neue Fax Konto", "NO_AVAILABLE_INFO": "Keine verfügbaren Info", "ALL_TEAMS": "Alle Mannschaften", - "SELECTED_TEAMS": "Ausgewählte Teams" + "SELECTED_TEAMS": "Ausgewählte Teams", + "PAGE": "Seite", + "ROWSPERPAGE": "Zeilen pro Seite", + "OF": "Von" } } \ No newline at end of file diff --git a/public/app/main/apps/fax/i18n/en.json b/public/app/main/apps/fax/i18n/en.json index dfcf0cf..8800167 100644 --- a/public/app/main/apps/fax/i18n/en.json +++ b/public/app/main/apps/fax/i18n/en.json @@ -89,6 +89,6 @@ "SELECTED_TEAMS": "Selected Teams", "PAGE": "Page", "ROWSPERPAGE": "Rows per page", - "OF": "Of" + "OF": "of" } } \ No newline at end of file diff --git a/public/app/main/apps/fax/i18n/es.json b/public/app/main/apps/fax/i18n/es.json index f5e1543..5b53441 100644 --- a/public/app/main/apps/fax/i18n/es.json +++ b/public/app/main/apps/fax/i18n/es.json @@ -56,7 +56,8 @@ "T38TIMEOUT": "El tiempo utilizado para la negociación T.38. El valor mínimo es de 1000.", "ECM": "Modo de conexión de errores (ECM).", "MINRATE": "Velocidad de transferencia mínima establecida antes de la transmisión. Los valores posibles son: 2400, 4800, 7200, 9600, 12000 o 14400.", - "MAXRATE": "Tasa de transferencia máxima establecida antes de la transmisión. Los valores posibles son: 2400, 4800, 7200, 9600, 12000 o 14400." + "MAXRATE": "Tasa de transferencia máxima establecida antes de la transmisión. Los valores posibles son: 2400, 4800, 7200, 9600, 12000 o 14400.", + "NAME": "Sólo los números, letras y caracteres específicos (_) son compatibles." }, "ADVANCED": "Advanced", "ECM": "ECM", @@ -85,6 +86,9 @@ "NEW_FAXACCOUNT": "Nueva cuenta de Fax", "NO_AVAILABLE_INFO": "No hay información disponible", "ALL_TEAMS": "Todos los equipos", - "SELECTED_TEAMS": "Los equipos seleccionados" + "SELECTED_TEAMS": "Los equipos seleccionados", + "PAGE": "Página", + "ROWSPERPAGE": "Filas por página.", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/fax/i18n/fa.json b/public/app/main/apps/fax/i18n/fa.json index d0775db..d0b73fb 100644 --- a/public/app/main/apps/fax/i18n/fa.json +++ b/public/app/main/apps/fax/i18n/fa.json @@ -56,7 +56,8 @@ "T38TIMEOUT": "پایان زمان مجاز برای استفاده از تي38 مذاكره است. حداقل مقدار 1000.", "ECM": "خطا در حالت اتصال (ECM) است.", "MINRATE": "حداقل نرخ انتقال تا قبل از انتقال را تنظیم کنید. مقادیر: امكان پذير است، به تاريخ 4800، 2400، 9600، 7200 ورزاو 12000 یا 14400 است.", - "MAXRATE": "حداکثر میزان انتقال قبل از انتقال را تنظیم کنید. مقادیر: امكان پذير است، به تاريخ 4800، 2400، 9600، 7200 ورزاو 12000 یا 14400 است." + "MAXRATE": "حداکثر میزان انتقال قبل از انتقال را تنظیم کنید. مقادیر: امكان پذير است، به تاريخ 4800، 2400، 9600، 7200 ورزاو 12000 یا 14400 است.", + "NAME": "فقط شماره ها و حروف و نویسه های ویژه (_) پشتیبانی می شود." }, "ADVANCED": "پيش رفت.", "ECM": "ECM", @@ -85,6 +86,9 @@ "NEW_FAXACCOUNT": "اشتراک جدید فكس", "NO_AVAILABLE_INFO": "اطلاعات در دسترس نیست", "ALL_TEAMS": "همه تیم ها", - "SELECTED_TEAMS": "تيم هاي برگزيده" + "SELECTED_TEAMS": "تيم هاي برگزيده", + "PAGE": "صفحه", + "ROWSPERPAGE": "رديف در صفحه", + "OF": "از" } } \ No newline at end of file diff --git a/public/app/main/apps/fax/i18n/fi.json b/public/app/main/apps/fax/i18n/fi.json index 992304e..ddb80cc 100644 --- a/public/app/main/apps/fax/i18n/fi.json +++ b/public/app/main/apps/fax/i18n/fi.json @@ -56,7 +56,8 @@ "T38TIMEOUT": "Timeout käytetään T.38 välisissä neuvotteluissa. Pienin arvo on 1000.", "ECM": "Virhe Connection Mode (ECM).", "MINRATE": "Minimi siirtonopeus määritetään ennen lähettämistä. Mahdolliset arvot ovat: 2400, 4800, 7200, 9600, 12000 tai 14400.", - "MAXRATE": "Suurin siirtonopeus määritetään ennen lähettämistä. Mahdolliset arvot ovat: 2400, 4800, 7200, 9600, 12000 tai 14400." + "MAXRATE": "Suurin siirtonopeus määritetään ennen lähettämistä. Mahdolliset arvot ovat: 2400, 4800, 7200, 9600, 12000 tai 14400.", + "NAME": "Vain numeroita, kirjaimia ja erikoismerkkejä (._ tuetaan" }, "ADVANCED": "Tarkennettu", "ECM": "ECM", @@ -85,6 +86,9 @@ "NEW_FAXACCOUNT": "Uusi faksi tili", "NO_AVAILABLE_INFO": "Ei saatavana olevasta lataustehosta", "ALL_TEAMS": "Kaikki joukkueet", - "SELECTED_TEAMS": "Valittu työryhmille" + "SELECTED_TEAMS": "Valittu työryhmille", + "PAGE": "Sivu", + "ROWSPERPAGE": "Riviä sivulle", + "OF": "," } } \ No newline at end of file diff --git a/public/app/main/apps/fax/i18n/fr.json b/public/app/main/apps/fax/i18n/fr.json index bfe9c0e..da7b4dd 100644 --- a/public/app/main/apps/fax/i18n/fr.json +++ b/public/app/main/apps/fax/i18n/fr.json @@ -56,7 +56,8 @@ "T38TIMEOUT": "Le délai utilisé pour T.38 la négociation. La valeur minimale est de 1000.", "ECM": "Mode de connexion d'erreur (ECM).", "MINRATE": "Taux de transfert minimum défini avant la transmission. Les valeurs possibles sont : 2400, 4800, 7200, 9600, 12000 ou 14400.", - "MAXRATE": "Taux de transfert maximal défini avant la transmission. Les valeurs possibles sont : 2400, 4800, 7200, 9600, 12000 ou 14400." + "MAXRATE": "Taux de transfert maximal défini avant la transmission. Les valeurs possibles sont : 2400, 4800, 7200, 9600, 12000 ou 14400.", + "NAME": "Seulement les chiffres, lettres et caractères spécifiques (._) sont pris en charge" }, "ADVANCED": "Recherche avancée", "ECM": "ECM", @@ -85,6 +86,9 @@ "NEW_FAXACCOUNT": "Nouveau compte Fax", "NO_AVAILABLE_INFO": "Aucune information disponible", "ALL_TEAMS": "Toutes les équipes", - "SELECTED_TEAMS": "Les équipes sélectionnées" + "SELECTED_TEAMS": "Les équipes sélectionnées", + "PAGE": "La page", + "ROWSPERPAGE": "Les lignes par page", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/fax/i18n/hi.json b/public/app/main/apps/fax/i18n/hi.json index 0eb94fb..05af258 100644 --- a/public/app/main/apps/fax/i18n/hi.json +++ b/public/app/main/apps/fax/i18n/hi.json @@ -56,7 +56,8 @@ "T38TIMEOUT": "38.टी. के लिए प्रयुक्त टाइमआउट बातचीत है। 1000 का न्यूनतम मूल्य है।", "ECM": "कनेक्शन मोड (ECM त्रुटि.", "MINRATE": "स् थानांतरण न्यूनतम दर निर्धारित है। 7200 4800 2400 में, इस प्रकार हैं : मूल्यों संभव हो, 9600, 12000 14400 या है।", - "MAXRATE": "अधिकतम दर निर्धारित पारेषण अंतरण 7200 4800 2400 में, इस प्रकार हैं : मूल्यों संभव हो, 9600, 12000 14400 या है।" + "MAXRATE": "अधिकतम दर निर्धारित पारेषण अंतरण 7200 4800 2400 में, इस प्रकार हैं : मूल्यों संभव हो, 9600, 12000 14400 या है।", + "NAME": "केवल विशिष्ट वर्ण (।_) और नंबर्स, समर्थित" }, "ADVANCED": "उन्नत", "ECM": "ECM", @@ -85,6 +86,9 @@ "NEW_FAXACCOUNT": "नए युग से खाते", "NO_AVAILABLE_INFO": "जानकारी उपलब्ध नहीं", "ALL_TEAMS": "सभी टीमें भाग लेंगी।", - "SELECTED_TEAMS": "चयनित टीम" + "SELECTED_TEAMS": "चयनित टीम", + "PAGE": "पृष्ठ", + "ROWSPERPAGE": "पंक्तियां प्रति पृष्ठ", + "OF": "की" } } \ No newline at end of file diff --git a/public/app/main/apps/fax/i18n/it.json b/public/app/main/apps/fax/i18n/it.json index b0e6d10..8d4725d 100644 --- a/public/app/main/apps/fax/i18n/it.json +++ b/public/app/main/apps/fax/i18n/it.json @@ -89,6 +89,6 @@ "SELECTED_TEAMS": "Team selezionati", "PAGE": "Pagina", "ROWSPERPAGE": "Righe per pagina", - "OF": "Di" + "OF": "di" } } \ No newline at end of file diff --git a/public/app/main/apps/fax/i18n/ja.json b/public/app/main/apps/fax/i18n/ja.json index 1e27404..347096a 100644 --- a/public/app/main/apps/fax/i18n/ja.json +++ b/public/app/main/apps/fax/i18n/ja.json @@ -56,7 +56,8 @@ "T38TIMEOUT": "T. 38 ネゴシエーションに使用されるタイムアウトを設定します。 最小値は 1000 です。", "ECM": "エラーが発生しました接続モード( ECM )します。", "MINRATE": "最小の転送レートは、データを送信する前に設定されています。 指定可能な値は次のとおりです。 2400 、 4800 、 7200 、 9600 、 12000 、または 14400 です。", - "MAXRATE": "最大転送レートは、データを送信する前に設定されています。 指定可能な値は次のとおりです。 2400 、 4800 、 7200 、 9600 、 12000 、または 14400 です。" + "MAXRATE": "最大転送レートは、データを送信する前に設定されています。 指定可能な値は次のとおりです。 2400 、 4800 、 7200 、 9600 、 12000 、または 14400 です。", + "NAME": "数字、文字、およびのみ特定の文字 ( 。 ) はサポートされています" }, "ADVANCED": "高度な", "ECM": "ECM", @@ -85,6 +86,9 @@ "NEW_FAXACCOUNT": "新しい FAX アカウントを", "NO_AVAILABLE_INFO": "使用可能な情報はありません", "ALL_TEAMS": "すべてのチーム", - "SELECTED_TEAMS": "選択したチーム" + "SELECTED_TEAMS": "選択したチーム", + "PAGE": "ページ", + "ROWSPERPAGE": "ページあたりの行数", + "OF": "の" } } \ No newline at end of file diff --git a/public/app/main/apps/fax/i18n/ko.json b/public/app/main/apps/fax/i18n/ko.json index 4db2039..294fae9 100644 --- a/public/app/main/apps/fax/i18n/ko.json +++ b/public/app/main/apps/fax/i18n/ko.json @@ -56,7 +56,8 @@ "T38TIMEOUT": "T.38 협상을 하기 위해 사용되는 시간 종료. 최소 값은 1000.", "ECM": "오류 연결 모드(ECM).", "MINRATE": "최소 환승 전송 전에율을. 가능한 값은: 2400, 4800, 7200, 9600, 12000 또는 14400.", - "MAXRATE": "최대 전송 전송 전에율을. 가능한 값은: 2400, 4800, 7200, 9600, 12000 또는 14400." + "MAXRATE": "최대 전송 전송 전에율을. 가능한 값은: 2400, 4800, 7200, 9600, 12000 또는 14400.", + "NAME": "숫자와 글자 및 특정 문자(._) 지원됩니다." }, "ADVANCED": "고급", "ECM": "ECM", @@ -85,6 +86,9 @@ "NEW_FAXACCOUNT": "새 팩스 계정", "NO_AVAILABLE_INFO": "사용 가능한 정보가 없습니다", "ALL_TEAMS": "모든 팀이", - "SELECTED_TEAMS": "선택한 팀에" + "SELECTED_TEAMS": "선택한 팀에", + "PAGE": "페이지", + "ROWSPERPAGE": "페이지 당 행", + "OF": "중" } } \ No newline at end of file diff --git a/public/app/main/apps/fax/i18n/nl.json b/public/app/main/apps/fax/i18n/nl.json index 56aec75..9b4f0c9 100644 --- a/public/app/main/apps/fax/i18n/nl.json +++ b/public/app/main/apps/fax/i18n/nl.json @@ -56,7 +56,8 @@ "T38TIMEOUT": "De time-out wordt gebruikt voor T.38 onderhandeling. De minimumwaarde is 1000.", "ECM": "Fout Connection Mode (ECM).", "MINRATE": "Min overdrachtssnelheid instellen voordat de versnellingsbak. Mogelijke waarden zijn: 2400, 4800, 7200, 9600, 12000 of 14400.", - "MAXRATE": "Maximale overdrachtsnelheid ingesteld voor verzending. Mogelijke waarden zijn: 2400, 4800, 7200, 9600, 12000 of 14400." + "MAXRATE": "Maximale overdrachtsnelheid ingesteld voor verzending. Mogelijke waarden zijn: 2400, 4800, 7200, 9600, 12000 of 14400.", + "NAME": "Alleen cijfers, letters en speciale tekens (_) worden ondersteund" }, "ADVANCED": "Geavanceerd", "ECM": "ECM", @@ -85,6 +86,9 @@ "NEW_FAXACCOUNT": "Nieuwe fax Account", "NO_AVAILABLE_INFO": "Geen beschikbare informatie", "ALL_TEAMS": "Alle teams", - "SELECTED_TEAMS": "Geselecteerde teams" + "SELECTED_TEAMS": "Geselecteerde teams", + "PAGE": "Pagina", + "ROWSPERPAGE": "Rijen per pagina", + "OF": "Van" } } \ No newline at end of file diff --git a/public/app/main/apps/fax/i18n/no.json b/public/app/main/apps/fax/i18n/no.json index b349fe6..23149f0 100644 --- a/public/app/main/apps/fax/i18n/no.json +++ b/public/app/main/apps/fax/i18n/no.json @@ -56,7 +56,8 @@ "T38TIMEOUT": "Tidsavbrudd brukes for T.38 forhandling. Minimumsverdien er 1000.", "ECM": "Feil Connection Mode (ECM).", "MINRATE": "Minimum overføringshastighet satt før transmisjonen. Mulige verdier er: 2400, 4800, 7200, 9600, 12000 eller 14400.", - "MAXRATE": "Maksimal overføringshastighet satt før transmisjonen. Mulige verdier er: 2400, 4800, 7200, 9600, 12000 eller 14400." + "MAXRATE": "Maksimal overføringshastighet satt før transmisjonen. Mulige verdier er: 2400, 4800, 7200, 9600, 12000 eller 14400.", + "NAME": "Bare tall, bokstaver og bestemte tegn (._) støttes" }, "ADVANCED": "Avansert", "ECM": "ECM", @@ -85,6 +86,9 @@ "NEW_FAXACCOUNT": "Ny faks konto", "NO_AVAILABLE_INFO": "Ingen tilgjengelig info", "ALL_TEAMS": "Alle grupper", - "SELECTED_TEAMS": "Valgte lag" + "SELECTED_TEAMS": "Valgte lag", + "PAGE": "Siden", + "ROWSPERPAGE": "Linjer per side", + "OF": "Av" } } \ No newline at end of file diff --git a/public/app/main/apps/fax/i18n/pt-PT.json b/public/app/main/apps/fax/i18n/pt-PT.json index 9640a47..249abf1 100644 --- a/public/app/main/apps/fax/i18n/pt-PT.json +++ b/public/app/main/apps/fax/i18n/pt-PT.json @@ -56,7 +56,8 @@ "T38TIMEOUT": "O tempo usado para T.38 negociação. O valor mínimo é 1000.", "ECM": "O Modo de conexão de erro (ECM).", "MINRATE": "Taxa de transferência mínima definida antes da transmissão. Os valores possíveis são: 2400, 4800, 7200, 9600, 12000 ou 14400.", - "MAXRATE": "Taxa de transferência máxima definida antes da transmissão. Os valores possíveis são: 2400, 4800, 7200, 9600, 12000 ou 14400." + "MAXRATE": "Taxa de transferência máxima definida antes da transmissão. Os valores possíveis são: 2400, 4800, 7200, 9600, 12000 ou 14400.", + "NAME": "Apenas números, letras e caracteres específicos (._) são suportados" }, "ADVANCED": "Avançado", "ECM": "ECM", @@ -85,6 +86,9 @@ "NEW_FAXACCOUNT": "Nova conta de fax", "NO_AVAILABLE_INFO": "Sem informações disponíveis", "ALL_TEAMS": "Todas as equipas", - "SELECTED_TEAMS": "Equipes selecionadas" + "SELECTED_TEAMS": "Equipes selecionadas", + "PAGE": "Página", + "ROWSPERPAGE": "Linhas por página", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/fax/i18n/ru.json b/public/app/main/apps/fax/i18n/ru.json index db0746f..cb7325d 100644 --- a/public/app/main/apps/fax/i18n/ru.json +++ b/public/app/main/apps/fax/i18n/ru.json @@ -56,7 +56,8 @@ "T38TIMEOUT": "Время ожидания используется для T.38 переговоров. Минимальное значение - 1000.", "ECM": "Ошибка связи режим (ECM).", "MINRATE": "Минимальная скорость передачи данных до установки трансмиссии. Возможные значения: 2400, 4800, 7200, 9600, 12000 или 14400.", - "MAXRATE": "Максимальная скорость передачи до установки трансмиссии. Возможные значения: 2400, 4800, 7200, 9600, 12000 или 14400." + "MAXRATE": "Максимальная скорость передачи до установки трансмиссии. Возможные значения: 2400, 4800, 7200, 9600, 12000 или 14400.", + "NAME": "Только цифры, буквы и специальные символы (_) поддерживаются" }, "ADVANCED": "Расширенные возможности", "ECM": "ECM", @@ -85,6 +86,9 @@ "NEW_FAXACCOUNT": "Новый факс счета", "NO_AVAILABLE_INFO": "Нет доступной информации", "ALL_TEAMS": "Все группы", - "SELECTED_TEAMS": "Выбранные группы" + "SELECTED_TEAMS": "Выбранные группы", + "PAGE": "Страница", + "ROWSPERPAGE": "Строк на странице", + "OF": "В" } } \ No newline at end of file diff --git a/public/app/main/apps/fax/i18n/sv.json b/public/app/main/apps/fax/i18n/sv.json index b9f8291..af6afcd 100644 --- a/public/app/main/apps/fax/i18n/sv.json +++ b/public/app/main/apps/fax/i18n/sv.json @@ -56,7 +56,8 @@ "T38TIMEOUT": "Timeout för T.38-förhandling. Minsta värde är 1000.", "ECM": "Fel Connection Mode (ECM).", "MINRATE": "Minsta överföringshastighet som före överföringen. Möjliga värden är: 2400, 4800, 7200, 9600, 12000 eller 14400.", - "MAXRATE": "Maximal överföringshastighet som före överföringen. Möjliga värden är: 2400, 4800, 7200, 9600, 12000 eller 14400." + "MAXRATE": "Maximal överföringshastighet som före överföringen. Möjliga värden är: 2400, 4800, 7200, 9600, 12000 eller 14400.", + "NAME": "Endast siffror, bokstäver och särskilda tecken (_) stöds" }, "ADVANCED": "Avancerade", "ECM": "ECM", @@ -85,6 +86,9 @@ "NEW_FAXACCOUNT": "Nytt Fax-konto", "NO_AVAILABLE_INFO": "Inga tillgängliga info", "ALL_TEAMS": "Alla grupper", - "SELECTED_TEAMS": "Valda grupper" + "SELECTED_TEAMS": "Valda grupper", + "PAGE": "Sidan", + "ROWSPERPAGE": "Rader per sida", + "OF": "Av" } } \ No newline at end of file diff --git a/public/app/main/apps/fax/i18n/tr.json b/public/app/main/apps/fax/i18n/tr.json index ff9192f..5301912 100644 --- a/public/app/main/apps/fax/i18n/tr.json +++ b/public/app/main/apps/fax/i18n/tr.json @@ -56,7 +56,8 @@ "T38TIMEOUT": "Zaman aşımı için T.38 müzakere. Minimum değer 1000.", "ECM": "Hata Bağlantı Modu (ECM).", "MINRATE": "Minimum aktarım hızı ayarlama önce. Olası değerler: 2400, 4800, 7200, 9600, 12000 veya 14400.", - "MAXRATE": "Maksimum aktarım hızı önce güç aktarıcı. Olası değerler: 2400, 4800, 7200, 9600, 12000 veya 14400." + "MAXRATE": "Maksimum aktarım hızı önce güç aktarıcı. Olası değerler: 2400, 4800, 7200, 9600, 12000 veya 14400.", + "NAME": "Sadece sayılar, harfler ve özel karakterler (._) desteklenir." }, "ADVANCED": "Gelişmiş", "ECM": "ECM", @@ -85,6 +86,9 @@ "NEW_FAXACCOUNT": "Yeni Faks Hesap", "NO_AVAILABLE_INFO": "Mevcut bilgisi", "ALL_TEAMS": "Tüm takımlar", - "SELECTED_TEAMS": "Seçilen Ekipleri" + "SELECTED_TEAMS": "Seçilen Ekipleri", + "PAGE": "Sayfa", + "ROWSPERPAGE": "Sayfadaki satırları", + "OF": "Ve" } } \ No newline at end of file diff --git a/public/app/main/apps/fax/i18n/zh-CN.json b/public/app/main/apps/fax/i18n/zh-CN.json index a1c3ba7..0f1ecad 100644 --- a/public/app/main/apps/fax/i18n/zh-CN.json +++ b/public/app/main/apps/fax/i18n/zh-CN.json @@ -56,7 +56,8 @@ "T38TIMEOUT": "超时用于 T38 的谈判。 最小值为 1000。", "ECM": "错误的连接模式(ECM)。", "MINRATE": "最小传输率之前设置的变速箱。 可能的值为: 2400、4800、7200、9600、12000 或 14400。", - "MAXRATE": "最大传输率之前设置的变速箱。 可能的值为: 2400、4800、7200、9600、12000 或 14400。" + "MAXRATE": "最大传输率之前设置的变速箱。 可能的值为: 2400、4800、7200、9600、12000 或 14400。", + "NAME": "只有数字、字母和特殊字符(_)的支持" }, "ADVANCED": "高级", "ECM": "ECM", @@ -85,6 +86,9 @@ "NEW_FAXACCOUNT": "新的传真帐户", "NO_AVAILABLE_INFO": "无可用的信息", "ALL_TEAMS": "所有的团队", - "SELECTED_TEAMS": "选定的组" + "SELECTED_TEAMS": "选定的组", + "PAGE": "页面", + "ROWSPERPAGE": "每页的行数。", + "OF": "的" } } \ No newline at end of file diff --git a/public/app/main/apps/fax/i18n/zh-TW.json b/public/app/main/apps/fax/i18n/zh-TW.json index fe46b76..37ab157 100644 --- a/public/app/main/apps/fax/i18n/zh-TW.json +++ b/public/app/main/apps/fax/i18n/zh-TW.json @@ -56,7 +56,8 @@ "T38TIMEOUT": "逾時時間用於 T 。必須保持協調。 最小值為 1000 。", "ECM": "錯誤連線模式 ( ECM ) 。", "MINRATE": "最低傳輸速率設定再進行傳輸。 可能的值為 : 2400 、 4800 、 7200 、 9600 、 12000 或 14400 。", - "MAXRATE": "最大傳輸速率設定再進行傳輸。 可能的值為 : 2400 、 4800 、 7200 、 9600 、 12000 或 14400 。" + "MAXRATE": "最大傳輸速率設定再進行傳輸。 可能的值為 : 2400 、 4800 、 7200 、 9600 、 12000 或 14400 。", + "NAME": "只有數字、字母和特殊字元 ( _ ) 都受到支援" }, "ADVANCED": "進階", "ECM": "企業內容管理", @@ -85,6 +86,9 @@ "NEW_FAXACCOUNT": "新的傳真帳號", "NO_AVAILABLE_INFO": "無可用資訊", "ALL_TEAMS": "所有群組", - "SELECTED_TEAMS": "選取群組" + "SELECTED_TEAMS": "選取群組", + "PAGE": "頁面", + "ROWSPERPAGE": "每頁行數", + "OF": "的" } } \ No newline at end of file diff --git a/public/app/main/apps/integrations/i18n/da.json b/public/app/main/apps/integrations/i18n/da.json index 3009510..dff0d79 100644 --- a/public/app/main/apps/integrations/i18n/da.json +++ b/public/app/main/apps/integrations/i18n/da.json @@ -38,7 +38,12 @@ "KEY_REQUIRED": "Den nøgle er pÃ¥krævet", "TYPE_REQUIRED": "Den Type skal angives", "VALUE_REQUIRED": "Værdien er nødvendig", - "FIELD_REQUIRED": "Feltet er pÃ¥krævet" + "FIELD_REQUIRED": "Feltet er pÃ¥krævet", + "CONSUMERKEY_REQUIRED": "Forbrugeren nøgle er pÃ¥krævet", + "CONSUMERSECRET_REQUIRED": "Forbrugeren hemmeligheden er pÃ¥krævet", + "TOKENSECRET_REQUIRED": "Token Secret er pÃ¥krævet", + "HOST_REQUIRED": "Værten er pÃ¥krævet", + "AUTHTOKEN_REQUIRED": "Bevillingsformaliteter token er pÃ¥krævet" }, "HELP": { "MOTIONPROXYADDRESS": "Motion (Proxy) Adresse: det er obligatorisk, hvis du vil udfylde sedlen med optagelsen URL. Indtast i følgende format: : //[:]. Eksempel: https://X.Y.Z.W" @@ -134,6 +139,32 @@ "TEST_SUGARCRMACCOUNT": "Test SugerCRM Konto", "TEST_SALESFORCEACCOUNT": "Test Salesforce højde", "INTEGRATION_TAB": "Fanen integration", - "NEW_TAB": "Ny fane" + "NEW_TAB": "Ny fane", + "DESKACCOUNTS": "Reception regnskab", + "EDIT_DESKACCOUNT": "Edit Desk konto", + "TEST_DESKACCOUNT": "Test Reception konto", + "DELETE_DESKACCOUNT": "Skrivebord slet konto", + "CONSUMERKEY": "Forbruger nøgle", + "CONSUMERSECRET": "Consumer Secret", + "TOKENSECRET": "Token Secret", + "ADD_DESKACCOUNT": "Skrivebord Tilføj konto", + "NEW_DESKACCOUNT": "Ny Reception konto", + "ADD_DESKCONFIGURATION": "Tilføj Desk Configuration", + "NEW_DESKCONFIGURATION": "Ny Desk Configuration", + "DELETE_DESKCONFIGURATION": "Slet Desk Configuration", + "ZOHOACCOUNTS": "Zoho konti", + "EDIT_ZOHOACCOUNT": "Rediger Zoho konto", + "TEST_ZOHOACCOUNT": "Test Zoho konto", + "DELETE_ZOHOACCOUNT": "Zoho slet konto", + "ADD_ZOHOACCOUNT": "Zoho Tilføj konto", + "NEW_ZOHOACCOUNT": "Nye Zoho konto", + "ADD_ZOHOCONFIGURATION": "Tilføj Zoho konfiguration", + "NEW_ZOHOCONFIGURATION": "Nye Zoho konfiguration", + "AUTHTOKEN": "Tilladelsen Token", + "HOST": "Host", + "DELETE_ZOHOCONFIGURATION": "Slet Zoho konfiguration", + "PAGE": "Page", + "ROWSPERPAGE": "Rækker pr. side", + "OF": "Af" } } \ No newline at end of file diff --git a/public/app/main/apps/integrations/i18n/de.json b/public/app/main/apps/integrations/i18n/de.json index 7988403..5d048f5 100644 --- a/public/app/main/apps/integrations/i18n/de.json +++ b/public/app/main/apps/integrations/i18n/de.json @@ -38,7 +38,12 @@ "KEY_REQUIRED": "Der Schlüssel ist erforderlich", "TYPE_REQUIRED": "Der Typ ist erforderlich", "VALUE_REQUIRED": "Der Wert ist erforderlich", - "FIELD_REQUIRED": "Das Feld ist erforderlich." + "FIELD_REQUIRED": "Das Feld ist erforderlich.", + "CONSUMERKEY_REQUIRED": "Der Verbraucher Schlüssel ist erforderlich", + "CONSUMERSECRET_REQUIRED": "Der Verbraucher Geheimnis ist erforderlich", + "TOKENSECRET_REQUIRED": "Das Token Geheimnis ist erforderlich", + "HOST_REQUIRED": "Der Host wird benötigt", + "AUTHTOKEN_REQUIRED": "Die autorization Token ist erforderlich" }, "HELP": { "MOTIONPROXYADDRESS": "Bewegung (Proxy) Adresse: Es ist obligatorisch, wenn Sie wollen, füllen Sie das Ticket mit Neucodierungen URL. Bitte geben Sie im folgenden Format ein: ≪protocol> : //[:]. Beispiel: https://X.Y.Z.W" @@ -134,6 +139,32 @@ "TEST_SUGARCRMACCOUNT": "Test SugerCRM Konto", "TEST_SALESFORCEACCOUNT": "Testen Sie Salesforce Konto", "INTEGRATION_TAB": "Register Integration", - "NEW_TAB": "Neue Registerkarte" + "NEW_TAB": "Neue Registerkarte", + "DESKACCOUNTS": "Schreibtisch Konten", + "EDIT_DESKACCOUNT": "Schreibtisch Konto bearbeiten", + "TEST_DESKACCOUNT": "Test Schreibtisch Konto", + "DELETE_DESKACCOUNT": "Schreibtisch Konto löschen", + "CONSUMERKEY": "Verbraucher Schlüssel", + "CONSUMERSECRET": "Verbraucher Geheimnis", + "TOKENSECRET": "Token Geheimnis", + "ADD_DESKACCOUNT": "Hinzufügen Schreibtisch Konto", + "NEW_DESKACCOUNT": "Neuer Schreibtisch Konto", + "ADD_DESKCONFIGURATION": "Hinzufügen Schreibtisch Konfiguration", + "NEW_DESKCONFIGURATION": "Neuer Schreibtisch Konfiguration", + "DELETE_DESKCONFIGURATION": "Schreibtisch Konfiguration löschen", + "ZOHOACCOUNTS": "Zoho Konten", + "EDIT_ZOHOACCOUNT": "Zoho Konto bearbeiten", + "TEST_ZOHOACCOUNT": "Test Zoho Konto", + "DELETE_ZOHOACCOUNT": "Zoho Konto löschen", + "ADD_ZOHOACCOUNT": "Zoho Konto hinzufügen", + "NEW_ZOHOACCOUNT": "Neue Zoho Konto", + "ADD_ZOHOCONFIGURATION": "Hinzufügen Zoho Konfiguration", + "NEW_ZOHOCONFIGURATION": "Neue Zoho Konfiguration", + "AUTHTOKEN": "Genehmigung Token", + "HOST": "Host", + "DELETE_ZOHOCONFIGURATION": "Zoho Konfiguration löschen", + "PAGE": "Seite", + "ROWSPERPAGE": "Zeilen pro Seite", + "OF": "Von" } } \ No newline at end of file diff --git a/public/app/main/apps/integrations/i18n/en.json b/public/app/main/apps/integrations/i18n/en.json index 1eef95e..0e8f64a 100644 --- a/public/app/main/apps/integrations/i18n/en.json +++ b/public/app/main/apps/integrations/i18n/en.json @@ -165,6 +165,6 @@ "DELETE_ZOHOCONFIGURATION": "Delete Zoho Configuration", "PAGE": "Page", "ROWSPERPAGE": "Rows per page", - "OF": "Of" + "OF": "of" } } \ No newline at end of file diff --git a/public/app/main/apps/integrations/i18n/es.json b/public/app/main/apps/integrations/i18n/es.json index 0e6ebbf..c78c8b4 100644 --- a/public/app/main/apps/integrations/i18n/es.json +++ b/public/app/main/apps/integrations/i18n/es.json @@ -38,7 +38,12 @@ "KEY_REQUIRED": "La clave es necesaria", "TYPE_REQUIRED": "El tipo es requerido", "VALUE_REQUIRED": "El valor es obligatorio", - "FIELD_REQUIRED": "El campo es obligatorio" + "FIELD_REQUIRED": "El campo es obligatorio", + "CONSUMERKEY_REQUIRED": "El consumidor se requiere clave", + "CONSUMERSECRET_REQUIRED": "El consumidor es necesario secreto", + "TOKENSECRET_REQUIRED": "El Token es necesario secreto", + "HOST_REQUIRED": "El Host es obligatorio", + "AUTHTOKEN_REQUIRED": "Se requiere la autorización de token" }, "HELP": { "MOTIONPROXYADDRESS": "Motion (proxy) Dirección: es obligatorio si desea rellenar el ticket el cuerpo con la recodificación URL. Por favor, introduzca en el siguiente formato: <Protocol> : //[:]. Esimerkki: https://X.Y.Z.W" @@ -134,6 +139,32 @@ "TEST_SUGARCRMACCOUNT": "Testaa SugerCRM tili", "TEST_SALESFORCEACCOUNT": "Testaa Salesforce tili", "INTEGRATION_TAB": "Integraatio-välilehti", - "NEW_TAB": "Uusi välilehti" + "NEW_TAB": "Uusi välilehti", + "DESKACCOUNTS": "Desk tilit", + "EDIT_DESKACCOUNT": "Muokkaa Desk tili", + "TEST_DESKACCOUNT": "Testaa Desk tili", + "DELETE_DESKACCOUNT": "Poista Desk tili", + "CONSUMERKEY": "Kuluttaja-näppäintä", + "CONSUMERSECRET": "Kuluttajien salaisuus", + "TOKENSECRET": "Token salaisuus", + "ADD_DESKACCOUNT": "Lisää Desk tili", + "NEW_DESKACCOUNT": "Uusi Desk tili", + "ADD_DESKCONFIGURATION": "Lisää Deskin konfigurointi", + "NEW_DESKCONFIGURATION": "Uusi Deskin konfigurointi", + "DELETE_DESKCONFIGURATION": "Poista Deskin konfigurointi", + "ZOHOACCOUNTS": "Zoho tilit", + "EDIT_ZOHOACCOUNT": "Muokkaa Zoho tili", + "TEST_ZOHOACCOUNT": "Testaa Zoho tili", + "DELETE_ZOHOACCOUNT": "Poista Zoho tili", + "ADD_ZOHOACCOUNT": "Lisää Zoho tili", + "NEW_ZOHOACCOUNT": "Uuden tilin Zoho", + "ADD_ZOHOCONFIGURATION": "Lisää Zoho määritys", + "NEW_ZOHOCONFIGURATION": "Uusi kokoonpano Zoho", + "AUTHTOKEN": "Valtuutus etätunnistin", + "HOST": "Host", + "DELETE_ZOHOCONFIGURATION": "Poista Zoho määritys", + "PAGE": "Sivu", + "ROWSPERPAGE": "Riviä sivulle", + "OF": "," } } \ No newline at end of file diff --git a/public/app/main/apps/integrations/i18n/fr.json b/public/app/main/apps/integrations/i18n/fr.json index 3159359..2f89ad0 100644 --- a/public/app/main/apps/integrations/i18n/fr.json +++ b/public/app/main/apps/integrations/i18n/fr.json @@ -38,7 +38,12 @@ "KEY_REQUIRED": "La clé est nécessaire", "TYPE_REQUIRED": "Le type est requis", "VALUE_REQUIRED": "Cette valeur est requise", - "FIELD_REQUIRED": "Le champ est obligatoire" + "FIELD_REQUIRED": "Le champ est obligatoire", + "CONSUMERKEY_REQUIRED": "La clé est nécessaire à la consommation", + "CONSUMERSECRET_REQUIRED": "Le consommateur est tenu secret", + "TOKENSECRET_REQUIRED": "Le jeton secret est nécessaire", + "HOST_REQUIRED": "L'hôte est nécessaire", + "AUTHTOKEN_REQUIRED": "Le jeton d'autorisation est requis" }, "HELP": { "MOTIONPROXYADDRESS": "Motion (Proxy) Adresse : il est obligatoire si vous souhaitez le corps avec de la réécriture URL. S'il vous plaît, entrez dans le format suivant : : //[:]. Voorbeeld: https://X.Y.Z.W" @@ -134,6 +139,32 @@ "TEST_SUGARCRMACCOUNT": "Test SugerCRM Account", "TEST_SALESFORCEACCOUNT": "Test Salesforce-account", "INTEGRATION_TAB": "Tabblad integratie", - "NEW_TAB": "Nieuw tabblad" + "NEW_TAB": "Nieuw tabblad", + "DESKACCOUNTS": "Bureau Accounts", + "EDIT_DESKACCOUNT": "Edit Desk Account", + "TEST_DESKACCOUNT": "Test Desk Account", + "DELETE_DESKACCOUNT": "Verwijder Desk Account", + "CONSUMERKEY": "Toets voor consumenten", + "CONSUMERSECRET": "Consument geheim", + "TOKENSECRET": "Token geheim", + "ADD_DESKACCOUNT": "Voeg Desk Account", + "NEW_DESKACCOUNT": "Nieuwe Desk Account", + "ADD_DESKCONFIGURATION": "Voeg Desk-configuratie", + "NEW_DESKCONFIGURATION": "Nieuwe Desk-configuratie", + "DELETE_DESKCONFIGURATION": "Verwijder Desk-configuratie", + "ZOHOACCOUNTS": "Zoho Accounts", + "EDIT_ZOHOACCOUNT": "Edit Zoho Account", + "TEST_ZOHOACCOUNT": "Test Zoho Account", + "DELETE_ZOHOACCOUNT": "Verwijder Zoho Account", + "ADD_ZOHOACCOUNT": "Voeg Zoho Account", + "NEW_ZOHOACCOUNT": "Nieuwe Zoho Account", + "ADD_ZOHOCONFIGURATION": "Voeg Zoho configuratie", + "NEW_ZOHOCONFIGURATION": "Nieuwe Zoho configuratie", + "AUTHTOKEN": "Autorisatie Token", + "HOST": "Host", + "DELETE_ZOHOCONFIGURATION": "Verwijder Zoho configuratie", + "PAGE": "Pagina", + "ROWSPERPAGE": "Rijen per pagina", + "OF": "Van" } } \ No newline at end of file diff --git a/public/app/main/apps/integrations/i18n/no.json b/public/app/main/apps/integrations/i18n/no.json index 3768738..93ab21a 100644 --- a/public/app/main/apps/integrations/i18n/no.json +++ b/public/app/main/apps/integrations/i18n/no.json @@ -38,7 +38,12 @@ "KEY_REQUIRED": "Nøkkelen er nødvendig", "TYPE_REQUIRED": "Den typen som er pÃ¥krevd", "VALUE_REQUIRED": "Verdien er obligatorisk", - "FIELD_REQUIRED": "Feltet er obligatorisk" + "FIELD_REQUIRED": "Feltet er obligatorisk", + "CONSUMERKEY_REQUIRED": "Forbrukeren tasten er nødvendig", + "CONSUMERSECRET_REQUIRED": "Forbrukeren hemmelige er nødvendig", + "TOKENSECRET_REQUIRED": "Token hemmelige er nødvendig", + "HOST_REQUIRED": "Verten er nødvendig", + "AUTHTOKEN_REQUIRED": "Det Autorization brikke er nødvendig" }, "HELP": { "MOTIONPROXYADDRESS": "Bevegelse (Proxy) Adresse: Det er obligatorisk hvis du ønsker Ã¥ fylle/kropp med opptaket URL. Skriv inn i følgende format: : //[:]. Eksempel: https://X.Y.Z.W" @@ -134,6 +139,32 @@ "TEST_SUGARCRMACCOUNT": "Test SugerCRM konto", "TEST_SALESFORCEACCOUNT": "Test Salesforce-kontoen", "INTEGRATION_TAB": "Integrering .", - "NEW_TAB": "Ny kategori" + "NEW_TAB": "Ny kategori", + "DESKACCOUNTS": "Resepsjon kontoer", + "EDIT_DESKACCOUNT": "Rediger resepsjon konto", + "TEST_DESKACCOUNT": "Test resepsjon konto", + "DELETE_DESKACCOUNT": "Slette resepsjon konto", + "CONSUMERKEY": "Forbruker-tasten", + "CONSUMERSECRET": "Forbruker hemmelig", + "TOKENSECRET": "Token hemmelige", + "ADD_DESKACCOUNT": "Legg til resepsjon konto", + "NEW_DESKACCOUNT": "Ny resepsjon konto", + "ADD_DESKCONFIGURATION": "Legg til resepsjon konfigurasjon", + "NEW_DESKCONFIGURATION": "Ny resepsjon konfigurasjon", + "DELETE_DESKCONFIGURATION": "Slette resepsjon konfigurasjon", + "ZOHOACCOUNTS": "Zoho kontoer", + "EDIT_ZOHOACCOUNT": "Rediger Zoho konto", + "TEST_ZOHOACCOUNT": "Test Zoho konto", + "DELETE_ZOHOACCOUNT": "Slette Zoho konto", + "ADD_ZOHOACCOUNT": "Legg Zoho konto", + "NEW_ZOHOACCOUNT": "Ny Zoho konto", + "ADD_ZOHOCONFIGURATION": "Legg Zoho konfigurasjon", + "NEW_ZOHOCONFIGURATION": "Ny Zoho konfigurasjon", + "AUTHTOKEN": "Attest ID-brikke", + "HOST": "Vert", + "DELETE_ZOHOCONFIGURATION": "Slette Zoho konfigurasjon", + "PAGE": "Siden", + "ROWSPERPAGE": "Linjer per side", + "OF": "Av" } } \ No newline at end of file diff --git a/public/app/main/apps/integrations/i18n/pt-PT.json b/public/app/main/apps/integrations/i18n/pt-PT.json index e8ffe3d..5a538d8 100644 --- a/public/app/main/apps/integrations/i18n/pt-PT.json +++ b/public/app/main/apps/integrations/i18n/pt-PT.json @@ -38,7 +38,12 @@ "KEY_REQUIRED": "A chave é necessário", "TYPE_REQUIRED": "O tipo é necessária", "VALUE_REQUIRED": "O valor é obrigatório", - "FIELD_REQUIRED": "O campo é obrigatório" + "FIELD_REQUIRED": "O campo é obrigatório", + "CONSUMERKEY_REQUIRED": "É necessária a chave do consumidor", + "CONSUMERSECRET_REQUIRED": "O consumidor secreto é necessária", + "TOKENSECRET_REQUIRED": "O token é necessário segredo", + "HOST_REQUIRED": "O Host é necessário", + "AUTHTOKEN_REQUIRED": "O token é necessário autorização" }, "HELP": { "MOTIONPROXYADDRESS": "Motion (Proxy) Endereço: é obrigatório se você deseja preencher a folha de corpo com recodificação URL. Por favor, digite no seguinte formato: : //[:]. Exemplo: https://X.Y.Z.W" @@ -134,6 +139,32 @@ "TEST_SUGARCRMACCOUNT": "Teste SugerCRM conta", "TEST_SALESFORCEACCOUNT": "Teste conta do Salesforce", "INTEGRATION_TAB": "Guia de integração", - "NEW_TAB": "Nova Guia" + "NEW_TAB": "Nova Guia", + "DESKACCOUNTS": "Turismo contas", + "EDIT_DESKACCOUNT": "Editar conta de turismo", + "TEST_DESKACCOUNT": "Teste de Turismo conta", + "DELETE_DESKACCOUNT": "Excluir de Turismo conta", + "CONSUMERKEY": "Tecla de consumidor", + "CONSUMERSECRET": "Segredo do consumidor", + "TOKENSECRET": "Segredo de token", + "ADD_DESKACCOUNT": "Adicionar Conta", + "NEW_DESKACCOUNT": "Nova conta de turismo", + "ADD_DESKCONFIGURATION": "Adicionar configuração do turismo", + "NEW_DESKCONFIGURATION": "Nova configuração de horas", + "DELETE_DESKCONFIGURATION": "Excluir configuração de horas", + "ZOHOACCOUNTS": "Zoho contas", + "EDIT_ZOHOACCOUNT": "Editar conta Zoho", + "TEST_ZOHOACCOUNT": "Teste Zoho Conta", + "DELETE_ZOHOACCOUNT": "Excluir Zoho Conta", + "ADD_ZOHOACCOUNT": "Adicionar Zoho Conta", + "NEW_ZOHOACCOUNT": "Nova Conta Zoho", + "ADD_ZOHOCONFIGURATION": "Adicionar configuração Zoho", + "NEW_ZOHOCONFIGURATION": "Nova configuração Zoho", + "AUTHTOKEN": "Token de autorização", + "HOST": "Host", + "DELETE_ZOHOCONFIGURATION": "Excluir Configuração Zoho", + "PAGE": "Página", + "ROWSPERPAGE": "Linhas por página", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/integrations/i18n/ru.json b/public/app/main/apps/integrations/i18n/ru.json index 7a32517..f4e6ead 100644 --- a/public/app/main/apps/integrations/i18n/ru.json +++ b/public/app/main/apps/integrations/i18n/ru.json @@ -38,7 +38,12 @@ "KEY_REQUIRED": "Ключ не требуется", "TYPE_REQUIRED": "Тип не требуется", "VALUE_REQUIRED": "Это значение требуется", - "FIELD_REQUIRED": "Поле является обязательным" + "FIELD_REQUIRED": "Поле является обязательным", + "CONSUMERKEY_REQUIRED": "Потребителей не требуется ключ", + "CONSUMERSECRET_REQUIRED": "Потребитель тайного не требуется", + "TOKENSECRET_REQUIRED": "Маркер тайного не требуется", + "HOST_REQUIRED": "Хост не требуется", + "AUTHTOKEN_REQUIRED": "В Autorization маркер не требуется" }, "HELP": { "MOTIONPROXYADDRESS": "Motion (прокси) Адрес: она является обязательным, если вы хотите заполнить билет тела с модификации URL. Пожалуйста, введите в следующем формате: <протокола> : // : //[:]. Exempel: https://X.Y.Z.W" @@ -134,6 +139,32 @@ "TEST_SUGARCRMACCOUNT": "Testa SugerCRM konto", "TEST_SALESFORCEACCOUNT": "Testa Salesforce-konto", "INTEGRATION_TAB": "Fliken integration", - "NEW_TAB": "Ny flik" + "NEW_TAB": "Ny flik", + "DESKACCOUNTS": "Skrivbord konton", + "EDIT_DESKACCOUNT": "Redigera Desk konto", + "TEST_DESKACCOUNT": "Testa Desk konto", + "DELETE_DESKACCOUNT": "Ta bort Desk konto", + "CONSUMERKEY": "Konsument nyckel", + "CONSUMERSECRET": "Konsumenten hemliga", + "TOKENSECRET": "Token hemliga", + "ADD_DESKACCOUNT": "Lägg skrivbord konto", + "NEW_DESKACCOUNT": "Nytt skrivbord konto", + "ADD_DESKCONFIGURATION": "Lägg till Desk Konfiguration", + "NEW_DESKCONFIGURATION": "Ny Desk Konfiguration", + "DELETE_DESKCONFIGURATION": "Ta bort Desk Konfiguration", + "ZOHOACCOUNTS": "Zoho det konton", + "EDIT_ZOHOACCOUNT": "Redigera Zoho det konto", + "TEST_ZOHOACCOUNT": "Testa Zoho det konto", + "DELETE_ZOHOACCOUNT": "Ta bort Zoho det konto", + "ADD_ZOHOACCOUNT": "Lägg Zoho det konto", + "NEW_ZOHOACCOUNT": "Nya Zoho det konto", + "ADD_ZOHOCONFIGURATION": "Lägg Zoho det konfiguration", + "NEW_ZOHOCONFIGURATION": "Nya Zoho det konfiguration", + "AUTHTOKEN": "TillstÃ¥nd token", + "HOST": "Värd", + "DELETE_ZOHOCONFIGURATION": "Ta bort Zoho det konfiguration", + "PAGE": "Sidan", + "ROWSPERPAGE": "Rader per sida", + "OF": "Av" } } \ No newline at end of file diff --git a/public/app/main/apps/integrations/i18n/tr.json b/public/app/main/apps/integrations/i18n/tr.json index a0a0e13..f6e0163 100644 --- a/public/app/main/apps/integrations/i18n/tr.json +++ b/public/app/main/apps/integrations/i18n/tr.json @@ -38,7 +38,12 @@ "KEY_REQUIRED": "Anahtar gerekiyor.", "TYPE_REQUIRED": "Tip gerekli", "VALUE_REQUIRED": "Bu Değer gereklidir", - "FIELD_REQUIRED": "Bu alanı gerekli." + "FIELD_REQUIRED": "Bu alanı gerekli.", + "CONSUMERKEY_REQUIRED": "Tüketici gereklidir.", + "CONSUMERSECRET_REQUIRED": "Tüketicinin Gizli gerekiyor.", + "TOKENSECRET_REQUIRED": "Belirteç Gizli gerekiyor.", + "HOST_REQUIRED": "Ana gerekiyor.", + "AUTHTOKEN_REQUIRED": "Bu Autorization Belirteç gerekiyor." }, "HELP": { "MOTIONPROXYADDRESS": "Hareket (Proxy) Adres: zorunludur. eğer isterseniz, bilet, Diğerine URL. Lütfen aşağıdaki biçimi: : //[:]. Örneğin: https://X.Y.Z.W" @@ -134,6 +139,32 @@ "TEST_SUGARCRMACCOUNT": "Test SugerCRM Hesap", "TEST_SALESFORCEACCOUNT": "Test Salesforce Hesap", "INTEGRATION_TAB": "Entegrasyon Sekmesi", - "NEW_TAB": "Yeni Sekme" + "NEW_TAB": "Yeni Sekme", + "DESKACCOUNTS": "Masa Hesapları", + "EDIT_DESKACCOUNT": "Edit Masa Hesap", + "TEST_DESKACCOUNT": "Test Masası Hesap", + "DELETE_DESKACCOUNT": "Delete Masa Hesap", + "CONSUMERKEY": "Tüketici Anahtarı", + "CONSUMERSECRET": "Tüketici Gizli", + "TOKENSECRET": "Belirteç Gizli", + "ADD_DESKACCOUNT": "Add Masa Hesap", + "NEW_DESKACCOUNT": "Yeni Masaüstü Hesap", + "ADD_DESKCONFIGURATION": "Add Masa Yapılandırma", + "NEW_DESKCONFIGURATION": "Yeni Masaüstü Yapılandırma", + "DELETE_DESKCONFIGURATION": "Delete Masa Yapılandırma", + "ZOHOACCOUNTS": "Zoho Hesapları", + "EDIT_ZOHOACCOUNT": "Edit Zoho Hesabı", + "TEST_ZOHOACCOUNT": "Test Zoho Hesabı", + "DELETE_ZOHOACCOUNT": "Delete Zoho Hesabı", + "ADD_ZOHOACCOUNT": "Add Zoho Hesabı", + "NEW_ZOHOACCOUNT": "Yeni Zoho Hesabı", + "ADD_ZOHOCONFIGURATION": "Add Zoho Yapılandırma", + "NEW_ZOHOCONFIGURATION": "Yeni Zoho Yapılandırma", + "AUTHTOKEN": "Yetki Belirteci", + "HOST": "Ana", + "DELETE_ZOHOCONFIGURATION": "Delete Zoho Yapılandırma", + "PAGE": "Sayfa", + "ROWSPERPAGE": "Sayfadaki satırları", + "OF": "Ve" } } \ No newline at end of file diff --git a/public/app/main/apps/integrations/i18n/zh-CN.json b/public/app/main/apps/integrations/i18n/zh-CN.json index 0155b57..79ef8c5 100644 --- a/public/app/main/apps/integrations/i18n/zh-CN.json +++ b/public/app/main/apps/integrations/i18n/zh-CN.json @@ -38,7 +38,12 @@ "KEY_REQUIRED": "关键的是必需的", "TYPE_REQUIRED": "该类型是必需的", "VALUE_REQUIRED": "该值是必需的", - "FIELD_REQUIRED": "该字段为必需字段。" + "FIELD_REQUIRED": "该字段为必需字段。", + "CONSUMERKEY_REQUIRED": "消费者主要是必需的", + "CONSUMERSECRET_REQUIRED": "消费者的秘密是必需的", + "TOKENSECRET_REQUIRED": "令牌的秘密是必需的", + "HOST_REQUIRED": "主机是必需的", + "AUTHTOKEN_REQUIRED": "的授权令牌" }, "HELP": { "MOTIONPROXYADDRESS": "议案(代理)地址: 它是强制的如果您想要填充的票务机构的重新编码的 URL。 请以下列格式输入: & lt; 协议发 gt;: // 发 lt; ipaddress 发 gt; [: & lt; 端口& gt; ]。 例如: https://X.Y.Z.W" @@ -134,6 +139,32 @@ "TEST_SUGARCRMACCOUNT": "测试 SugerCRM 帐户", "TEST_SALESFORCEACCOUNT": "测试 Salesforce 帐户", "INTEGRATION_TAB": "一体化” 选项卡", - "NEW_TAB": "新的选项卡" + "NEW_TAB": "新的选项卡", + "DESKACCOUNTS": "台账户", + "EDIT_DESKACCOUNT": "编辑台帐户", + "TEST_DESKACCOUNT": "测试台帐户", + "DELETE_DESKACCOUNT": "删除台帐户", + "CONSUMERKEY": "消费者的密钥", + "CONSUMERSECRET": "消费者的秘密", + "TOKENSECRET": "令牌的秘密", + "ADD_DESKACCOUNT": "添加台帐户", + "NEW_DESKACCOUNT": "新台帐户", + "ADD_DESKCONFIGURATION": "添加桌面配置", + "NEW_DESKCONFIGURATION": "新的桌面配置", + "DELETE_DESKCONFIGURATION": "删除桌面配置", + "ZOHOACCOUNTS": "Zoho 帐户", + "EDIT_ZOHOACCOUNT": "编辑 Zoho 帐户", + "TEST_ZOHOACCOUNT": "测试 Zoho 帐户", + "DELETE_ZOHOACCOUNT": "删除 Zoho 帐户", + "ADD_ZOHOACCOUNT": "添加 Zoho 帐户", + "NEW_ZOHOACCOUNT": "新的 Zoho 帐户", + "ADD_ZOHOCONFIGURATION": "添加 Zoho 的配置", + "NEW_ZOHOCONFIGURATION": "新的 Zoho 的配置", + "AUTHTOKEN": "授权令牌", + "HOST": "主机", + "DELETE_ZOHOCONFIGURATION": "删除 Zoho 的配置", + "PAGE": "页面", + "ROWSPERPAGE": "每页的行数。", + "OF": "的" } } \ No newline at end of file diff --git a/public/app/main/apps/integrations/i18n/zh-TW.json b/public/app/main/apps/integrations/i18n/zh-TW.json index 23735c6..335f86b 100644 --- a/public/app/main/apps/integrations/i18n/zh-TW.json +++ b/public/app/main/apps/integrations/i18n/zh-TW.json @@ -38,7 +38,12 @@ "KEY_REQUIRED": "該金鑰為必填欄位", "TYPE_REQUIRED": "「類型」為必填欄位", "VALUE_REQUIRED": "此值為必填欄位", - "FIELD_REQUIRED": "此欄位為必填欄位" + "FIELD_REQUIRED": "此欄位為必填欄位", + "CONSUMERKEY_REQUIRED": "消費者需要的關鍵", + "CONSUMERSECRET_REQUIRED": "消費者的祕密是必填項", + "TOKENSECRET_REQUIRED": "令牌密爲必填項", + "HOST_REQUIRED": "需要的主機", + "AUTHTOKEN_REQUIRED": "需要的 Autorization 記號" }, "HELP": { "MOTIONPROXYADDRESS": "動作 ( 代理伺服器 ) 位址 : 這是強制性如果您想要填寫問題單本文 URL 重新編寫程式碼。 請輸入下列格式 : & lt ; 通訊協定與 gt ; : / / 史坦普 lt ; IP 位址坦 gt ; [ : 坦 lt ; 連接埠坦 gt ; ] 。 例如 : https://X.Y.Z.W" @@ -134,6 +139,32 @@ "TEST_SUGARCRMACCOUNT": "測試 SugerCRM 帳號", "TEST_SALESFORCEACCOUNT": "測試 Salesforce 帳戶", "INTEGRATION_TAB": "整合」標籤", - "NEW_TAB": "新標籤" + "NEW_TAB": "新標籤", + "DESKACCOUNTS": "臺帳戶", + "EDIT_DESKACCOUNT": "編輯臺帳戶", + "TEST_DESKACCOUNT": "測試臺帳戶", + "DELETE_DESKACCOUNT": "臺帳戶刪除", + "CONSUMERKEY": "消費者的關鍵", + "CONSUMERSECRET": "消費者的秘密", + "TOKENSECRET": "令牌密", + "ADD_DESKACCOUNT": "新增臺帳戶", + "NEW_DESKACCOUNT": "新臺帳戶", + "ADD_DESKCONFIGURATION": "新增桌上型組態", + "NEW_DESKCONFIGURATION": "新的臺式配置", + "DELETE_DESKCONFIGURATION": "刪除桌面組態", + "ZOHOACCOUNTS": "Zoho 帳戶", + "EDIT_ZOHOACCOUNT": "Zoho 編輯帳戶", + "TEST_ZOHOACCOUNT": "測試 Zoho 帳戶", + "DELETE_ZOHOACCOUNT": "刪除 Zoho 帳戶", + "ADD_ZOHOACCOUNT": "新增帳戶 Zoho", + "NEW_ZOHOACCOUNT": "新 Zoho 帳戶", + "ADD_ZOHOCONFIGURATION": "新增 Zoho 配置", + "NEW_ZOHOCONFIGURATION": "新 Zoho 配置", + "AUTHTOKEN": "驗證權杖", + "HOST": "主機", + "DELETE_ZOHOCONFIGURATION": "Zoho 刪除組態", + "PAGE": "頁面", + "ROWSPERPAGE": "每頁行數", + "OF": "的" } } \ No newline at end of file diff --git a/public/app/main/apps/jscripty/i18n/da.json b/public/app/main/apps/jscripty/i18n/da.json index 76bb6c5..99ff830 100644 --- a/public/app/main/apps/jscripty/i18n/da.json +++ b/public/app/main/apps/jscripty/i18n/da.json @@ -28,7 +28,13 @@ "GENERAL": "Generel", "BUILDER": "Builder", "PREVIEW": "Preview", - "OPEN_CONTACT": "Åben kontakt" + "OPEN_CONTACT": "Åben kontakt", + "HELP": { + "NAME": "Kun tal og bogstaver og specielle tegn (.________) understøttes" + }, + "PAGE": "Page", + "ROWSPERPAGE": "Rækker pr. side", + "OF": "Af" }, "mwForm": { "form": { diff --git a/public/app/main/apps/jscripty/i18n/de.json b/public/app/main/apps/jscripty/i18n/de.json index 89f7f95..3c32ade 100644 --- a/public/app/main/apps/jscripty/i18n/de.json +++ b/public/app/main/apps/jscripty/i18n/de.json @@ -28,7 +28,13 @@ "GENERAL": "Allgemein", "BUILDER": "Builder", "PREVIEW": "Vorschau", - "OPEN_CONTACT": "Kontakt öffnen" + "OPEN_CONTACT": "Kontakt öffnen", + "HELP": { + "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt." + }, + "PAGE": "Seite", + "ROWSPERPAGE": "Zeilen pro Seite", + "OF": "Von" }, "mwForm": { "form": { diff --git a/public/app/main/apps/jscripty/i18n/en.json b/public/app/main/apps/jscripty/i18n/en.json index 1c23fb0..b447cbc 100644 --- a/public/app/main/apps/jscripty/i18n/en.json +++ b/public/app/main/apps/jscripty/i18n/en.json @@ -34,7 +34,14 @@ }, "PAGE": "Page", "ROWSPERPAGE": "Rows per page", - "OF": "Of" + "OF": "of", + "JSCRIPTYSESSIONS": "Project Sessions", + "SESSIONS": "Sessions", + "STARTTIME": "Start Time", + "ENDTIME": "End Time", + "MEMBERNAME": "Member Name", + "CALLERIDNUM": "Caller Number", + "NO_SESSION_AVAILABLE": "No Sessions available" }, "mwForm": { "form": { diff --git a/public/app/main/apps/jscripty/i18n/es.json b/public/app/main/apps/jscripty/i18n/es.json index 5331567..3f696e0 100644 --- a/public/app/main/apps/jscripty/i18n/es.json +++ b/public/app/main/apps/jscripty/i18n/es.json @@ -28,7 +28,13 @@ "GENERAL": "General", "BUILDER": "Builder", "PREVIEW": "Vista previa", - "OPEN_CONTACT": "Contacto abierto" + "OPEN_CONTACT": "Contacto abierto", + "HELP": { + "NAME": "Sólo los números, letras y caracteres específicos (_) son compatibles." + }, + "PAGE": "Página", + "ROWSPERPAGE": "Filas por página.", + "OF": "De" }, "mwForm": { "form": { diff --git a/public/app/main/apps/jscripty/i18n/fa.json b/public/app/main/apps/jscripty/i18n/fa.json index 69968f1..b017a78 100644 --- a/public/app/main/apps/jscripty/i18n/fa.json +++ b/public/app/main/apps/jscripty/i18n/fa.json @@ -28,7 +28,13 @@ "GENERAL": "سردار", "BUILDER": "معمار", "PREVIEW": "پیش نمایش", - "OPEN_CONTACT": "باز تماس" + "OPEN_CONTACT": "باز تماس", + "HELP": { + "NAME": "فقط شماره ها و حروف و نویسه های ویژه (_) پشتیبانی می شود." + }, + "PAGE": "صفحه", + "ROWSPERPAGE": "رديف در صفحه", + "OF": "از" }, "mwForm": { "form": { diff --git a/public/app/main/apps/jscripty/i18n/fi.json b/public/app/main/apps/jscripty/i18n/fi.json index bc79327..c349e7f 100644 --- a/public/app/main/apps/jscripty/i18n/fi.json +++ b/public/app/main/apps/jscripty/i18n/fi.json @@ -28,7 +28,13 @@ "GENERAL": "Yleistä", "BUILDER": "Rakennusjätteet", "PREVIEW": "Esikatselu", - "OPEN_CONTACT": "Avoin kosketin" + "OPEN_CONTACT": "Avoin kosketin", + "HELP": { + "NAME": "Vain numeroita, kirjaimia ja erikoismerkkejä (._ tuetaan" + }, + "PAGE": "Sivu", + "ROWSPERPAGE": "Riviä sivulle", + "OF": "," }, "mwForm": { "form": { diff --git a/public/app/main/apps/jscripty/i18n/fr.json b/public/app/main/apps/jscripty/i18n/fr.json index e269a26..1e3eed6 100644 --- a/public/app/main/apps/jscripty/i18n/fr.json +++ b/public/app/main/apps/jscripty/i18n/fr.json @@ -28,7 +28,13 @@ "GENERAL": "Général", "BUILDER": "Builder", "PREVIEW": "Aperçu", - "OPEN_CONTACT": "Contact ouvert" + "OPEN_CONTACT": "Contact ouvert", + "HELP": { + "NAME": "Seulement les chiffres, lettres et caractères spécifiques (._) sont pris en charge" + }, + "PAGE": "La page", + "ROWSPERPAGE": "Les lignes par page", + "OF": "De" }, "mwForm": { "form": { diff --git a/public/app/main/apps/jscripty/i18n/hi.json b/public/app/main/apps/jscripty/i18n/hi.json index 6b21bd6..a017467 100644 --- a/public/app/main/apps/jscripty/i18n/hi.json +++ b/public/app/main/apps/jscripty/i18n/hi.json @@ -28,7 +28,13 @@ "GENERAL": "सामान्य", "BUILDER": "निर्माता", "PREVIEW": "पूर्वावलोकन", - "OPEN_CONTACT": "संपर्क को खोलें" + "OPEN_CONTACT": "संपर्क को खोलें", + "HELP": { + "NAME": "केवल विशिष्ट वर्ण (।_) और नंबर्स, समर्थित" + }, + "PAGE": "पृष्ठ", + "ROWSPERPAGE": "पंक्तियां प्रति पृष्ठ", + "OF": "की" }, "mwForm": { "form": { diff --git a/public/app/main/apps/jscripty/i18n/it.json b/public/app/main/apps/jscripty/i18n/it.json index e9024a6..ea16756 100644 --- a/public/app/main/apps/jscripty/i18n/it.json +++ b/public/app/main/apps/jscripty/i18n/it.json @@ -34,7 +34,14 @@ }, "PAGE": "Pagina", "ROWSPERPAGE": "Righe per pagina", - "OF": "Di" + "OF": "di", + "JSCRIPTYSESSIONS": "Sessioni Progetto", + "SESSIONS": "Sessioni", + "STARTTIME": "Data di inizio", + "ENDTIME": "Data di fine", + "MEMBERNAME": "Nome Agente", + "CALLERIDNUM": "Numero Chiamante", + "NO_SESSION_AVAILABLE": "Nessuna sessione disponibile" }, "mwForm": { "form": { diff --git a/public/app/main/apps/jscripty/i18n/ja.json b/public/app/main/apps/jscripty/i18n/ja.json index da75ef9..cbd92dd 100644 --- a/public/app/main/apps/jscripty/i18n/ja.json +++ b/public/app/main/apps/jscripty/i18n/ja.json @@ -28,7 +28,13 @@ "GENERAL": "一般的な", "BUILDER": "Builder", "PREVIEW": "プレビュー", - "OPEN_CONTACT": "連絡先を開く" + "OPEN_CONTACT": "連絡先を開く", + "HELP": { + "NAME": "数字、文字、およびのみ特定の文字 ( 。 ) はサポートされています" + }, + "PAGE": "ページ", + "ROWSPERPAGE": "ページあたりの行数", + "OF": "の" }, "mwForm": { "form": { diff --git a/public/app/main/apps/jscripty/i18n/ko.json b/public/app/main/apps/jscripty/i18n/ko.json index a5a9327..b4d75bd 100644 --- a/public/app/main/apps/jscripty/i18n/ko.json +++ b/public/app/main/apps/jscripty/i18n/ko.json @@ -28,7 +28,13 @@ "GENERAL": "일반", "BUILDER": "빌더", "PREVIEW": "미리 보기", - "OPEN_CONTACT": "연락처 열기" + "OPEN_CONTACT": "연락처 열기", + "HELP": { + "NAME": "숫자와 글자 및 특정 문자(._) 지원됩니다." + }, + "PAGE": "페이지", + "ROWSPERPAGE": "페이지 당 행", + "OF": "중" }, "mwForm": { "form": { diff --git a/public/app/main/apps/jscripty/i18n/nl.json b/public/app/main/apps/jscripty/i18n/nl.json index edfca63..be47075 100644 --- a/public/app/main/apps/jscripty/i18n/nl.json +++ b/public/app/main/apps/jscripty/i18n/nl.json @@ -28,7 +28,13 @@ "GENERAL": "Algemeen", "BUILDER": "Builder", "PREVIEW": "Afdrukvoorbeeld", - "OPEN_CONTACT": "Open Contact" + "OPEN_CONTACT": "Open Contact", + "HELP": { + "NAME": "Alleen cijfers, letters en speciale tekens (_) worden ondersteund" + }, + "PAGE": "Pagina", + "ROWSPERPAGE": "Rijen per pagina", + "OF": "Van" }, "mwForm": { "form": { diff --git a/public/app/main/apps/jscripty/i18n/no.json b/public/app/main/apps/jscripty/i18n/no.json index f951da3..738d3b7 100644 --- a/public/app/main/apps/jscripty/i18n/no.json +++ b/public/app/main/apps/jscripty/i18n/no.json @@ -28,7 +28,13 @@ "GENERAL": "Generelt", "BUILDER": "Builder", "PREVIEW": "ForhÃ¥ndsvisning", - "OPEN_CONTACT": "Åpen kontakt" + "OPEN_CONTACT": "Åpen kontakt", + "HELP": { + "NAME": "Bare tall, bokstaver og bestemte tegn (._) støttes" + }, + "PAGE": "Siden", + "ROWSPERPAGE": "Linjer per side", + "OF": "Av" }, "mwForm": { "form": { diff --git a/public/app/main/apps/jscripty/i18n/pt-PT.json b/public/app/main/apps/jscripty/i18n/pt-PT.json index ee6a2ba..ee3c93d 100644 --- a/public/app/main/apps/jscripty/i18n/pt-PT.json +++ b/public/app/main/apps/jscripty/i18n/pt-PT.json @@ -28,7 +28,13 @@ "GENERAL": "Geral", "BUILDER": "Builder", "PREVIEW": "Visualização", - "OPEN_CONTACT": "Contacto aberto" + "OPEN_CONTACT": "Contacto aberto", + "HELP": { + "NAME": "Apenas números, letras e caracteres específicos (._) são suportados" + }, + "PAGE": "Página", + "ROWSPERPAGE": "Linhas por página", + "OF": "De" }, "mwForm": { "form": { diff --git a/public/app/main/apps/jscripty/i18n/ru.json b/public/app/main/apps/jscripty/i18n/ru.json index a55ef2c..f3e8c62 100644 --- a/public/app/main/apps/jscripty/i18n/ru.json +++ b/public/app/main/apps/jscripty/i18n/ru.json @@ -28,7 +28,13 @@ "GENERAL": "Генеральной", "BUILDER": "Конструктор условий", "PREVIEW": "Предварительный просмотр", - "OPEN_CONTACT": "Контакт разомкнут" + "OPEN_CONTACT": "Контакт разомкнут", + "HELP": { + "NAME": "Только цифры, буквы и специальные символы (_) поддерживаются" + }, + "PAGE": "Страница", + "ROWSPERPAGE": "Строк на странице", + "OF": "В" }, "mwForm": { "form": { diff --git a/public/app/main/apps/jscripty/i18n/sv.json b/public/app/main/apps/jscripty/i18n/sv.json index 59e7c6d..48484f1 100644 --- a/public/app/main/apps/jscripty/i18n/sv.json +++ b/public/app/main/apps/jscripty/i18n/sv.json @@ -28,7 +28,13 @@ "GENERAL": "Allmänt", "BUILDER": "Byggmästare", "PREVIEW": "Förhandsgranska", - "OPEN_CONTACT": "Öppen kontakt" + "OPEN_CONTACT": "Öppen kontakt", + "HELP": { + "NAME": "Endast siffror, bokstäver och särskilda tecken (_) stöds" + }, + "PAGE": "Sidan", + "ROWSPERPAGE": "Rader per sida", + "OF": "Av" }, "mwForm": { "form": { diff --git a/public/app/main/apps/jscripty/i18n/tr.json b/public/app/main/apps/jscripty/i18n/tr.json index df4adb4..46fb1d4 100644 --- a/public/app/main/apps/jscripty/i18n/tr.json +++ b/public/app/main/apps/jscripty/i18n/tr.json @@ -28,7 +28,13 @@ "GENERAL": "Genel", "BUILDER": "Oluşturucu", "PREVIEW": "Önizleme", - "OPEN_CONTACT": "Kontak açık" + "OPEN_CONTACT": "Kontak açık", + "HELP": { + "NAME": "Sadece sayılar, harfler ve özel karakterler (._) desteklenir." + }, + "PAGE": "Sayfa", + "ROWSPERPAGE": "Sayfadaki satırları", + "OF": "Ve" }, "mwForm": { "form": { diff --git a/public/app/main/apps/jscripty/i18n/zh-CN.json b/public/app/main/apps/jscripty/i18n/zh-CN.json index dc5f315..1673b79 100644 --- a/public/app/main/apps/jscripty/i18n/zh-CN.json +++ b/public/app/main/apps/jscripty/i18n/zh-CN.json @@ -28,7 +28,13 @@ "GENERAL": "总的", "BUILDER": "构建器", "PREVIEW": "预览", - "OPEN_CONTACT": "打开联系人" + "OPEN_CONTACT": "打开联系人", + "HELP": { + "NAME": "只有数字、字母和特殊字符(_)的支持" + }, + "PAGE": "页面", + "ROWSPERPAGE": "每页的行数。", + "OF": "的" }, "mwForm": { "form": { diff --git a/public/app/main/apps/jscripty/i18n/zh-TW.json b/public/app/main/apps/jscripty/i18n/zh-TW.json index 37e8af3..459aa7d 100644 --- a/public/app/main/apps/jscripty/i18n/zh-TW.json +++ b/public/app/main/apps/jscripty/i18n/zh-TW.json @@ -28,7 +28,13 @@ "GENERAL": "通用", "BUILDER": "建構工具", "PREVIEW": "預覽列印", - "OPEN_CONTACT": "開啟聯絡人" + "OPEN_CONTACT": "開啟聯絡人", + "HELP": { + "NAME": "只有數字、字母和特殊字元 ( _ ) 都受到支援" + }, + "PAGE": "頁面", + "ROWSPERPAGE": "每頁行數", + "OF": "的" }, "mwForm": { "form": { diff --git a/public/app/main/apps/mail/i18n/da.json b/public/app/main/apps/mail/i18n/da.json index be263a7..be5d30e 100644 --- a/public/app/main/apps/mail/i18n/da.json +++ b/public/app/main/apps/mail/i18n/da.json @@ -83,6 +83,12 @@ "NEW_MAILACCOUNT": "Ny mail konto", "NO_AVAILABLE_INFO": "Der er ingen tilgængelig info", "ALL_TEAMS": "Alle hold", - "SELECTED_TEAMS": "Udvalgte Teams" + "SELECTED_TEAMS": "Udvalgte Teams", + "HELP": { + "NAME": "Kun tal og bogstaver og specielle tegn (.________) understøttes" + }, + "PAGE": "Page", + "ROWSPERPAGE": "Rækker pr. side", + "OF": "Af" } } \ No newline at end of file diff --git a/public/app/main/apps/mail/i18n/de.json b/public/app/main/apps/mail/i18n/de.json index 240d252..46b9dbe 100644 --- a/public/app/main/apps/mail/i18n/de.json +++ b/public/app/main/apps/mail/i18n/de.json @@ -83,6 +83,12 @@ "NEW_MAILACCOUNT": "Neue E-Mail Konto", "NO_AVAILABLE_INFO": "Keine verfügbaren Info", "ALL_TEAMS": "Alle Mannschaften", - "SELECTED_TEAMS": "Ausgewählte Teams" + "SELECTED_TEAMS": "Ausgewählte Teams", + "HELP": { + "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt." + }, + "PAGE": "Seite", + "ROWSPERPAGE": "Zeilen pro Seite", + "OF": "Von" } } \ No newline at end of file diff --git a/public/app/main/apps/mail/i18n/en.json b/public/app/main/apps/mail/i18n/en.json index d11532c..6288c7c 100644 --- a/public/app/main/apps/mail/i18n/en.json +++ b/public/app/main/apps/mail/i18n/en.json @@ -89,6 +89,6 @@ }, "PAGE": "Page", "ROWSPERPAGE": "Rows per page", - "OF": "Of" + "OF": "of" } } \ No newline at end of file diff --git a/public/app/main/apps/mail/i18n/es.json b/public/app/main/apps/mail/i18n/es.json index be9bcdd..2ae06bf 100644 --- a/public/app/main/apps/mail/i18n/es.json +++ b/public/app/main/apps/mail/i18n/es.json @@ -83,6 +83,12 @@ "NEW_MAILACCOUNT": "Nueva cuenta de correo", "NO_AVAILABLE_INFO": "No hay información disponible", "ALL_TEAMS": "Todos los equipos", - "SELECTED_TEAMS": "Los equipos seleccionados" + "SELECTED_TEAMS": "Los equipos seleccionados", + "HELP": { + "NAME": "Sólo los números, letras y caracteres específicos (_) son compatibles." + }, + "PAGE": "Página", + "ROWSPERPAGE": "Filas por página.", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/mail/i18n/fa.json b/public/app/main/apps/mail/i18n/fa.json index 5599d37..32a1110 100644 --- a/public/app/main/apps/mail/i18n/fa.json +++ b/public/app/main/apps/mail/i18n/fa.json @@ -83,6 +83,12 @@ "NEW_MAILACCOUNT": "اشتراک پست جدید", "NO_AVAILABLE_INFO": "اطلاعات در دسترس نیست", "ALL_TEAMS": "همه تیم ها", - "SELECTED_TEAMS": "تيم هاي برگزيده" + "SELECTED_TEAMS": "تيم هاي برگزيده", + "HELP": { + "NAME": "فقط شماره ها و حروف و نویسه های ویژه (_) پشتیبانی می شود." + }, + "PAGE": "صفحه", + "ROWSPERPAGE": "رديف در صفحه", + "OF": "از" } } \ No newline at end of file diff --git a/public/app/main/apps/mail/i18n/fi.json b/public/app/main/apps/mail/i18n/fi.json index 076fcee..419faac 100644 --- a/public/app/main/apps/mail/i18n/fi.json +++ b/public/app/main/apps/mail/i18n/fi.json @@ -83,6 +83,12 @@ "NEW_MAILACCOUNT": "Uuden sähköpostitilin", "NO_AVAILABLE_INFO": "Ei saatavana olevasta lataustehosta", "ALL_TEAMS": "Kaikki joukkueet", - "SELECTED_TEAMS": "Valittu työryhmille" + "SELECTED_TEAMS": "Valittu työryhmille", + "HELP": { + "NAME": "Vain numeroita, kirjaimia ja erikoismerkkejä (._ tuetaan" + }, + "PAGE": "Sivu", + "ROWSPERPAGE": "Riviä sivulle", + "OF": "," } } \ No newline at end of file diff --git a/public/app/main/apps/mail/i18n/fr.json b/public/app/main/apps/mail/i18n/fr.json index 31670f3..5b122ee 100644 --- a/public/app/main/apps/mail/i18n/fr.json +++ b/public/app/main/apps/mail/i18n/fr.json @@ -83,6 +83,12 @@ "NEW_MAILACCOUNT": "Nouveau compte de messagerie", "NO_AVAILABLE_INFO": "Aucune information disponible", "ALL_TEAMS": "Toutes les équipes", - "SELECTED_TEAMS": "Les équipes sélectionnées" + "SELECTED_TEAMS": "Les équipes sélectionnées", + "HELP": { + "NAME": "Seulement les chiffres, lettres et caractères spécifiques (._) sont pris en charge" + }, + "PAGE": "La page", + "ROWSPERPAGE": "Les lignes par page", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/mail/i18n/hi.json b/public/app/main/apps/mail/i18n/hi.json index a7af3da..b155c56 100644 --- a/public/app/main/apps/mail/i18n/hi.json +++ b/public/app/main/apps/mail/i18n/hi.json @@ -83,6 +83,12 @@ "NEW_MAILACCOUNT": "नए मेल खाते", "NO_AVAILABLE_INFO": "जानकारी उपलब्ध नहीं", "ALL_TEAMS": "सभी टीमें भाग लेंगी।", - "SELECTED_TEAMS": "चयनित टीम" + "SELECTED_TEAMS": "चयनित टीम", + "HELP": { + "NAME": "केवल विशिष्ट वर्ण (।_) और नंबर्स, समर्थित" + }, + "PAGE": "पृष्ठ", + "ROWSPERPAGE": "पंक्तियां प्रति पृष्ठ", + "OF": "की" } } \ No newline at end of file diff --git a/public/app/main/apps/mail/i18n/it.json b/public/app/main/apps/mail/i18n/it.json index 4cb00e4..abd11fc 100644 --- a/public/app/main/apps/mail/i18n/it.json +++ b/public/app/main/apps/mail/i18n/it.json @@ -89,6 +89,6 @@ }, "PAGE": "Pagina", "ROWSPERPAGE": "Righe per pagina", - "OF": "Di" + "OF": "di" } } \ No newline at end of file diff --git a/public/app/main/apps/mail/i18n/ja.json b/public/app/main/apps/mail/i18n/ja.json index 9e5abf5..35e5001 100644 --- a/public/app/main/apps/mail/i18n/ja.json +++ b/public/app/main/apps/mail/i18n/ja.json @@ -83,6 +83,12 @@ "NEW_MAILACCOUNT": "新しいメールアカウント", "NO_AVAILABLE_INFO": "使用可能な情報はありません", "ALL_TEAMS": "すべてのチーム", - "SELECTED_TEAMS": "選択したチーム" + "SELECTED_TEAMS": "選択したチーム", + "HELP": { + "NAME": "数字、文字、およびのみ特定の文字 ( 。 ) はサポートされています" + }, + "PAGE": "ページ", + "ROWSPERPAGE": "ページあたりの行数", + "OF": "の" } } \ No newline at end of file diff --git a/public/app/main/apps/mail/i18n/ko.json b/public/app/main/apps/mail/i18n/ko.json index 0bba1c6..5453a52 100644 --- a/public/app/main/apps/mail/i18n/ko.json +++ b/public/app/main/apps/mail/i18n/ko.json @@ -83,6 +83,12 @@ "NEW_MAILACCOUNT": "새 전자 메일 계정", "NO_AVAILABLE_INFO": "사용 가능한 정보가 없습니다", "ALL_TEAMS": "모든 팀이", - "SELECTED_TEAMS": "선택한 팀에" + "SELECTED_TEAMS": "선택한 팀에", + "HELP": { + "NAME": "숫자와 글자 및 특정 문자(._) 지원됩니다." + }, + "PAGE": "페이지", + "ROWSPERPAGE": "페이지 당 행", + "OF": "중" } } \ No newline at end of file diff --git a/public/app/main/apps/mail/i18n/nl.json b/public/app/main/apps/mail/i18n/nl.json index ea7e4b7..7b73600 100644 --- a/public/app/main/apps/mail/i18n/nl.json +++ b/public/app/main/apps/mail/i18n/nl.json @@ -83,6 +83,12 @@ "NEW_MAILACCOUNT": "Nieuwe e-mail account", "NO_AVAILABLE_INFO": "Geen beschikbare informatie", "ALL_TEAMS": "Alle teams", - "SELECTED_TEAMS": "Geselecteerde teams" + "SELECTED_TEAMS": "Geselecteerde teams", + "HELP": { + "NAME": "Alleen cijfers, letters en speciale tekens (_) worden ondersteund" + }, + "PAGE": "Pagina", + "ROWSPERPAGE": "Rijen per pagina", + "OF": "Van" } } \ No newline at end of file diff --git a/public/app/main/apps/mail/i18n/no.json b/public/app/main/apps/mail/i18n/no.json index 1aa5555..37f0f2a 100644 --- a/public/app/main/apps/mail/i18n/no.json +++ b/public/app/main/apps/mail/i18n/no.json @@ -83,6 +83,12 @@ "NEW_MAILACCOUNT": "Ny e-post konto", "NO_AVAILABLE_INFO": "Ingen tilgjengelig info", "ALL_TEAMS": "Alle grupper", - "SELECTED_TEAMS": "Valgte lag" + "SELECTED_TEAMS": "Valgte lag", + "HELP": { + "NAME": "Bare tall, bokstaver og bestemte tegn (._) støttes" + }, + "PAGE": "Siden", + "ROWSPERPAGE": "Linjer per side", + "OF": "Av" } } \ No newline at end of file diff --git a/public/app/main/apps/mail/i18n/pt-PT.json b/public/app/main/apps/mail/i18n/pt-PT.json index d441421..02617ec 100644 --- a/public/app/main/apps/mail/i18n/pt-PT.json +++ b/public/app/main/apps/mail/i18n/pt-PT.json @@ -83,6 +83,12 @@ "NEW_MAILACCOUNT": "Nova conta de email", "NO_AVAILABLE_INFO": "Sem informações disponíveis", "ALL_TEAMS": "Todas as equipas", - "SELECTED_TEAMS": "Equipes selecionadas" + "SELECTED_TEAMS": "Equipes selecionadas", + "HELP": { + "NAME": "Apenas números, letras e caracteres específicos (._) são suportados" + }, + "PAGE": "Página", + "ROWSPERPAGE": "Linhas por página", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/mail/i18n/ru.json b/public/app/main/apps/mail/i18n/ru.json index b60c60c..d59c210 100644 --- a/public/app/main/apps/mail/i18n/ru.json +++ b/public/app/main/apps/mail/i18n/ru.json @@ -83,6 +83,12 @@ "NEW_MAILACCOUNT": "Новая учетная запись электронной почты", "NO_AVAILABLE_INFO": "Нет доступной информации", "ALL_TEAMS": "Все группы", - "SELECTED_TEAMS": "Выбранные группы" + "SELECTED_TEAMS": "Выбранные группы", + "HELP": { + "NAME": "Только цифры, буквы и специальные символы (_) поддерживаются" + }, + "PAGE": "Страница", + "ROWSPERPAGE": "Строк на странице", + "OF": "В" } } \ No newline at end of file diff --git a/public/app/main/apps/mail/i18n/sv.json b/public/app/main/apps/mail/i18n/sv.json index 9b46a24..5a2e606 100644 --- a/public/app/main/apps/mail/i18n/sv.json +++ b/public/app/main/apps/mail/i18n/sv.json @@ -83,6 +83,12 @@ "NEW_MAILACCOUNT": "Nya Mail-konto", "NO_AVAILABLE_INFO": "Inga tillgängliga info", "ALL_TEAMS": "Alla grupper", - "SELECTED_TEAMS": "Valda grupper" + "SELECTED_TEAMS": "Valda grupper", + "HELP": { + "NAME": "Endast siffror, bokstäver och särskilda tecken (_) stöds" + }, + "PAGE": "Sidan", + "ROWSPERPAGE": "Rader per sida", + "OF": "Av" } } \ No newline at end of file diff --git a/public/app/main/apps/mail/i18n/tr.json b/public/app/main/apps/mail/i18n/tr.json index b170d51..f1b49b7 100644 --- a/public/app/main/apps/mail/i18n/tr.json +++ b/public/app/main/apps/mail/i18n/tr.json @@ -83,6 +83,12 @@ "NEW_MAILACCOUNT": "Yeni e-Posta Hesabı", "NO_AVAILABLE_INFO": "Mevcut bilgisi", "ALL_TEAMS": "Tüm takımlar", - "SELECTED_TEAMS": "Seçilen Ekipleri" + "SELECTED_TEAMS": "Seçilen Ekipleri", + "HELP": { + "NAME": "Sadece sayılar, harfler ve özel karakterler (._) desteklenir." + }, + "PAGE": "Sayfa", + "ROWSPERPAGE": "Sayfadaki satırları", + "OF": "Ve" } } \ No newline at end of file diff --git a/public/app/main/apps/mail/i18n/zh-CN.json b/public/app/main/apps/mail/i18n/zh-CN.json index 957bef1..7b0603f 100644 --- a/public/app/main/apps/mail/i18n/zh-CN.json +++ b/public/app/main/apps/mail/i18n/zh-CN.json @@ -83,6 +83,12 @@ "NEW_MAILACCOUNT": "新的电子邮件帐户", "NO_AVAILABLE_INFO": "无可用的信息", "ALL_TEAMS": "所有的团队", - "SELECTED_TEAMS": "选定的组" + "SELECTED_TEAMS": "选定的组", + "HELP": { + "NAME": "只有数字、字母和特殊字符(_)的支持" + }, + "PAGE": "页面", + "ROWSPERPAGE": "每页的行数。", + "OF": "的" } } \ No newline at end of file diff --git a/public/app/main/apps/mail/i18n/zh-TW.json b/public/app/main/apps/mail/i18n/zh-TW.json index 230cde6..5b7345c 100644 --- a/public/app/main/apps/mail/i18n/zh-TW.json +++ b/public/app/main/apps/mail/i18n/zh-TW.json @@ -83,6 +83,12 @@ "NEW_MAILACCOUNT": "新增電子郵件帳號", "NO_AVAILABLE_INFO": "無可用資訊", "ALL_TEAMS": "所有群組", - "SELECTED_TEAMS": "選取群組" + "SELECTED_TEAMS": "選取群組", + "HELP": { + "NAME": "只有數字、字母和特殊字元 ( _ ) 都受到支援" + }, + "PAGE": "頁面", + "ROWSPERPAGE": "每頁行數", + "OF": "的" } } \ No newline at end of file diff --git a/public/app/main/apps/motiondialer/i18n/da.json b/public/app/main/apps/motiondialer/i18n/da.json index 97d7f00..632188f 100644 --- a/public/app/main/apps/motiondialer/i18n/da.json +++ b/public/app/main/apps/motiondialer/i18n/da.json @@ -86,7 +86,42 @@ "QUEUETIMEOUT_REQUIRED": "Queue Timeout er pÃ¥krævet", "ORIGINATETIMEOUT_REQUIRED": "Stamme Timeout er pÃ¥krævet", "GLOBALINTERVAL_REQUIRED": "Global Interval er pÃ¥krævet", - "PREFIX_MUST_VALID_PATTERN": "Præfikset skal være gyldigt et gyldigt mønster" + "PREFIX_MUST_VALID_PATTERN": "Præfikset skal være gyldigt et gyldigt mønster", + "NAME_MUST_VALID_PATTERN": "Navnet skal være gyldigt et gyldigt mønster", + "MAXCONCURRENTCALLS_REQUIRED": "Værdien for Max samtidige opkald er pÃ¥krævet", + "CONCURRENTCALLS_REQUIRED": "Værdien for samtidige opkald er pÃ¥krævet", + "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Energiforbruget skal være større end eller lig med", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den forudsigelige optimering procentdel skal være større end eller lig med", + "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den forudsigelige interval skal være større end eller lig med", + "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max samtidige opkald skal være større end eller lig med", + "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den Stamme-out skal være større end eller lig med", + "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Queue Timeout skal være større end eller lig med", + "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Agenten Timeout skal være større end eller lig med", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Dette forsøg skal være større end eller lig med", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Det Afslutningstiden skal være større end eller lig med", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Vægten skal være større end eller lig med", + "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den Globale Max forsøg skal være større end eller lig med", + "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Congestion Max forsøg skal være større end eller lig med", + "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Congestion genprøv tid skal være større end eller lig med", + "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den travle Max forsøg skal være større end eller lig med", + "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den travle genprøv tid skal være større end eller lig med", + "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Det Ubesvarede Max forsøg skal være større end eller lig med", + "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Ingen Svar Prøv tid skal være større end eller lig med", + "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den samtidige opkald skal være større end eller lig med", + "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Energiforbruget skal være mindre end eller lig med", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Den forudsigelige optimering procentdel skal være mindre end eller lig med", + "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Den forudsigelige interval skal være mindre end eller lig med", + "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max samtidige opkald skal være mindre end eller lig med", + "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Den Stamme-out skal være mindre end eller lig med", + "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Queue Timeout skal være mindre end eller lig med", + "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Den Globale Max forsøg skal være mindre end eller lig med", + "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Congestion Max forsøg skal være mindre end eller lig med", + "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Congestion genprøv tid skal være mindre end eller lig med", + "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Den travle Max forsøg skal være mindre end eller lig med", + "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Den travle genprøv tid skal være mindre end eller lig med", + "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Det Ubesvarede Max forsøg skal være mindre end eller lig med", + "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Ingen Svar Prøv tid skal være mindre end eller lig med", + "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Den samtidige opkald skal være mindre end eller lig med" }, "GENERAL": "Generel", "TIMEOUT": "Timeout", @@ -143,7 +178,6 @@ "ORIGINATECALLERIDNAME": "UdgÃ¥ende opkalds id navn", "ORIGINATECALLERIDNUMBER": "UdgÃ¥ende Opkalds Id nummer", "ORIGINATETIMEOUT": "Tid i sekunder for udgÃ¥ende opkald fra at etablere forbindelse. Hvis tilslutning ikke er etableret, skal stamme status vil være ubesvarede.", - "QUEUETIMEOUT": "Tid i sekunder, som et opkald venter i køen før det er faldet", "GLOBALMAXRETRY": "Det maksimale antal gange en kontakt kaldes inden lukketid.", "CONGESTIONMAXRETRY": "Det maksimale antal gange en defekt kontakt for overbelastning grund kaldes inden lukketid.", "CONGESTIONRETRYTIME": "Tid i minutter, inden du forsøger at nÃ¥ en kontakt mislykkedes pÃ¥ grund af overbelastning", @@ -158,7 +192,9 @@ "PREDICTIVEINTERVAL": "Tidsinterval i minutter betragtes som forudsigelig algoritme til at beregne mængden af opkald til at generere til optimering optimering af prædiktiv faktor", "AGENTTIMEOUT": "Angiver det antal sekunder til ringen en agents enhed.", "GLOBALINTERVAL": "Global tidsinterval, hvor opkalderen fÃ¥r lov til at ringe til kontaktpersoner. Vær opmærksom nÃ¥r du ændre dette felt. Vi er ikke ansvarlige eller erstatningspligtige for deres manglende opfyldelse, Nummersender love og regulativer.", - "PREFIX": "Telefon præfiks" + "PREFIX": "Telefon præfiks", + "CALLYSQUAREPROJECT": "Hvis du vælger en IVR projektet pÃ¥ listen, opkaldsdelen vil sende opkaldet til IVR, før det sættes i en kø.", + "NAME": "Kun tal og bogstaver og specielle tegn (.________) understøttes" }, "MUSICONHOLD": "Musik ved parkeret opkald", "ANNOUNCETOAGENT": "Annoncere til agent", @@ -439,7 +475,6 @@ "SCHEDULEDAT": "Planlagt til", "HOPPERBLACKS": "Tragten sortliste", "NO_HOPPERBLACK_AVAILABLE": "Ingen tilgængelige produkter", - "HOPPERFINALS": "Hopper sidste", "NO_HOPPERFINAL_AVAILABLE": "Ingen tilgængelige produkter", "HOPPERHISTORIES": "Magasinet historie", "NO_HOPPERHISTORY_AVAILABLE": "Ingen tilgængelige produkter", @@ -474,6 +509,19 @@ "TOTAL_MANAGED": "Total Managed", "GLOBAL_INTERVAL_IS_OVERTIME": "Uden for intervallet (Global)", "OPEN": "Åbn", - "FRESH": "Frisk" + "FRESH": "Frisk", + "GOTO_QUEUECAMPAIGN": "GÃ¥ til Realtime Kø kampagner", + "GOTOREALTIME_QUEUECAMPAIGN": "GÃ¥ til Realtime Kø kampagner", + "GOTO_IVRCAMPAIGN": "GÃ¥ til Realtime Ivr kampagner", + "GOTOREALTIME_IVRCAMPAIGN": "GÃ¥ til Realtime Ivr kampagner", + "ADVANCE": "Avanceret", + "ALWAYS": "Altid", + "NEVER": "Aldrig", + "ONLY_IF_OPEN": "Kun hvis Ã¥ben", + "CHECKDUPLICATE": "Kontrollér duplikerede", + "PAGE": "Page", + "ROWSPERPAGE": "Rækker pr. side", + "OF": "Af", + "CLOSED": "Lukket" } } \ No newline at end of file diff --git a/public/app/main/apps/motiondialer/i18n/de.json b/public/app/main/apps/motiondialer/i18n/de.json index 0deff3e..11405d0 100644 --- a/public/app/main/apps/motiondialer/i18n/de.json +++ b/public/app/main/apps/motiondialer/i18n/de.json @@ -86,7 +86,42 @@ "QUEUETIMEOUT_REQUIRED": "Warteschlange Timeout ist erforderlich", "ORIGINATETIMEOUT_REQUIRED": "Stammen Timeout ist erforderlich", "GLOBALINTERVAL_REQUIRED": "Globale Intervall ist erforderlich", - "PREFIX_MUST_VALID_PATTERN": "Präfix gültig sein muss eine gültige Muster" + "PREFIX_MUST_VALID_PATTERN": "Präfix gültig sein muss eine gültige Muster", + "NAME_MUST_VALID_PATTERN": "Name gültig sein muss eine gültige Muster", + "MAXCONCURRENTCALLS_REQUIRED": "Der Wert für die maximale Anzahl gleichzeitiger Anrufe ist erforderlich", + "CONCURRENTCALLS_REQUIRED": "Der Wert für die Anzahl gleichzeitiger Anrufe ist erforderlich", + "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Leistung muss größer als oder gleich", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die prädiktive Optimierung Prozentsatz muss größer als oder gleich", + "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die prädiktive Intervall muss größer als oder gleich", + "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die maximale Anzahl gleichzeitiger Anrufe muss größer als oder gleich", + "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die stammen Timeout muss größer als oder gleich", + "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Warteschlange Timeout muss größer als oder gleich", + "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Agent Timeout muss größer als oder gleich", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Wiederholung muss größer als oder gleich", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Nachlese Zeit muss größer als oder gleich", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Gewicht muss größer als oder gleich", + "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die globale Max wiederholen muss größer als oder gleich", + "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Überlastung Max wiederholen muss größer als oder gleich", + "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Verkehrsüberlastung erneut Zeit muss größer als oder gleich", + "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die geschäftige Max wiederholen muss größer als oder gleich", + "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die geschäftige Zeit für Wiederholungen muss größer als oder gleich", + "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Antwort Nein Max wiederholen muss größer als oder gleich", + "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Zeitüberschreitung für keine Antwort Zeit für Wiederholungen muss größer als oder gleich", + "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die gleichzeitige Anrufe muss größer als oder gleich", + "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Leistung muss kleiner als oder gleich", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die prädiktive Optimierung Prozentsatz muss kleiner als oder gleich", + "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die prädiktive Intervall muss kleiner als oder gleich", + "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die maximale Anzahl gleichzeitiger Anrufe muss kleiner als oder gleich", + "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die stammen Timeout muss kleiner als oder gleich", + "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Warteschlange Timeout muss kleiner als oder gleich", + "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die globale Max wiederholen muss kleiner als oder gleich", + "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Überlastung Max wiederholen muss kleiner als oder gleich", + "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Überlastung Zeit für Wiederholungen muss kleiner als oder gleich", + "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die geschäftige Max wiederholen muss kleiner als oder gleich", + "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die geschäftige Zeit für Wiederholungen muss kleiner als oder gleich", + "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Antwort Nein Max wiederholen muss kleiner als oder gleich", + "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Zeitüberschreitung für keine Antwort Zeit für Wiederholungen muss kleiner als oder gleich", + "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die gleichzeitige Anrufe muss kleiner als oder gleich" }, "GENERAL": "Allgemein", "TIMEOUT": "Timeout", @@ -143,7 +178,6 @@ "ORIGINATECALLERIDNAME": "Ausgehende Anrufer-ID-Namen", "ORIGINATECALLERIDNUMBER": "Ausgehende Anrufer-ID-Nummer", "ORIGINATETIMEOUT": "Zeit in Sekunden, die ausgehende Anrufe mit Ursprung Verbindung herzustellen. Wenn die Busverbindungen nicht hergestellt ist, wird der Status stammen, wird keine Antwort sein.", - "QUEUETIMEOUT": "Zeit in Sekunden, die ein Anruf in der Warteschlange warten soll, bevor er gelöscht wird", "GLOBALMAXRETRY": "Maximale Anzahl, wie oft ein Kontakt genannt wird, bevor es geschlossen", "CONGESTIONMAXRETRY": "Maximale Anzahl, wie oft ein Kontakt konnte nicht für Staus Grund genannt wird, bevor es geschlossen", "CONGESTIONRETRYTIME": "Zeit in Minuten, bevor Sie es erneut versuchen einen Kontakt für Staus Grund fehlgeschlagen zu erreichen.", @@ -158,7 +192,9 @@ "PREDICTIVEINTERVAL": "Zeitintervall in Minuten mit prädiktiver Algorithmus berücksichtigt werden Anrufe zu berechnen für die Optimierung der prädiktive Optimierung Faktor zu generieren", "AGENTTIMEOUT": "Gibt die Anzahl von Sekunden, die ein Agent Gerät klingeln.", "GLOBALINTERVAL": "Globale Zeit, in der sich der Dialer erlaubt ist, Kontakte zu nennen. Bitte achten Sie, wenn Sie dieses Feld nicht ändern. Wir sind nicht verantwortlich oder haftbar für die Nichteinhaltung mit Autodialer Gesetze und Bestimmungen einzuhalten.", - "PREFIX": "Vorwahl" + "PREFIX": "Vorwahl", + "CALLYSQUAREPROJECT": "Wenn Sie ein IVR-Projekt aus der Liste aus, das Wählsystem den Anruf an den IVR-Dienst, bevor Sie ihn in einer Warteschlange.", + "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt." }, "MUSICONHOLD": "Musik auf Halten", "ANNOUNCETOAGENT": "Verkünden auf Agenten", @@ -439,7 +475,6 @@ "SCHEDULEDAT": "Geplant für", "HOPPERBLACKS": "Hopper Blacklist", "NO_HOPPERBLACK_AVAILABLE": "Keine Reihen verfügbar", - "HOPPERFINALS": "Hopper Endg.", "NO_HOPPERFINAL_AVAILABLE": "Keine Reihen verfügbar", "HOPPERHISTORIES": "Hopper Geschichte", "NO_HOPPERHISTORY_AVAILABLE": "Keine Reihen verfügbar", @@ -474,6 +509,19 @@ "TOTAL_MANAGED": "Insgesamt verwaltet", "GLOBAL_INTERVAL_IS_OVERTIME": "Aus Intervall (Global)", "OPEN": "Öffnen", - "FRESH": "Frische" + "FRESH": "Frische", + "GOTO_QUEUECAMPAIGN": "In Echtzeit, wenn Warteschlange Kampagnen gehen", + "GOTOREALTIME_QUEUECAMPAIGN": "In Echtzeit, wenn Warteschlange Kampagnen gehen", + "GOTO_IVRCAMPAIGN": "In Echtzeit, Ivr-Kampagnen gehen", + "GOTOREALTIME_IVRCAMPAIGN": "In Echtzeit, Ivr-Kampagnen gehen", + "ADVANCE": "Erweiterte", + "ALWAYS": "Immer", + "NEVER": "Nie", + "ONLY_IF_OPEN": "Nur wenn offen", + "CHECKDUPLICATE": "Duplizieren", + "PAGE": "Seite", + "ROWSPERPAGE": "Zeilen pro Seite", + "OF": "Von", + "CLOSED": "Geschlossen" } } \ No newline at end of file diff --git a/public/app/main/apps/motiondialer/i18n/en.json b/public/app/main/apps/motiondialer/i18n/en.json index ab1ca67..b87e678 100644 --- a/public/app/main/apps/motiondialer/i18n/en.json +++ b/public/app/main/apps/motiondialer/i18n/en.json @@ -1,5 +1,16 @@ { "MOTIONDIALER": { + "AMD": "Asterisk Answering Machine Detection (AMD)", + "AMDTOTALANALYSISTIME": "Total Analysis Time", + "AMDACTIVE": "AMD", + "AMDINITIALSILENCE": "Initial Silence", + "AMDGREETING": "Greeting", + "AMDAFTERGREETINGSILENCE": "After Greeting Silence", + "AMDSILENCETHRESHOLD": "Silence Threshold", + "AMDMINWORDLENGTH": "Min Word Length", + "AMDBETWEENWORDSSILENCE": "Between Words Silence", + "AMDMAXIMUMWORDLENGTH": "Maximum Word Length", + "AMDMAXIMUMNUMBEROFWORDS": "Maximum Number Of Words", "GOTO_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns", "GOTOREALTIME_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns", "GOTO_IVRCAMPAIGN": "Go To Realtime Ivr Campaigns", @@ -19,7 +30,7 @@ "NO_HOPPERBLACK_AVAILABLE": "No items available", "HOPPERFINALS": "Hopper Final", "NO_HOPPERFINAL_AVAILABLE": "No items available", - "HOPPERHISTORIES": "Hopper History", + "HOPPERHISTORIES": "Call history", "NO_HOPPERHISTORY_AVAILABLE": "No items available", "DELETE_HOPPERHISTORY": "Delete", "DELETE_HOPPERFINAL": "Delete", @@ -122,7 +133,40 @@ "QUEUETIMEOUT_REQUIRED": "Queue Timeout is required", "ORIGINATETIMEOUT_REQUIRED": "Originate Timeout is required", "GLOBALINTERVAL_REQUIRED": "Global Interval is required", - "MAXCONCURRENTCALLS_REQUIRED": "The value for Max Concurrent Calls is required" + "MAXCONCURRENTCALLS_REQUIRED": "The value for Max Concurrent Calls is required", + "CONCURRENTCALLS_REQUIRED": "The value for Concurrent Calls is required", + "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Power Level must be greater than or equal to", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Predictive Optimization Percentage must be greater than or equal to", + "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Predictive Interval must be greater than or equal to", + "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Max Concurrent Calls must be greater than or equal to", + "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Originate Timeout must be greater than or equal to", + "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Queue Timeout must be greater than or equal to", + "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Agent Timeout must be greater than or equal to", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Retry must be greater than or equal to", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Wrapup Time must be greater than or equal to", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Weight must be greater than or equal to", + "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Global Max Retry must be greater than or equal to", + "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Congestion Max Retry must be greater than or equal to", + "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Congestion Retry Time must be greater than or equal to", + "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Busy Max Retry must be greater than or equal to", + "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Busy Retry Time must be greater than or equal to", + "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The No Answer Max Retry must be greater than or equal to", + "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The No Answer Retry Time must be greater than or equal to", + "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Concurrent Calls must be greater than or equal to", + "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The Power Level must be less than or equal to", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The Predictive Optimization Percentage must be less than or equal to", + "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The Predictive Interval must be less than or equal to", + "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The Max Concurrent Calls must be less than or equal to", + "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The Originate Timeout must be less than or equal to", + "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The Queue Timeout must be less than or equal to", + "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The Global Max Retry must be less than or equal to", + "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The Congestion Max Retry must be less than or equal to", + "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The Congestion Retry Time must be less than or equal to", + "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The Busy Max Retry must be less than or equal to", + "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The Busy Retry Time must be less than or equal to", + "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The No Answer Max Retry must be less than or equal to", + "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The No Answer Retry Time must be less than or equal to", + "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The Concurrent Calls must be less than or equal to" }, "GENERAL": "General", "AGENTTIMEOUT": "Agent Timeout", @@ -133,6 +177,16 @@ "JOINWHENEMPTY": "Join when empty", "LEAVEWHENEMPTY": "Leave when empty", "HELP": { + "AMDMAXIMUMWORDLENGTH": "Maximum duration of a single Voice utterance allowed.", + "AMDMINWORDLENGTH": "Minimum duration of Voice to considered as a word", + "AMDSILENCETHRESHOLD": "If the average level of noise in a sample does not reach this value, from a scale of 0 to 32767, then we will consider it to be silence.", + "AMDTOTALANALYSISTIME": "Maximum time allowed for the algorithm to decide on whether the audio represents a HUMAN, or a MACHINE", + "AMDAFTERGREETINGSILENCE": "Silence after detecting a greeting. If exceeded, then the result is detection as a HUMAN", + "AMDGREETING": "Maximum length of a greeting. If exceeded, then the result is detection as a MACHINE.", + "AMDINITIALSILENCE": "Maximum silence duration before the greeting. If exceeded, then the result is detection as a MACHINE.", + "AMDACTIVE": "Active or Disactive attempt to detect answering machines.", + "AMDBETWEENWORDSSILENCE": "Minimum duration of silence after a word to consider the audio what follows as a new word", + "AMDMAXIMUMNUMBEROFWORDS": "Maximum number of words in the greeting If REACHED, then the result is detection as a MACHINE", "CALLYSQUAREPROJECT": "If you select an IVR project from the list, the dialer will forward the call to the IVR before putting it in a queue.", "PREFIX": "Telephone prefix", "ACTIVE": "Active", @@ -186,7 +240,7 @@ "ORIGINATECALLERIDNAME": "Outgoing Caller Id Name", "ORIGINATECALLERIDNUMBER": "Outgoing Caller Id Number", "ORIGINATETIMEOUT": "Time in seconds for the originating outbound call to establish connection. If the connectin is not established, the originate status will be No Answer.", - "QUEUETIMEOUT": "Time in seconds that a call will wait in the queue before it is dropped. Min 0 and Max 99", + "QUEUETIMEOUT": "Time in seconds that a call will wait in the queue before it is dropped. Min 1 and Max 999", "GLOBALMAXRETRY": "Maximum number of times a contact is called before considering it closed", "CONGESTIONMAXRETRY": "Maximum number of times a failed contact for congestion reason is called before considering it closed.", "CONGESTIONRETRYTIME": "Time in minutes before retrying to reach a contact failed for congestion reason.", @@ -275,7 +329,7 @@ "MESSAGES": "Messages", "SORT": "Sort", "ADD_MUSICONHOLD": "Add Music On Hold", - "MUSICONHOLDS": "Musics On Hold", + "MUSICONHOLDS": "Music On Hold", "EDIT_MUSICONHOLD": "Edit Music On Hold", "DELETE_MUSICONHOLD": "Delete Music On Hold", "DIRECTORY": "Directory", @@ -483,12 +537,13 @@ "TOTAL_MANAGED": "Total Managed", "OPEN": "Open", "FRESH": "Fresh", + "CLOSED": "Closed", "ALWAYS": "Always", "NEVER": "Never", "ONLY_IF_OPEN": "Only If Open", "CHECKDUPLICATE": "Check Duplicate", "PAGE": "Page", "ROWSPERPAGE": "Rows per page", - "OF": "Of" + "OF": "of" } } \ No newline at end of file diff --git a/public/app/main/apps/motiondialer/i18n/es.json b/public/app/main/apps/motiondialer/i18n/es.json index 2a0819d..eb0fcca 100644 --- a/public/app/main/apps/motiondialer/i18n/es.json +++ b/public/app/main/apps/motiondialer/i18n/es.json @@ -86,7 +86,42 @@ "QUEUETIMEOUT_REQUIRED": "Se requiere de tiempo de espera de cola", "ORIGINATETIMEOUT_REQUIRED": "Se originan Timeout es requerido", "GLOBALINTERVAL_REQUIRED": "Es necesario intervalo global", - "PREFIX_MUST_VALID_PATTERN": "El prefijo debe ser válido un patrón válido" + "PREFIX_MUST_VALID_PATTERN": "El prefijo debe ser válido un patrón válido", + "NAME_MUST_VALID_PATTERN": "El nombre debe ser válido un patrón válido", + "MAXCONCURRENTCALLS_REQUIRED": "El valor para el número máximo de llamadas simultáneas es necesario", + "CONCURRENTCALLS_REQUIRED": "El valor de las llamadas simultáneas es obligatorio", + "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El nivel de potencia debe ser mayor o igual a", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La optimización predictiva el porcentaje debe ser mayor o igual a", + "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La predicción del intervalo debe ser mayor o igual a", + "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El máximo de llamadas simultáneas debe ser mayor o igual a", + "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La originan Timeout debe ser mayor o igual a", + "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Tiempo de espera de la cola debe ser mayor o igual a", + "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El tiempo de espera del agente debe ser mayor o igual a", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El reintento debe ser mayor o igual a", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El tiempo de cierre debe ser mayor o igual a", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El peso debe ser mayor o igual a", + "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El número máximo de reintentos global debe ser mayor o igual a", + "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El número máximo de reintentos de congestión debe ser mayor o igual a", + "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El tiempo de reintento de congestión debe ser mayor o igual a", + "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El número máximo de reintentos ocupado debe ser mayor o igual a", + "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El tiempo de reintento ocupado debe ser mayor o igual a", + "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El número máximo de reintentos de respuesta no debe ser mayor que o igual a", + "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Tiempo de reintento de la respuesta no debe ser mayor que o igual a", + "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Las llamadas simultáneas debe ser mayor o igual a", + "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El nivel de alimentación debe ser menor o igual a", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La optimización predictiva porcentaje debe ser menor o igual a", + "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La predicción del intervalo debe ser menor o igual a", + "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El máximo de llamadas simultáneas debe ser menor o igual a", + "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La originan Timeout debe ser menor o igual a", + "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Tiempo de espera de la cola debe ser menor o igual a", + "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El número máximo de reintentos global debe ser menor o igual a", + "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El número máximo de reintentos de congestión debe ser menor o igual a", + "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El tiempo de reintento de congestión debe ser menor o igual a", + "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El número máximo de reintentos ocupado debe ser menor o igual a", + "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El tiempo de reintento ocupado debe ser menor o igual a", + "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El número máximo de reintentos de respuesta no debe ser menor o igual a", + "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Tiempo de reintento de la respuesta no debe ser menor o igual a", + "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Las llamadas simultáneas debe ser menor o igual a" }, "GENERAL": "General", "TIMEOUT": "Timeout", @@ -143,7 +178,6 @@ "ORIGINATECALLERIDNAME": "Nombre de ID de llamada saliente", "ORIGINATECALLERIDNUMBER": "Número de ID de llamada saliente", "ORIGINATETIMEOUT": "El tiempo en segundos para que origina la llamada para establecer la conexión. Si el connection no está establecida, el estado se originan ninguna respuesta.", - "QUEUETIMEOUT": "Tiempo en segundos que esperará una llamada en la cola antes de que se cae", "GLOBALMAXRETRY": "Número máximo de veces que un contacto se llama antes de considerar cerrada", "CONGESTIONMAXRETRY": "Número máximo de veces que un error de contacto para la congestión razón se llama antes de considerar cerrada", "CONGESTIONRETRYTIME": "Tiempo en minutos antes de intentar llegar a un contacto falló por motivos de congestión", @@ -158,7 +192,9 @@ "PREDICTIVEINTERVAL": "Intervalo de tiempo en minutos para ser considerado por el algoritmo predictivo para calcular la cantidad de llamadas a generar para optimizar el factor de optimización predictiva", "AGENTTIMEOUT": "Especifica el número de segundos a sonar el dispositivo de un agente.", "GLOBALINTERVAL": "Intervalo de tiempo global durante el cual el comunicador está permitido llamar a contactos. Por favor, preste atención al modificar este campo. No seremos responsables de su incapacidad para cumplir con las leyes y reglamentos Autodialer.", - "PREFIX": "Prefijo telefónico" + "PREFIX": "Prefijo telefónico", + "CALLYSQUAREPROJECT": "Si selecciona una IVR proyecto de la lista, el comunicador enviará la llamada a la IVR antes de ponerlo en una cola.", + "NAME": "Sólo los números, letras y caracteres específicos (_) son compatibles." }, "MUSICONHOLD": "Música en espera", "ANNOUNCETOAGENT": "Anunciar al agente", @@ -439,7 +475,6 @@ "SCHEDULEDAT": "Programadas en", "HOPPERBLACKS": "Lista negra de tolva", "NO_HOPPERBLACK_AVAILABLE": "No hay elementos disponibles", - "HOPPERFINALS": "Final de tolva", "NO_HOPPERFINAL_AVAILABLE": "No hay elementos disponibles", "HOPPERHISTORIES": "Historia de tolva", "NO_HOPPERHISTORY_AVAILABLE": "No hay elementos disponibles", @@ -474,6 +509,19 @@ "TOTAL_MANAGED": "Gestionado total", "GLOBAL_INTERVAL_IS_OVERTIME": "Fuera de intervalo (Global).", "OPEN": "Abrir", - "FRESH": "Fresh" + "FRESH": "Fresh", + "GOTO_QUEUECAMPAIGN": "Ir a campañas de cola en tiempo real", + "GOTOREALTIME_QUEUECAMPAIGN": "Ir a campañas de cola en tiempo real", + "GOTO_IVRCAMPAIGN": "Ir a campañas de IVR en tiempo real", + "GOTOREALTIME_IVRCAMPAIGN": "Ir a campañas de IVR en tiempo real", + "ADVANCE": "Advanced", + "ALWAYS": "Siempre", + "NEVER": "Nunca", + "ONLY_IF_OPEN": "Sólo si abrir", + "CHECKDUPLICATE": "Verificar duplicar", + "PAGE": "Página", + "ROWSPERPAGE": "Filas por página.", + "OF": "De", + "CLOSED": "Cerrado" } } \ No newline at end of file diff --git a/public/app/main/apps/motiondialer/i18n/fa.json b/public/app/main/apps/motiondialer/i18n/fa.json index 6f1563e..fe9e17b 100644 --- a/public/app/main/apps/motiondialer/i18n/fa.json +++ b/public/app/main/apps/motiondialer/i18n/fa.json @@ -86,7 +86,42 @@ "QUEUETIMEOUT_REQUIRED": "صف پایان زمان لازم است.", "ORIGINATETIMEOUT_REQUIRED": "روستانشين پایان زمان لازم است.", "GLOBALINTERVAL_REQUIRED": "فاصله زمانی جهانی لازم است.", - "PREFIX_MUST_VALID_PATTERN": "وراث بايد الگوى معتبر معتبر خواهد بود." + "PREFIX_MUST_VALID_PATTERN": "وراث بايد الگوى معتبر معتبر خواهد بود.", + "NAME_MUST_VALID_PATTERN": "نام باید الگوی معتبر معتبر خواهد بود.", + "MAXCONCURRENTCALLS_REQUIRED": "از مقدار حداکثر مصادف می نامد لازم است.", + "CONCURRENTCALLS_REQUIRED": "اين مقدار برای بکاربردن تلفن مورد نیاز است.", + "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "سطح قدرت باید بیشتر یا مساوی با", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "اين نگرش درصد بهینه سازی باید بیشتر یا مساوی با", + "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "اين نگرش فاصله باید بیشتر یا مساوی با", + "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "ماكس مصادف می نامد باید بیشتر یا مساوی با", + "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "روستانشين به پایان زمان باید بیشتر یا مساوی با", + "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "توی صف پایان زمان باید بیشتر یا مساوی با", + "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "عامل زمان مجاز باید بیشتر یا مساوی با", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "دوباره سعی کنید، باید بیشتر یا مساوی با", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "در آن زمان Wrapup باید بیشتر یا مساوی با", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "وزن باید بیشتر یا مساوی با", + "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "جهانی حداکثر سعی دوباره باید بیشتر یا مساوی با", + "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "تراکم حداکثر سعی دوباره باید بیشتر یا مساوی با", + "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "تراکم مجدد زمان باید بیشتر یا مساوی با", + "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "سعی کنید دوباره شلوغ حداکثر باید بیشتر یا مساوی با", + "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "در آن زمان مشغول دوباره سعی کنید باید بیشتر یا مساوی با", + "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "جواب نداد، حداکثر سعی دوباره باید بیشتر یا مساوی با", + "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "جواب نداد، دوباره سعی کنید زمان باید بیشتر یا مساوی با", + "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "بکاربردن تلفن باید بیشتر یا مساوی با", + "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "سطح قدرت باید کمتر یا مساوی با", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "اين نگرش درصد بهینه سازی باید کمتر یا مساوی با", + "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "اين نگرش فاصله باید کمتر یا مساوی با", + "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "ماكس مصادف می نامد باید کمتر یا مساوی با", + "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "روستانشين به پایان زمان باید کمتر یا مساوی با", + "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "توی صف پایان زمان باید کمتر یا مساوی با", + "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "جهانی حداکثر سعی دوباره باید کمتر یا مساوی با", + "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "تراکم حداکثر سعی دوباره باید کمتر یا مساوی با", + "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "تراکم مجدد زمان باید کمتر یا مساوی با", + "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "سعی کنید دوباره شلوغ حداکثر باید کمتر یا مساوی با", + "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "در آن زمان مشغول دوباره سعی کنید باید کمتر یا مساوی با", + "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "جواب نداد، حداکثر سعی دوباره باید کمتر یا مساوی با", + "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "جواب نداد، دوباره سعی کنید زمان باید کمتر یا مساوی با", + "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "بکاربردن تلفن باید کمتر یا مساوی با" }, "GENERAL": "سردار", "TIMEOUT": "پایان زمان مجاز", @@ -143,7 +178,6 @@ "ORIGINATECALLERIDNAME": "شیرهای شناسه نام تماس گیرنده", "ORIGINATECALLERIDNUMBER": "شیرهای شماره شناسه تماس گیرنده", "ORIGINATETIMEOUT": "بار در ثانیه برای کارکنان ديگر متعلق به تلفن اتصال برقرار كند. اگه connectin برقرار نيست، وضعيت روستانشين جواب نه خواهد بود.", - "QUEUETIMEOUT": "بار در ثانيه تلفن منتظر در صف قبل از پائين است.", "GLOBALMAXRETRY": "حداکثر تعداد بار تماس با نام دارد که پيش از اين با توجه به اينكه بسته شد", "CONGESTIONMAXRETRY": "حداکثر تعداد بار تماس ناموفق به علت تراكم جمعيت قبل از آن نام دارد که با توجه به بسته", "CONGESTIONRETRYTIME": "بار در دقیقه ببندید تا پيش از رسيدن به يك تماس به علت تراکم انجام نشد.", @@ -158,7 +192,9 @@ "PREDICTIVEINTERVAL": "فاصله زماني در دقيقه را بايد با نگرش فيلسوفانه پذيرفت محاسبه مقدار تولید برای بهینه سازی تماس های نگرش به عامل بهینه سازی", "AGENTTIMEOUT": "تعداد ثانیه تعیین می کند تا حلقه ای از عمال دستگاه است.", "GLOBALINTERVAL": "فاصله زماني جهاني طي اين مدت dialer اجازه تماس با تلفن است. لطفاً توجه کنید وقتی شما تغییر این رشته است. ما شما را مسئول یا مشمول عدم رعایت قوانین و مقررات دولت Autodialer.", - "PREFIX": "پادتن تلفن" + "PREFIX": "پادتن تلفن", + "CALLYSQUAREPROJECT": "اگر شما یک پروژه را انتخاب کنید از لیست IVR، مطرح خواهد شد. dialer تلفن IVR را قبل از قرار دادن آن در صف است.", + "NAME": "فقط شماره ها و حروف و نویسه های ویژه (_) پشتیبانی می شود." }, "MUSICONHOLD": "موسيقي را نگه دارید", "ANNOUNCETOAGENT": "عامل را اعلام می کند", @@ -439,7 +475,6 @@ "SCHEDULEDAT": "طبق برنامه در", "HOPPERBLACKS": "هوپر Blacklist", "NO_HOPPERBLACK_AVAILABLE": "نه اقلام موجود است", - "HOPPERFINALS": "هوپر فینال", "NO_HOPPERFINAL_AVAILABLE": "نه اقلام موجود است", "HOPPERHISTORIES": "هوپر سابقه", "NO_HOPPERHISTORY_AVAILABLE": "نه اقلام موجود است", @@ -474,6 +509,19 @@ "TOTAL_MANAGED": "اداره کل", "GLOBAL_INTERVAL_IS_OVERTIME": "از فاصله (جهانی)", "OPEN": "باز", - "FRESH": "تازه" + "FRESH": "تازه", + "GOTO_QUEUECAMPAIGN": "رفتن به صف مبارزات Realtime", + "GOTOREALTIME_QUEUECAMPAIGN": "رفتن به صف مبارزات Realtime", + "GOTO_IVRCAMPAIGN": "برو به مبارزات Realtime Ivr", + "GOTOREALTIME_IVRCAMPAIGN": "برو به مبارزات Realtime Ivr", + "ADVANCE": "پيش رفت.", + "ALWAYS": "همیشه", + "NEVER": "هرگز", + "ONLY_IF_OPEN": "فقط اگر باز", + "CHECKDUPLICATE": "دوبله را بررسی کنید", + "PAGE": "صفحه", + "ROWSPERPAGE": "رديف در صفحه", + "OF": "از", + "CLOSED": "بسته" } } \ No newline at end of file diff --git a/public/app/main/apps/motiondialer/i18n/fi.json b/public/app/main/apps/motiondialer/i18n/fi.json index 2245eec..a72698e 100644 --- a/public/app/main/apps/motiondialer/i18n/fi.json +++ b/public/app/main/apps/motiondialer/i18n/fi.json @@ -86,7 +86,42 @@ "QUEUETIMEOUT_REQUIRED": "Jono aikakatkaisu on pakollinen", "ORIGINATETIMEOUT_REQUIRED": "Ovat peräisin aikakatkaisu on pakollinen", "GLOBALINTERVAL_REQUIRED": "Global välejä", - "PREFIX_MUST_VALID_PATTERN": "Tunnuksen on oltava voimassa kelvollinen kuvio" + "PREFIX_MUST_VALID_PATTERN": "Tunnuksen on oltava voimassa kelvollinen kuvio", + "NAME_MUST_VALID_PATTERN": "Nimen on oltava voimassa kelvollinen kuvio", + "MAXCONCURRENTCALLS_REQUIRED": "Arvo yhtäaikainen Max puhelut on pakollinen", + "CONCURRENTCALLS_REQUIRED": "Arvo mahdollistaa samanaikaisen puhelut on pakollinen", + "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Virran määrän on oltava suurempi tai yhtä suuri kuin", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Ennustava optimointi summan on oltava suurempi tai yhtä suuri kuin", + "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Ennustava väli on oltava suurempi tai yhtä suuri kuin", + "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max samanaikaista puhelua on oltava suurempi tai yhtä suuri kuin", + "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kun alkuperätuotteita aikakatkaisu on oltava suurempi tai yhtä suuri kuin", + "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Jonon aikakatkaisu on oltava suurempi tai yhtä suuri kuin", + "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Asiakaspalvelijan aikakatkaisu on oltava suurempi tai yhtä suuri kuin", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Retry on oltava suurempi tai yhtä suuri kuin", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Lähettämistietojen noutaminen on aika on oltava suurempi tai yhtä suuri kuin", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Painon on oltava suurempi tai yhtä suuri kuin", + "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Global Max Retry on oltava suurempi tai yhtä suuri kuin", + "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Ruuhkat Max Retry on oltava suurempi tai yhtä suuri kuin", + "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Ruuhkat Retry on oltava suurempi tai yhtä suuri kuin", + "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kiireisille Max Retry on oltava suurempi tai yhtä suuri kuin", + "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kiireisille Retry on oltava suurempi tai yhtä suuri kuin", + "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "No vastaus Max Retry on oltava suurempi tai yhtä suuri kuin", + "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "No vastaus Retry on oltava suurempi tai yhtä suuri kuin", + "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Testattavina puhelut on oltava suurempi tai yhtä suuri kuin", + "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Noudata tehotason on oltava pienempi tai yhtä suuri kuin", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Ennustava optimointi summan on oltava pienempi tai yhtä suuri kuin", + "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Ennustava väli on oltava pienempi tai yhtä suuri kuin", + "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max samanaikaista puhelua on oltava pienempi tai yhtä suuri kuin", + "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Kun alkuperätuotteita aikakatkaisu on oltava pienempi tai yhtä suuri kuin", + "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Jonon aikakatkaisu on oltava pienempi tai yhtä suuri kuin", + "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Global Max Retry on oltava pienempi tai yhtä suuri kuin", + "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Ruuhkat Max Retry on oltava pienempi tai yhtä suuri kuin", + "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Ruuhkat Retry on oltava pienempi tai yhtä suuri kuin", + "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Kiireisille Max Retry on oltava pienempi tai yhtä suuri kuin", + "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Kiireisille Retry on oltava pienempi tai yhtä suuri kuin", + "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "No vastaus Max Retry on oltava pienempi tai yhtä suuri kuin", + "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "No vastaus Retry on oltava pienempi tai yhtä suuri kuin", + "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Testattavina puhelut on oltava pienempi tai yhtä suuri kuin" }, "GENERAL": "Yleistä", "TIMEOUT": "Aikakatkaisu", @@ -143,7 +178,6 @@ "ORIGINATECALLERIDNAME": "Lähtevät soittajan nimi", "ORIGINATECALLERIDNUMBER": "Lähtevän puhelun soittajan numero", "ORIGINATETIMEOUT": "Aika sekunteina lähtötuotteisiin lähtevä puhelu yhteyden muodostaminen. Jos liittimellä ei muodostu, ovat peräisin tilaksi tulee ei ole vastausta.", - "QUEUETIMEOUT": "Aika sekunteina, jonka odottaa jonossa ennen kuin se putoaa", "GLOBALMAXRETRY": "Enimmäiskertamäärään yhteyshenkilö kutsutaan ennen kuin harkitset äänestyksen päättyneeksi", "CONGESTIONMAXRETRY": "Enimmäiskertamäärään epäonnistunut ota ylikuormituksen vuoksi kutsutaan ennen kuin harkitset äänestyksen päättyneeksi", "CONGESTIONRETRYTIME": "Aika minuutteina, ennen kuin yrität päästä kosketuksiin epäonnistui ylikuormituksen vuoksi", @@ -158,7 +192,9 @@ "PREDICTIVEINTERVAL": "Aikaväli minuutteina käsitellään ennustava algoritmi laskee määrän puheluja synnyttää optimoimisessa ennustavan optimointi kerroin", "AGENTTIMEOUT": "Määrittää, kuinka monen sekunnin välein soi edustajan laitteeseen.", "GLOBALINTERVAL": "Global aikaväli, jonka aikana valitsimeen voi soittaa yhteyshenkilöille. Ota tiiviisti tätä kenttää muokataan. Emme ole vastuussa minkäänlaisista vahingoista tai, jos käyttäjä ei noudata Autodialer valtion lakeja ja säädöksiä.", - "PREFIX": "Puhelimen etuliite" + "PREFIX": "Puhelimen etuliite", + "CALLYSQUAREPROJECT": "Jos valitset IVR-projekti luettelosta, valitsimen toimittaa puhelun IVR ennen pakkaamista jonoon.", + "NAME": "Vain numeroita, kirjaimia ja erikoismerkkejä (._ tuetaan" }, "MUSICONHOLD": "Musiikkia puhelun ollessa pidossa", "ANNOUNCETOAGENT": "Ilmoittaa Agent", @@ -439,7 +475,6 @@ "SCHEDULEDAT": "Ajoitusajankohta", "HOPPERBLACKS": "Kahvipapusäiliön Blacklist", "NO_HOPPERBLACK_AVAILABLE": "Kohteita ei ole käytettävissä", - "HOPPERFINALS": "Kahvipapusäiliön lopullinen", "NO_HOPPERFINAL_AVAILABLE": "Kohteita ei ole käytettävissä", "HOPPERHISTORIES": "Kahvipapusäiliön historia", "NO_HOPPERHISTORY_AVAILABLE": "Kohteita ei ole käytettävissä", @@ -474,6 +509,19 @@ "TOTAL_MANAGED": "Total onnistui", "GLOBAL_INTERVAL_IS_OVERTIME": "Ulos väli (globaali)", "OPEN": "Avaa", - "FRESH": "Tuore" + "FRESH": "Tuore", + "GOTO_QUEUECAMPAIGN": "Siirry Realtime jono kampanjoita", + "GOTOREALTIME_QUEUECAMPAIGN": "Siirry Realtime jono kampanjoita", + "GOTO_IVRCAMPAIGN": "Siirry Realtime Ivr-kampanjat", + "GOTOREALTIME_IVRCAMPAIGN": "Siirry Realtime Ivr-kampanjat", + "ADVANCE": "Tarkennettu", + "ALWAYS": "Aina", + "NEVER": "Älä koskaan", + "ONLY_IF_OPEN": "Vain, jos auki", + "CHECKDUPLICATE": "Tarkista kaksoiskappale", + "PAGE": "Sivu", + "ROWSPERPAGE": "Riviä sivulle", + "OF": ",", + "CLOSED": "Suljettu" } } \ No newline at end of file diff --git a/public/app/main/apps/motiondialer/i18n/fr.json b/public/app/main/apps/motiondialer/i18n/fr.json index db84779..aa99d77 100644 --- a/public/app/main/apps/motiondialer/i18n/fr.json +++ b/public/app/main/apps/motiondialer/i18n/fr.json @@ -86,7 +86,42 @@ "QUEUETIMEOUT_REQUIRED": "Délai d'attente est nécessaire", "ORIGINATETIMEOUT_REQUIRED": "Délai d'origine est requis", "GLOBALINTERVAL_REQUIRED": "Les intervalles sont nécessaires", - "PREFIX_MUST_VALID_PATTERN": "Préfixe doit être un motif valide valide" + "PREFIX_MUST_VALID_PATTERN": "Préfixe doit être un motif valide valide", + "NAME_MUST_VALID_PATTERN": "Nom doit être valide un modèle valable", + "MAXCONCURRENTCALLS_REQUIRED": "La valeur de Max. d'appels simultanés est requis", + "CONCURRENTCALLS_REQUIRED": "La valeur d'appels simultanés est requis", + "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Le niveau de puissance doit être supérieure ou égale à", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Le pourcentage d'optimisation prédictive doit être supérieure ou égale à", + "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "L'intervalle de prévision doit être supérieure ou égale à", + "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Les appels simultanés maxi doit être supérieure ou égale à", + "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Le délai d'origine doit être supérieure ou égale à", + "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Le délai d'attente doit être supérieure ou égale à", + "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "L'agent doit être supérieure ou égale à", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La nouvelle tentative doit être supérieure ou égale à", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Le temps de post-appel doit être supérieure ou égale à", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Le poids doit être supérieure ou égale à", + "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La Global Max Retry doit être supérieure ou égale à", + "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "L'encombrement Max Retry doit être supérieure ou égale à", + "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Le temps de relance de la congestion doit être supérieure ou égale à", + "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La tentative d'occupation Max doit être supérieure ou égale à", + "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La période de tentatives d'occupation doit être supérieure ou égale à", + "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La réponse Non Max Retry doit être supérieure ou égale à", + "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Le temps de relance sans réponse doit être supérieure ou égale à", + "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "L'appels concurrents doit être supérieure ou égale à", + "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Le niveau de puissance doit être inférieure ou égale à", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Le pourcentage d'optimisation prédictive doit être inférieure ou égale à", + "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "L'intervalle de prévision doit être inférieure ou égale à", + "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Les appels simultanés maxi doit être inférieure ou égale à", + "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Le délai d'origine doit être inférieure ou égale à", + "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Le délai d'attente doit être inférieure ou égale à", + "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La Global Max Retry doit être inférieure ou égale à", + "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "L'encombrement Max Retry doit être inférieure ou égale à", + "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Le temps de relance de la congestion doit être inférieure ou égale à", + "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La tentative d'occupation Max doit être inférieure ou égale à", + "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La période de tentatives d'occupation doit être inférieure ou égale à", + "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La réponse Non Max Retry doit être inférieure ou égale à", + "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Le temps de relance sans réponse doit être inférieure ou égale à", + "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "L'appels concurrents doit être inférieure ou égale à" }, "GENERAL": "Général", "TIMEOUT": "Timeout", @@ -143,7 +178,6 @@ "ORIGINATECALLERIDNAME": "Nom de l'Id de l'appelant sortant", "ORIGINATECALLERIDNUMBER": "Numéro ID de l'appelant sortant", "ORIGINATETIMEOUT": "Temps en secondes pour l'appel sortant pour établir la connexion. Si la connectin n'est pas établie, l'état d'origine seront Pas de réponse.", - "QUEUETIMEOUT": "Temps en secondes qu'un appel va attendre dans la file d'attente avant d'être abandonné", "GLOBALMAXRETRY": "Nombre maximal de fois qu'un contact est appelé avant d'envisager sa fermeture", "CONGESTIONMAXRETRY": "Nombre maximal de fois qu'un contact a échoué pour des raisons de congestion est appelé avant d'envisager sa fermeture", "CONGESTIONRETRYTIME": "Temps en minutes avant de tenter de parvenir à un contact a échoué pour des raisons de congestion", @@ -158,7 +192,9 @@ "PREDICTIVEINTERVAL": "Intervalle de temps en minutes pour être examiné par l'algorithme prédictif pour calculer le montant d'appels pour générer pour l'optimisation de l'efficacité prédictive des facteurs d'optimisation", "AGENTTIMEOUT": "Spécifie le nombre de secondes d'un anneau périphérique de l'agent.", "GLOBALINTERVAL": "Intervalle de temps à l'échelle mondiale au cours de laquelle le numéroteur est autorisé à appeler des contacts. Veuillez porter une attention particulière lorsque vous modifier ce champ. Nous ne sera pas tenue responsable de votre incapacité à se conformer aux lois et règlements. Numéroteur automatique", - "PREFIX": "Préfixe téléphonique" + "PREFIX": "Préfixe téléphonique", + "CALLYSQUAREPROJECT": "Si vous sélectionnez un projet SVI dans la liste, le dialer va renvoyer l'appel à l'IVR avant de le placer dans une file d'attente.", + "NAME": "Seulement les chiffres, lettres et caractères spécifiques (._) sont pris en charge" }, "MUSICONHOLD": "La musique d'attente", "ANNOUNCETOAGENT": "Annoncer à l'Agent", @@ -439,7 +475,6 @@ "SCHEDULEDAT": "Service à", "HOPPERBLACKS": "Liste noire de la trémie", "NO_HOPPERBLACK_AVAILABLE": "Pas d'articles disponibles", - "HOPPERFINALS": "Finale de la trémie", "NO_HOPPERFINAL_AVAILABLE": "Pas d'articles disponibles", "HOPPERHISTORIES": "Histoire de la trémie", "NO_HOPPERHISTORY_AVAILABLE": "Pas d'articles disponibles", @@ -474,6 +509,19 @@ "TOTAL_MANAGED": "Gestion totale", "GLOBAL_INTERVAL_IS_OVERTIME": "Hors de l'intervalle (Global)", "OPEN": "Ouvrir", - "FRESH": "Fresh" + "FRESH": "Fresh", + "GOTO_QUEUECAMPAIGN": "Rendez-vous en temps réel à des campagnes d'attente", + "GOTOREALTIME_QUEUECAMPAIGN": "Rendez-vous en temps réel à des campagnes d'attente", + "GOTO_IVRCAMPAIGN": "Rendez-vous en temps réel pour les campagnes IVR", + "GOTOREALTIME_IVRCAMPAIGN": "Rendez-vous en temps réel pour les campagnes IVR", + "ADVANCE": "Recherche avancée", + "ALWAYS": "Toujours", + "NEVER": "Jamais", + "ONLY_IF_OPEN": "Que s'ouvrir", + "CHECKDUPLICATE": "Vérifier Dupliquer", + "PAGE": "La page", + "ROWSPERPAGE": "Les lignes par page", + "OF": "De", + "CLOSED": "Fermé" } } \ No newline at end of file diff --git a/public/app/main/apps/motiondialer/i18n/hi.json b/public/app/main/apps/motiondialer/i18n/hi.json index 764dbc6..60e71ce 100644 --- a/public/app/main/apps/motiondialer/i18n/hi.json +++ b/public/app/main/apps/motiondialer/i18n/hi.json @@ -86,7 +86,42 @@ "QUEUETIMEOUT_REQUIRED": "लोकतंत्रमें समयबाह्य अपेक्षित है।", "ORIGINATETIMEOUT_REQUIRED": "उत्पति समयबाह्य अपेक्षित है।", "GLOBALINTERVAL_REQUIRED": "ग्लोबल अंतराल की आवश्यकता है।", - "PREFIX_MUST_VALID_PATTERN": "मान्य होना एक मान्य स्वरूप प्रिफिक्स" + "PREFIX_MUST_VALID_PATTERN": "मान्य होना एक मान्य स्वरूप प्रिफिक्स", + "NAME_MUST_VALID_PATTERN": "मान्य होना एक मान्य स्वरूप का नाम", + "MAXCONCURRENTCALLS_REQUIRED": "कॉल्स के लिए मूल्य अधि समवर्ती सूची की आवश्यकता है।", + "CONCURRENTCALLS_REQUIRED": "कॉल्स के लिए मूल्य समवर्ती सूची की आवश्यकता है।", + "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "बिजली के स्तर से अधिक होना चाहिए या के बराबर", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "प्रीडिक्टिव आप्टीमाइजेशन प्रतिशत से अधिक होना चाहिए या के बराबर", + "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "प्रीडिक्टिव अंतराल से अधिक होना चाहिए या के बराबर", + "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "इस से अधिक होना चाहिए या के बराबर अधिकतम समवर्ती कॉल्स", + "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "की उत्पति समयबाह्य से अधिक होना चाहिए या के बराबर", + "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "समयबाह्य कतार से अधिक होना चाहिए या के बराबर", + "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "समयबाह्य एजेंट के समान या से अधिक होनी चाहिए.", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "का पुनः प्रयास करें या के बराबर से अधिक होनी चाहिए.", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "इस समय से अधिक होना चाहिए या के बराबर Wrapup", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "भार बराबर या अधिक होना चाहिए।", + "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "विडव के बराबर अधिकतम करें या अधिक होना चाहिए।", + "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "भीड़ से अधिक होना चाहिए या के बराबर अधिकतम पुन: प्रयास करें.", + "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "भीड-भाड को पुनः समय से अधिक होना चाहिए या के बराबर", + "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "व् यस् त है या के बराबर अधिकतम पुनर्प्रयास से अधिक होनी चाहिए.", + "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "व् यस् त करें या समान समय से अधिक होनी चाहिए.", + "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "इस समस्या का हल नहीं के बराबर अधिकतम करें या अधिक होना चाहिए।", + "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "इस समय कोई उत्तर नहीं के बराबर होना चाहिए या अधिक करें", + "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "समवर्ती कॉल्स से अधिक होना चाहिए या के बराबर", + "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "बिजली के स्तर से कम का होना चाहिए या के बराबर", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "प्रीडिक्टिव आप्टीमाइजेशन प्रतिशतता के समान या कम से कम किया जाना चाहिए।", + "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "प्रीडिक्टिव अंतराल से कम का होना चाहिए या के बराबर", + "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "कॉल्स के लिए बराबर अधिकतम समवर्ती सूची से कम का होना चाहिए या", + "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "समयबाह्य को आरंभ करना चाहिए या कम से कम 3/5", + "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "कम से कम होना चाहिए या के बराबर की कतार समयबाह्य", + "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "विडव के बराबर अधिकतम करें या कम से कम होना चाहिए।", + "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "भीड-भाड कम से कम होना चाहिए या के बराबर अधिकतम पुन: प्रयास करें.", + "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "भीड-भाड कम से कम होना चाहिए या समान समय करें", + "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "व् यस् त है या कम से कम होना के बराबर अधिकतम पुन: प्रयास करें.", + "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "व्यस्त समय कम से कम होना चाहिए या के बराबर का पुनः प्रयास करें", + "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "इस समस्या का हल नहीं के बराबर अधिकतम करें या कम से कम किया जाना चाहिए।", + "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "इस समय कोई उत्तर नहीं के बराबर होना चाहिए या कम करें", + "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "समवर्ती कॉल्स से कम का होना चाहिए या के बराबर" }, "GENERAL": "सामान्य", "TIMEOUT": "समयबाह्य", @@ -143,7 +178,6 @@ "ORIGINATECALLERIDNAME": "आउटगोइंग कॉलर ID नाम", "ORIGINATECALLERIDNUMBER": "आउटगोइंग कॉलर ID संख्या", "ORIGINATETIMEOUT": "कॉल करने के लिए समय सेकंड प्रारंम्भिक बाह्यवर्ती संबंध है। यदि connectin स्थापित नहीं है, कोई उत्तर नहीं होगा स्थिति उत्पन्न करना", - "QUEUETIMEOUT": "कॉल प्रतीक्षा करेंगे कि सेकंड में समय पहले कतार में छोड दिया है।", "GLOBALMAXRETRY": "एक बार की अधिकतम संख्या को देखते हुए इसे बंद करने से पहले संपर्क का नाम", "CONGESTIONMAXRETRY": "संपर्क के लिए एक बार की अधिकतम संख्या को देखते हुए यह कहा जाता है, इसी कारण से भीडभाड विफल बंद", "CONGESTIONRETRYTIME": "उस समय तक पहुंचने के लिए एक संपर्क में मिनट पहले retrying कारण भीड-भाड में विफल", @@ -158,7 +192,9 @@ "PREDICTIVEINTERVAL": "समय के अंतराल में मिनट द्वारा विचार किये जाने की गणना करने की राशि जुटाने के लिए कॉल प्रिडिक्टिव एल्गोरिद्म का पूर्वाभास को ईष्टतम बनाने के लिए ऑप्टिमाइज़ कारक", "AGENTTIMEOUT": "निर्दिष्ट सेकंड्स की संख्या को रिंग एजेंट के डिवाइस पर", "GLOBALINTERVAL": "ग्लोबल समय अंतराल के दौरान dialer कॉल करने की अनुमति है. संपर्क कृपया ध्यान देना बंद करने के लिए, जब आप इस संशोधित फ़ील्ड बदलें. हम आपके लिए उत्तरदायी नहीं होंगे या उन्मुक्ति विफलता का पालन करने के लिए राज्य Autodialer कानूनों और विनियमों में है।", - "PREFIX": "टेलीफोन प्रिफिक्स" + "PREFIX": "टेलीफोन प्रिफिक्स", + "CALLYSQUAREPROJECT": "यदि आप सूची में से एक का चयन IVR परियोजना, कॉल अग्रेषित करने से गीला IVR dialer होगा कि एक कतार है।", + "NAME": "केवल विशिष्ट वर्ण (।_) और नंबर्स, समर्थित" }, "MUSICONHOLD": "संगीत पर रखें.", "ANNOUNCETOAGENT": "घोषणा के एजेंट", @@ -439,7 +475,6 @@ "SCHEDULEDAT": "अनुसूचित पर", "HOPPERBLACKS": "हॉपर Blacklist", "NO_HOPPERBLACK_AVAILABLE": "कोई आइटम उपलब्ध", - "HOPPERFINALS": "हॉपर के फायनल में", "NO_HOPPERFINAL_AVAILABLE": "कोई आइटम उपलब्ध", "HOPPERHISTORIES": "हॉपर इतिहास", "NO_HOPPERHISTORY_AVAILABLE": "कोई आइटम उपलब्ध", @@ -474,6 +509,19 @@ "TOTAL_MANAGED": "कुल प्रबंधन", "GLOBAL_INTERVAL_IS_OVERTIME": "मध्यांतर से (ग्लोबल)", "OPEN": "खुला", - "FRESH": "ताजा" + "FRESH": "ताजा", + "GOTO_QUEUECAMPAIGN": "के लिएभूकम्पनीय वैधशालाओं की कतार अभियान", + "GOTOREALTIME_QUEUECAMPAIGN": "के लिएभूकम्पनीय वैधशालाओं की कतार अभियान", + "GOTO_IVRCAMPAIGN": "के लिएभूकम्पनीय वैधशालाओं Ivr अभियान", + "GOTOREALTIME_IVRCAMPAIGN": "के लिएभूकम्पनीय वैधशालाओं Ivr अभियान", + "ADVANCE": "उन्नत", + "ALWAYS": "हमेशा", + "NEVER": "कभी", + "ONLY_IF_OPEN": "यदि केवल खुले", + "CHECKDUPLICATE": "डुप्लिकेट जांचें", + "PAGE": "पृष्ठ", + "ROWSPERPAGE": "पंक्तियां प्रति पृष्ठ", + "OF": "की", + "CLOSED": "बंद" } } \ No newline at end of file diff --git a/public/app/main/apps/motiondialer/i18n/it.json b/public/app/main/apps/motiondialer/i18n/it.json index d4a0811..51ac8ab 100644 --- a/public/app/main/apps/motiondialer/i18n/it.json +++ b/public/app/main/apps/motiondialer/i18n/it.json @@ -1,5 +1,16 @@ { "MOTIONDIALER": { + "AMD": "Asterisk (AMD) Rilevatore di segreteria telefonica", + "AMDTOTALANALYSISTIME": "Tempo di analisi totale", + "AMDACTIVE": "AMD", + "AMDINITIALSILENCE": "Silenzio iniziale", + "AMDGREETING": "Saluto iniziale", + "AMDAFTERGREETINGSILENCE": "Dopo il saluto del silenzio", + "AMDSILENCETHRESHOLD": "Soglia di silenzio", + "AMDMINWORDLENGTH": "Lunghezza minima parola", + "AMDBETWEENWORDSSILENCE": "Tra le parole silenzio", + "AMDMAXIMUMWORDLENGTH": "Lunghezza massima della parola", + "AMDMAXIMUMNUMBEROFWORDS": "Numero massimo di parole", "MOTIONDIALER": "Motion Bull", "QUEUECAMPAIGNS": "Campagne Coda", "IVRCAMPAIGNS": "Campagne IVR", @@ -58,7 +69,41 @@ "ORIGINATETIMEOUT_REQUIRED": "Provenire Timeout è richiesto", "GLOBALINTERVAL_REQUIRED": "Intervallo globale è richiesto", "PREFIX_MUST_VALID_PATTERN": "Il prefisso deve essere valido un modello valido", - "MAXCONCURRENTCALLS_REQUIRED": "Il Massimo numero di chiamate simultanee è richiesto" + "MAXCONCURRENTCALLS_REQUIRED": "Il Massimo numero di chiamate simultanee è richiesto", + "CONCURRENTCALLS_REQUIRED": "Il Numero di chiamate simultanee è richiesto", + "NAME_MUST_VALID_PATTERN": "Il nome deve essere valido un modello valido", + "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il livello di potenza deve essere superiore o uguale a", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La percentuale di ottimizzazione predittiva deve essere superiore o uguale a", + "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "L' Intervallo Predittivo deve essere superiore o uguale a", + "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il Numero Massimo di chiamate contemporanee deve essere superiore o uguale a", + "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il Timeout di Originate deve essere superiore o uguale a", + "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il Timeout Coda deve essere superiore o uguale a", + "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il Timeout Agente deve essere superiore o uguale a", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il numero di tentativi deve essere superiore o uguale a", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il Wrapup Time deve essere superiore o uguale a", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il Peso deve essere superiore o uguale a", + "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il Massimo numero di tentativi globali deve essere superiore o uguale a", + "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il Massimo numero di tentativi per congestione deve essere superiore o uguale a", + "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il tempo di ripetizione per congestione deve essere superiore o uguale a", + "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il Massimo numero di tentativi per occupato deve essere superiore o uguale a", + "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il tempo di ripetizione per occupato deve essere superiore o uguale a", + "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il Massimo numero di tentativi per nessuna risposta deve essere superiore o uguale a", + "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il tempo di ripetizione per nessuna risposta deve essere superiore o uguale a", + "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il numero di chiamate concorrenti deve essere superiore o uguale a", + "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il livello di potenza deve essere inferiore o uguale a", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La percentuale di ottimizzazione predittiva deve essere inferiore o uguale a", + "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "L' Intervallo Predittivo deve essere inferiore o uguale a", + "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il Numero Massimo di chiamate concorrenti deve essere inferiore o uguale a", + "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il Timeout di Originate deve essere inferiore o uguale a", + "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il Timeout di coda deve essere inferiore o uguale a", + "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il Massimo numero di tentativi globali deve essere inferiore o uguale a", + "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il Massimo numero di tentativi per congestione deve essere inferiore o uguale a", + "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il tempo di ripetizione per congestione deve essere inferiore o uguale a", + "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "BIl Massimo numero di tentativi per occupato deve essere inferiore o uguale a", + "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il tempo di ripetizione per occupato deve essere inferiore o uguale a", + "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il Massimo numero di tentativi per nessuna risposta deve essere inferiore o uguale a", + "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il tempo di ripetizione per nessuna risposta deve essere inferiore o uguale a", + "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il numero di chiamate concorrenti deve essere inferiore o uguale a" }, "GENERAL": "Generale", "TIMEOUT": "Timeout", @@ -69,6 +114,16 @@ "JOINWHENEMPTY": "Entra quando vuota", "LEAVEWHENEMPTY": "Lascia quando vuota", "HELP": { + "AMDMAXIMUMWORDLENGTH": "La durata massima di una singola voce pronunciata è consentita.", + "AMDMINWORDLENGTH": "Durata minima della voce per considerarla come parola", + "AMDSILENCETHRESHOLD": "Se il livello medio di rumore in un campione non raggiunge questo valore, da una scala da 0 a 32767, lo considereremo silenzioso.", + "AMDTOTALANALYSISTIME": "Tempo massimo consentito per l'algoritmo di decidere se l'audio rappresenta un UMANO o una MACCHINA", + "AMDAFTERGREETINGSILENCE": "Silenzio dopo aver rilevato un saluto. Se viene superato, il risultato è l'individuazione come UMANO", + "AMDGREETING": "La lunghezza massima di un saluto. Se viene superato, il risultato è rilevare come MACCHINA.", + "AMDINITIALSILENCE": "Durata massima del silenzio prima del saluto. Se viene superato, il risultato è rilevare come MACCHINA.", + "AMDACTIVE": "Attivare o disattivare AMD. Tentativo di rilevare le segreterie telefoniche.", + "AMDBETWEENWORDSSILENCE": "Durata minima del silenzio dopo una parola per considerare l'audio che segue come una nuova parola", + "AMDMAXIMUMNUMBEROFWORDS": "Numero massimo di parole nel saluto. Se raggiunto, il risultato viene rilevato come MACCHINA", "ACTIVE": "Attivo", "TIMEOUT": "Specifica il numero di secondi per i quali far squillare il dispositivo del membro della coda.", "MAXLENGTH": "Specifica il numero massimo di chiamanti che possono attendere in una coda. Un valore di zero indica un numero illimitato di chiamanti in attesa.", @@ -116,7 +171,7 @@ "ORIGINATECALLERIDNAME": "Id chiamante in uscita nome", "ORIGINATECALLERIDNUMBER": "Id chiamante in uscita numero", "ORIGINATETIMEOUT": "Tempo in secondi per il originari della chiamata in uscita per stabilire la connessione. Se Connection non è stabilita la originano lo stato sarà alcuna risposta.", - "QUEUETIMEOUT": "Il tempo in secondi in cui una chiamata può attendere nella coda prima di esso è sceso", + "QUEUETIMEOUT": "Il tempo in secondi in cui una chiamata può attendere nella coda prima di essere rifiutata. Min 1 and Max 999", "GLOBALMAXRETRY": "Numero massimo di volte in cui un contatto viene chiamato prima di considerare chiusa", "CONGESTIONMAXRETRY": "Numero massimo di volte in cui un contatto non è riuscita per il motivo di congestione viene chiamato prima di considerare chiusa", "CONGESTIONRETRYTIME": "Tempo in minuti prima di riprovare a raggiungere un contatto non riuscita per il motivo di congestione", @@ -131,7 +186,8 @@ "AGENTTIMEOUT": "Consente di specificare il numero di secondi a squillare il dispositivo di un agente.", "GLOBALINTERVAL": "Global intervallo di tempo durante il quale il generatore di chiamata è consentito di chiamare i contatti. Si prega di prestare particolare attenzione quando si modifica questo campo. Noi non sarà responsabile o responsabile per la mancata osservanza della membro Autodialer leggi e regolamenti.", "PREFIX": "Prefisso telefonico", - "NAME": "Sono supportati solo numeri, lettere e caratteri specifici (._)" + "NAME": "Sono supportati solo numeri, lettere e caratteri specifici (._)", + "CALLYSQUAREPROJECT": "Se si seleziona un servizio IVR progetto dall'elenco, il generatore di chiamata per inoltrare la chiamata a un servizio IVR prima della messa in una coda." }, "MUSICONHOLD": "Musica di attesa", "ANNOUNCETOAGENT": "Annuncia all' Agente", @@ -401,15 +457,15 @@ "CALLYSQUAREPROJECT": "Calmente progetto quadrato", "RETRYANDFREQUENCY": "Le impostazioni delle richiamate", "GLOBAL": "Global", - "GLOBALMAXRETRY": "Max tentativi", - "CONGESTION": "La congestione", - "CONGESTIONMAXRETRY": "Max tentativi", - "CONGESTIONRETRYTIME": "Tempo di ripetizione [min]", - "BUSYMAXRETRY": "Max tentativi", - "BUSYRETRYTIME": "Tempo di ripetizione [min]", + "GLOBALMAXRETRY": "Max tentativi globali", + "CONGESTION": "Congestione", + "CONGESTIONMAXRETRY": "Max tentativi per congestione", + "CONGESTIONRETRYTIME": "Tempo di ripetizione per congestione[min]", + "BUSYMAXRETRY": "Max tentativi per occupato", + "BUSYRETRYTIME": "Tempo di ripetizione per occupato[min]", "NOANSWER": "Nessuna risposta", - "NOANSWERMAXRETRY": "Max tentativi", - "NOANSWERRETRYTIME": "Tempo di ripetizione [min]", + "NOANSWERMAXRETRY": "Max tentativi per mancata risposta", + "NOANSWERRETRYTIME": "Tempo di ripetizione per mancata risposta[min]", "QUEUE_PARAMS": "I parametri della coda", "ORIGINATED": "Originato", "MESSAGE": "Messaggio", @@ -441,11 +497,11 @@ "PREDICTIVEINTERVAL": "Intervallo di previsione", "AVAILABLE_CONTACTS_FINISHED": "Disponibili Contatti terminati", "SCHEDULEDAT": "Pianificato a", - "HOPPERBLACKS": "Tramoggia di Blacklist", + "HOPPERBLACKS": "Hopper di Blacklist", "NO_HOPPERBLACK_AVAILABLE": "Nessun elemento disponibile", - "HOPPERFINALS": "Finale della tramoggia", + "HOPPERFINALS": "Hopper Finale", "NO_HOPPERFINAL_AVAILABLE": "Nessun elemento disponibile", - "HOPPERHISTORIES": "Storia della tramoggia", + "HOPPERHISTORIES": "Storico chiamate", "NO_HOPPERHISTORY_AVAILABLE": "Nessun elemento disponibile", "DELETE_HOPPERHISTORY": "Elimina", "DELETE_HOPPERFINAL": "Elimina", @@ -454,10 +510,10 @@ "RESPONSETIME": "Tempo di risposta", "ENDTIME": "Ora di fine", "STATUS": "Lo stato", - "HOPPERS": "Tramoggia", + "HOPPERS": "Hopper", "NO_HOPPER_AVAILABLE": "Nessun elemento disponibile", - "EDIT_HOPPER": "Modifica di tramoggia", - "DELETE_HOPPER": "Eliminare la tramoggia", + "EDIT_HOPPER": "Modifica di Hopper", + "DELETE_HOPPER": "Eliminare l'Hopper", "AGENTTIMEOUT": "Timeout agente", "DISPOSITION": "Disposizione", "REDIRECT_TO_NUMBER": "Reindirizzare a un numero", @@ -481,6 +537,16 @@ "GLOBAL_INTERVAL_IS_OVERTIME": "Fuori intervallo (globale)", "PAGE": "Pagina", "ROWSPERPAGE": "Righe per pagina", - "OF": "Di" + "OF": "di", + "GOTO_QUEUECAMPAIGN": "Andare alla coda in tempo reale le campagne", + "GOTOREALTIME_QUEUECAMPAIGN": "Andare alla coda in tempo reale le campagne", + "GOTO_IVRCAMPAIGN": "Andare a Realtime campagne IVR", + "GOTOREALTIME_IVRCAMPAIGN": "Andare a Realtime campagne IVR", + "ADVANCE": "Advanced", + "ALWAYS": "Sempre", + "NEVER": "Mai", + "ONLY_IF_OPEN": "Solo se aperto", + "CHECKDUPLICATE": "Controllare duplicato", + "CLOSED": "Chiuso" } } \ No newline at end of file diff --git a/public/app/main/apps/motiondialer/i18n/ja.json b/public/app/main/apps/motiondialer/i18n/ja.json index 5e70176..af45aa2 100644 --- a/public/app/main/apps/motiondialer/i18n/ja.json +++ b/public/app/main/apps/motiondialer/i18n/ja.json @@ -86,7 +86,42 @@ "QUEUETIMEOUT_REQUIRED": "キューのタイムアウトが必要", "ORIGINATETIMEOUT_REQUIRED": "発信タイムアウトが必要", "GLOBALINTERVAL_REQUIRED": "グローバルインターバルが必要です", - "PREFIX_MUST_VALID_PATTERN": "接頭辞の有効なパターンが有効である必要があり" + "PREFIX_MUST_VALID_PATTERN": "接頭辞の有効なパターンが有効である必要があり", + "NAME_MUST_VALID_PATTERN": "名前は、有効なパターンが有効である必要があり", + "MAXCONCURRENTCALLS_REQUIRED": "最大同時コールの値が必要です", + "CONCURRENTCALLS_REQUIRED": "同時コールの値が必要です", + "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "電力レベルは以上である必要があります", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "予測最適化の割合は以上である必要があります", + "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "予測間隔の値より大きいかまたは等しい必要があり", + "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "最大同時通話数は以上である必要があります", + "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "は、発信側のタイムアウトの値より大きいかまたは等しい必要があり", + "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "キューのタイムアウトの値より大きいかまたは等しい必要があり", + "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "エージェントのタイムアウトの値より大きいかまたは等しい必要があり", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "再試行の値より大きいかまたは等しい必要があり", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "解決時間は以上である必要があります", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "重量は以上である必要があります", + "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "グローバル最大再試行の値より大きいかまたは等しい必要があり", + "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "の輻輳最大再試行の値より大きいかまたは等しい必要があり", + "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "輻輳の再試行時間は以上である必要があります", + "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "使用中の最大再試行回数の値より大きいかまたは等しい必要があり", + "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "使用中の再試行時間は以上である必要があります", + "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "No 回答最大再試行の値より大きいかまたは等しい必要があり", + "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "No 回答の再試行時間は以上である必要があります", + "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "同時コールは以上である必要があります", + "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "電力レベルは以下である必要があります", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "予測最適化率は以下である必要があります", + "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "予測間隔は以下である必要があります", + "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "最大同時通話数は以下である必要があります", + "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "は、発信側のタイムアウトは以下である必要があります", + "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "キューのタイムアウトは以下である必要があります", + "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "グローバル最大再試行は以下である必要があります", + "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "の輻輳最大再試行は以下である必要があります", + "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "輻輳の再試行時間は以下である必要があります", + "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "使用中の最大再試行回数は以下である必要があります", + "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "使用中の再試行時間は以下である必要があります", + "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "No 回答最大再試行は以下である必要があります", + "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "No 回答の再試行時間は以下である必要があります", + "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "同時コールは以下である必要があります" }, "GENERAL": "一般的な", "TIMEOUT": "タイムアウト", @@ -143,7 +178,6 @@ "ORIGINATECALLERIDNAME": "発信コールの発信者 ID 名", "ORIGINATECALLERIDNUMBER": "発信コールの発信者 ID 番号", "ORIGINATETIMEOUT": "元のアウトバウンドコールを秒単位で指定します。接続を確立するために、しています。 は、接続が確立されていない場合は、発信と受信のステータスは No と答えます。", - "QUEUETIMEOUT": "がドロップされる前に、キュー内のコールが待機する時間を秒数で指定します", "GLOBALMAXRETRY": "閉じているかを検討する前に、連絡先が呼び出された回数の最大数", "CONGESTIONMAXRETRY": "最大回数が閉鎖を検討しているが発生する前に輻輳を何らかの理由で失敗しました連絡先が呼び出され", "CONGESTIONRETRYTIME": "輻輳に何らかの理由で障害が発生し、連絡先への連絡を再試行するまでの分単位の時間", @@ -158,7 +192,9 @@ "PREDICTIVEINTERVAL": "分単位で予測アルゴリズムを使用してへのコール量の予測最適化係数の最適化を生成するを計算するために考慮される時間間隔", "AGENTTIMEOUT": "エージェントのデバイスにリングの秒数を指定します。", "GLOBALINTERVAL": "ダイアラーの連絡先にコールが許可されて中にグローバルな時間間隔。 このフィールドを変更したときに、細心の注意を払ってください。 私たちは一切の責任は、障害が発生した状態の電話勧誘販売の法律および規制を遵守することに責任を負いません。", - "PREFIX": "電話プレフィックス" + "PREFIX": "電話プレフィックス", + "CALLYSQUAREPROJECT": "リストから、 IVR のプロジェクトを選択した場合は、ダイヤラはキューに置くことにする前に、 IVR にコールを転送します。ます。", + "NAME": "数字、文字、およびのみ特定の文字 ( 。 ) はサポートされています" }, "MUSICONHOLD": "保留中の音楽", "ANNOUNCETOAGENT": "エージェントを発表", @@ -474,6 +510,19 @@ "TOTAL_MANAGED": "管理対象の合計", "GLOBAL_INTERVAL_IS_OVERTIME": "アウトのインターバル ( グローバル )", "OPEN": "開く", - "FRESH": "新鮮な" + "FRESH": "新鮮な", + "GOTO_QUEUECAMPAIGN": "リアルタイムキューキャンペーンを参照してください", + "GOTOREALTIME_QUEUECAMPAIGN": "リアルタイムキューキャンペーンを参照してください", + "GOTO_IVRCAMPAIGN": "Ivr リアルタイムキャンペーンを参照してください", + "GOTOREALTIME_IVRCAMPAIGN": "Ivr リアルタイムキャンペーンを参照してください", + "ADVANCE": "高度な", + "ALWAYS": "常に", + "NEVER": "決して", + "ONLY_IF_OPEN": "開いている場合にのみ", + "CHECKDUPLICATE": "重複のチェック", + "PAGE": "ページ", + "ROWSPERPAGE": "ページあたりの行数", + "OF": "の", + "CLOSED": "閉じている" } } \ No newline at end of file diff --git a/public/app/main/apps/motiondialer/i18n/ko.json b/public/app/main/apps/motiondialer/i18n/ko.json index 21c69ed..48a6b18 100644 --- a/public/app/main/apps/motiondialer/i18n/ko.json +++ b/public/app/main/apps/motiondialer/i18n/ko.json @@ -86,7 +86,42 @@ "QUEUETIMEOUT_REQUIRED": "대기열 시간 필요", "ORIGINATETIMEOUT_REQUIRED": "시작 시간 필요", "GLOBALINTERVAL_REQUIRED": "글로벌 간격이 필요합니다.", - "PREFIX_MUST_VALID_PATTERN": "접두사 유효한 유효한 패턴 합니다." + "PREFIX_MUST_VALID_PATTERN": "접두사 유효한 유효한 패턴 합니다.", + "NAME_MUST_VALID_PATTERN": "이름에 유효한 유효한 패턴 합니다.", + "MAXCONCURRENTCALLS_REQUIRED": "최대 동시 통화 값이 필요합니다.", + "CONCURRENTCALLS_REQUIRED": "동시 통화의 값이 필요합니다", + "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "전원 수준 이상이어야 합니다.", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "예상 최적화 비율이 크거나 같아야 합니다.", + "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "예상 간격 같거나 커야 합니다.", + "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "최대 동시 통화 수보다 크거나 같아야 합니다.", + "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "생성합니다. 제한 시간보다 크거나 같아야 합니다.", + "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "대기열 시간 제한 값보다 크거나 같아야 합니다.", + "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "상담원은 제한 시간보다 크거나 같아야 합니다.", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "재시도 같거나 커야 합니다.", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "이 요약 시간 이상이어야 합니다.", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "무게가 같거나 커야 합니다.", + "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "세계 최대 재시도 같거나 커야 합니다.", + "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "정체 최대 재시도 같거나 커야 합니다.", + "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "정체 재시도 시간 이상이어야 합니다.", + "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "성수기 최대 재시도 같거나 커야 합니다.", + "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "분주한 재시도 시간 이상이어야 합니다.", + "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "대답은 최대 재시도 불필요 같거나 커야 합니다.", + "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "대답은 재시도 불필요 시간보다 크거나 같아야 합니다.", + "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "동시 통화 수보다 크거나 같아야 합니다.", + "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "전원 수준 이하여야 합니다.", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "예상 최적화 비율 이하여야 합니다.", + "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "예상 간격 같거나 작아야 합니다.", + "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "최대 동시 통화 수보다 작거나 같아야 합니다.", + "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "생성합니다. Timeout 같거나 작아야 합니다.", + "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "대기열 시간 제한 값보다 작거나 같아야 합니다.", + "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "세계 최대 재시도 같거나 작아야 합니다.", + "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "정체 최대 재시도 같거나 작아야 합니다.", + "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "정체 재시도 시간 같거나 작아야 합니다.", + "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "성수기 최대 재시도 같거나 작아야 합니다.", + "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "분주한 재시도 시간 같거나 작아야 합니다.", + "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "대답은 최대 재시도 불필요 같거나 작아야 합니다.", + "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "대답은 재시도 불필요 시간보다 작거나 같아야 합니다.", + "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "동시 통화 수보다 작거나 같아야 합니다." }, "GENERAL": "일반", "TIMEOUT": "시간 초과", @@ -143,7 +178,6 @@ "ORIGINATECALLERIDNAME": "발신 발신자 ID 이름", "ORIGINATECALLERIDNUMBER": "발신 발신자 ID 번호", "ORIGINATETIMEOUT": "원본 아웃바운드 통화에 대해 몇 초 내로 연결할 때. 이 connectin 설정되지 않을 경우 발생하는 상태 응답 없을 것입니다.", - "QUEUETIMEOUT": "전송이 끊기면 전까지 콜이 대기할 시간(초)입니다.", "GLOBALMAXRETRY": "전지의 닫힌 고려하기 전에 먼저 연락처를 호출할 최대 수", "CONGESTIONMAXRETRY": "최대 횟수를 닫고서 고려하기 전에 먼저 혼잡을 이유로 실패한 연락처 호출됩니다", "CONGESTIONRETRYTIME": "정체를 이유로 실패 연락처로 다시 시도하기 전에 분 단위 시간", @@ -158,7 +192,9 @@ "PREDICTIVEINTERVAL": "몇 분의 예측 알고리즘에서 통화 금액 예상 최적화 요소 최적화를 위한 Generate를 계산하는 것으로 간주할 수 시간 간격", "AGENTTIMEOUT": "몇 초 동안 상담원의 장치를 벨소리 지정합니다.", "GLOBALINTERVAL": "다이얼러 낮추는 전화를 연락처 허용된 글로벌 시간 간격. 이 필드는 수정할 때 주의 깊게 봐주십시오. 우리는 책임 있는 또는 상태 autodialer 법과 규정을 준수하는 실패에 대한 책임을 지지 않습니다.", - "PREFIX": "전화 번호를" + "PREFIX": "전화 번호를", + "CALLYSQUAREPROJECT": "목록에서 IVR 프로젝트를 선택하면 다이얼러에서 대기열 내놓기 전에 IVR 통화를 착신 전환할 것입니다.", + "NAME": "숫자와 글자 및 특정 문자(._) 지원됩니다." }, "MUSICONHOLD": "음악 대기", "ANNOUNCETOAGENT": "상담원 알림", @@ -474,6 +510,19 @@ "TOTAL_MANAGED": "전체 관리", "GLOBAL_INTERVAL_IS_OVERTIME": "간격(글로벌)", "OPEN": "열기", - "FRESH": "신선한" + "FRESH": "신선한", + "GOTO_QUEUECAMPAIGN": "실시간 대기열 캠페인 이동", + "GOTOREALTIME_QUEUECAMPAIGN": "실시간 대기열 캠페인 이동", + "GOTO_IVRCAMPAIGN": "실시간 Ivr 캠페인 이동", + "GOTOREALTIME_IVRCAMPAIGN": "실시간 Ivr 캠페인 이동", + "ADVANCE": "고급", + "ALWAYS": "항상", + "NEVER": "절대", + "ONLY_IF_OPEN": "모르는 사람이 보낸 메일은 열지 말 전용", + "CHECKDUPLICATE": "중복 확인", + "PAGE": "페이지", + "ROWSPERPAGE": "페이지 당 행", + "OF": "중", + "CLOSED": "종료됨" } } \ No newline at end of file diff --git a/public/app/main/apps/motiondialer/i18n/nl.json b/public/app/main/apps/motiondialer/i18n/nl.json index 565ac3c..74eca8f 100644 --- a/public/app/main/apps/motiondialer/i18n/nl.json +++ b/public/app/main/apps/motiondialer/i18n/nl.json @@ -86,7 +86,42 @@ "QUEUETIMEOUT_REQUIRED": "Wachtrij Timeout is vereist", "ORIGINATETIMEOUT_REQUIRED": "Timeout afkomstig is vereist", "GLOBALINTERVAL_REQUIRED": "Wereldwijde interval nodig is", - "PREFIX_MUST_VALID_PATTERN": "Voorvoegsel moet geldig een geldig patroon" + "PREFIX_MUST_VALID_PATTERN": "Voorvoegsel moet geldig een geldig patroon", + "NAME_MUST_VALID_PATTERN": "Naam geldig moet zijn een geldig patroon", + "MAXCONCURRENTCALLS_REQUIRED": "De waarde voor Max gelijktijdige gesprekken is vereist", + "CONCURRENTCALLS_REQUIRED": "De waarde voor Maximumaantal gelijktijdige gesprekken is vereist", + "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Het vermogensniveau moet groter zijn dan of gelijk aan", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De voorspellende optimalisatie percentage moet hoger zijn dan of gelijk aan", + "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De voorspellende Interval moet groter zijn dan of gelijk aan", + "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De Max gelijktijdige gesprekken moet groter zijn dan of gelijk aan", + "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De Oorsprong Timeout moet groter zijn dan of gelijk aan", + "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De wachtrij Timeout moet groter zijn dan of gelijk aan", + "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De Out Agent moet groter zijn dan of gelijk aan", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De strategie \"retry\" moet groter zijn dan of gelijk aan", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De afrondingstijd moet groter zijn dan of gelijk aan", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Het gewicht moet groter zijn dan of gelijk aan", + "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De wereldwijde Max Retry moet groter zijn dan of gelijk aan", + "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De Congestion Max Retry moet groter zijn dan of gelijk aan", + "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De Congestion Retry Time moet groter zijn dan of gelijk aan", + "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Het drukke Max Retry moet groter zijn dan of gelijk aan", + "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De drukke tijd nieuwe poging moet groter zijn dan of gelijk aan", + "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Het Antwoord Nee Max Retry moet groter zijn dan of gelijk aan", + "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Het Antwoord Nee Probeer tijd moet groter zijn dan of gelijk aan", + "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Het maximumaantal gelijktijdige gesprekken moet groter zijn dan of gelijk aan", + "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Het vermogensniveau moet kleiner dan of gelijk aan", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De voorspellende optimalisatie percentage moet kleiner dan of gelijk aan", + "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De voorspellende Interval moet kleiner dan of gelijk aan", + "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De Max gelijktijdige gesprekken moet kleiner dan of gelijk aan", + "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De Oorsprong Timeout moet kleiner dan of gelijk aan", + "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De wachtrij Timeout moet kleiner dan of gelijk aan", + "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De wereldwijde Max Retry moet kleiner dan of gelijk aan", + "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De Congestion Max Retry moet kleiner dan of gelijk aan", + "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De Congestion opnieuw moet minder dan of gelijk aan", + "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Het drukke Max Retry moet kleiner dan of gelijk aan", + "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De drukke tijd nieuwe poging moet kleiner dan of gelijk aan", + "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Het Antwoord Nee Max Retry moet kleiner dan of gelijk aan", + "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Het Antwoord Nee Probeer tijd moet kleiner dan of gelijk aan", + "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Het maximumaantal gelijktijdige gesprekken moet kleiner dan of gelijk aan" }, "GENERAL": "Algemeen", "TIMEOUT": "Timeout", @@ -143,7 +178,6 @@ "ORIGINATECALLERIDNAME": "Uitgaande Beller-ID naam", "ORIGINATECALLERIDNUMBER": "Uitgaande Beller-ID-nummer", "ORIGINATETIMEOUT": "Tijd in seconden voor de oorsprong uitgaand gesprek om verbinding te maken. Als de aansluiting niet is gevestigd, wordt de oorsprong staat wordt niet beantwoord.", - "QUEUETIMEOUT": "Tijd in seconden dat een oproep in de wachtrij wordt geplaatst voordat het wordt verbroken", "GLOBALMAXRETRY": "Maximum aantal keren dat een contact wordt alvorens zij gesloten", "CONGESTIONMAXRETRY": "Maximumaantal keren mislukte contact voor congestie reden heet alvorens zij gesloten", "CONGESTIONRETRYTIME": "Tijd in minuten voordat u het opnieuw probeert om een contactpersoon mislukt bij congestie reden", @@ -158,7 +192,9 @@ "PREDICTIVEINTERVAL": "Tijdsinterval in minuten worden onderzocht door de voorspellende algoritme voor het berekenen van het bedrag van de gesprekken te genereren voor het optimaliseren van de voorspellende optimalisatie factor", "AGENTTIMEOUT": "Geeft het aantal seconden aan het apparaat van een agent.", "GLOBALINTERVAL": "Wereldwijde tijdsinterval waarin de beller is toegestaan om contactpersonen te bellen. Aandachtig wanneer u dit veld aanpassen. Wij zijn niet verantwoordelijk of aansprakelijk voor het niet nakomen van staat verbinden met wetten en regels.", - "PREFIX": "Telefoon prefix" + "PREFIX": "Telefoon prefix", + "CALLYSQUAREPROJECT": "Als u een IVR-project uit de lijst, de beller stuurt de oproep naar de IVR voordat het systeem in een wachtrij.", + "NAME": "Alleen cijfers, letters en speciale tekens (_) worden ondersteund" }, "MUSICONHOLD": "Wachtmuziek", "ANNOUNCETOAGENT": "Kondig Agent", @@ -474,6 +510,19 @@ "TOTAL_MANAGED": "Totale beheerde", "GLOBAL_INTERVAL_IS_OVERTIME": "Uit Interval (globaal)", "OPEN": "Open", - "FRESH": "Vers" + "FRESH": "Vers", + "GOTO_QUEUECAMPAIGN": "Ga naar Realtime Wachtrij campagnes", + "GOTOREALTIME_QUEUECAMPAIGN": "Ga naar Realtime Wachtrij campagnes", + "GOTO_IVRCAMPAIGN": "Ga naar Realtime Ivr campagnes", + "GOTOREALTIME_IVRCAMPAIGN": "Ga naar Realtime Ivr campagnes", + "ADVANCE": "Geavanceerd", + "ALWAYS": "Altijd", + "NEVER": "Nooit", + "ONLY_IF_OPEN": "Alleen als open", + "CHECKDUPLICATE": "Controleer dupliceren", + "PAGE": "Pagina", + "ROWSPERPAGE": "Rijen per pagina", + "OF": "Van", + "CLOSED": "Gesloten" } } \ No newline at end of file diff --git a/public/app/main/apps/motiondialer/i18n/no.json b/public/app/main/apps/motiondialer/i18n/no.json index 21b1275..2ebf255 100644 --- a/public/app/main/apps/motiondialer/i18n/no.json +++ b/public/app/main/apps/motiondialer/i18n/no.json @@ -86,7 +86,42 @@ "QUEUETIMEOUT_REQUIRED": "Køen tidsavbrudd er nødvendig", "ORIGINATETIMEOUT_REQUIRED": "Stamme tidsavbrudd er nødvendig", "GLOBALINTERVAL_REQUIRED": "Global intervall er nødvendig", - "PREFIX_MUST_VALID_PATTERN": "Prefiks mÃ¥ være gyldig en gyldig mønster" + "PREFIX_MUST_VALID_PATTERN": "Prefiks mÃ¥ være gyldig en gyldig mønster", + "NAME_MUST_VALID_PATTERN": "Navnet mÃ¥ være gyldig en gyldig mønster", + "MAXCONCURRENTCALLS_REQUIRED": "Verdien for Maks samtidige samtaler er nødvendig", + "CONCURRENTCALLS_REQUIRED": "Verdien for samtidige samtaler er nødvendig", + "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Power nivÃ¥ mÃ¥ være større enn eller lik", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den prediktive optimalisering prosent mÃ¥ være større enn eller lik", + "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den beregnede intervallet mÃ¥ være større enn eller lik", + "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Maks samtidige samtaler mÃ¥ være større enn eller lik", + "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Det kommer Timeout mÃ¥ være større enn eller lik", + "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Køen Timeout mÃ¥ være større enn eller lik", + "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Agenten Timeout mÃ¥ være større enn eller lik", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Prøv pÃ¥ mÃ¥ være større enn eller lik", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Det Wrapup tid mÃ¥ være større enn eller lik", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Vekten mÃ¥ være større enn eller lik", + "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den globale Max Prøv mÃ¥ være større enn eller lik", + "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Bompengeringen Max Prøv mÃ¥ være større enn eller lik", + "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Bompengeringen Prøv tid mÃ¥ være større enn eller lik", + "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Det travle Max Prøv mÃ¥ være større enn eller lik", + "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Det travle prøv tid mÃ¥ være større enn eller lik", + "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Det ingen svar Max Prøv mÃ¥ være større enn eller lik", + "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Det ingen svar prøv tid mÃ¥ være større enn eller lik", + "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den samtidige samtaler mÃ¥ være større enn eller lik", + "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Power nivÃ¥ mÃ¥ være mindre enn eller lik", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Den prediktive optimalisering prosent mÃ¥ være mindre enn eller lik", + "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Den beregnede intervallet mÃ¥ være mindre enn eller lik", + "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Maks samtidige samtaler mÃ¥ være mindre enn eller lik", + "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Det kommer Timeout mÃ¥ være mindre enn eller lik", + "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Køen Timeout mÃ¥ være mindre enn eller lik", + "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Den globale Max Prøv mÃ¥ være mindre enn eller lik", + "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Bompengeringen Max Prøv mÃ¥ være mindre enn eller lik", + "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Bompengeringen Prøv tid mÃ¥ være mindre enn eller lik", + "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Det travle Max Prøv mÃ¥ være mindre enn eller lik", + "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Det travle prøv tid mÃ¥ være mindre enn eller lik", + "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Det ingen svar Max Prøv mÃ¥ være mindre enn eller lik", + "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Det ingen svar prøv tid mÃ¥ være mindre enn eller lik", + "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Den samtidige samtaler mÃ¥ være mindre enn eller lik" }, "GENERAL": "Generelt", "TIMEOUT": "Tidsavbrudd", @@ -143,7 +178,6 @@ "ORIGINATECALLERIDNAME": "UtgÃ¥ende anroper-ID-navn", "ORIGINATECALLERIDNUMBER": "UtgÃ¥ende anroper-ID-nummer", "ORIGINATETIMEOUT": "Tid i sekunder for den opprinnelige utgÃ¥ende anrop til Ã¥ opprette forbindelse. Hvis connectin er ikke etablert, kommer status vil bli ingen svar.", - "QUEUETIMEOUT": "Tiden i sekunder som en samtale vil vente i køen før den slippes", "GLOBALMAXRETRY": "Maksimalt antall ganger en kontakt er kalt før man vurderer den lukket", "CONGESTIONMAXRETRY": "Maksimalt antall ganger en mislykket kontakt for flaskehalser grunn kalles før man vurderer den lukket", "CONGESTIONRETRYTIME": "Tid i minutter før du prøver Ã¥ nÃ¥ en kontakt mislyktes for flaskehalser Ã¥rsak", @@ -158,7 +192,9 @@ "PREDICTIVEINTERVAL": "Tidsintervall i minutter for Ã¥ bli vurdert av prediktiv algoritme til Ã¥ beregne mengden av samtaler til Ã¥ generere for optimering av prediktiv optimalisering faktor", "AGENTTIMEOUT": "Angir antall sekunder til ringen en agent-enheten.", "GLOBALINTERVAL": "Global tidsintervallet som alarmsentralen er tillatt Ã¥ ringe kontakter. Vær nøye nÃ¥r du endrer dette feltet. Vi vil ikke være ansvarlig eller erstatningsansvarlig for din manglende samsvar med statlige Autodialer lover og forskrifter.", - "PREFIX": "Telefon prefiks" + "PREFIX": "Telefon prefiks", + "CALLYSQUAREPROJECT": "Hvis du velger en IVR-prosjekt fra listen, oppringingen vil videresende samtalen til IVR før du setter den i en kø.", + "NAME": "Bare tall, bokstaver og bestemte tegn (._) støttes" }, "MUSICONHOLD": "Musikk pÃ¥ vent", "ANNOUNCETOAGENT": "Annonsere til agent", @@ -474,6 +510,19 @@ "TOTAL_MANAGED": "Totalt klarte", "GLOBAL_INTERVAL_IS_OVERTIME": "Ut av intervall (Global)", "OPEN": "Åpne", - "FRESH": "Fersk" + "FRESH": "Fersk", + "GOTO_QUEUECAMPAIGN": "GÃ¥ til Realtime kø kampanjer", + "GOTOREALTIME_QUEUECAMPAIGN": "GÃ¥ til Realtime kø kampanjer", + "GOTO_IVRCAMPAIGN": "GÃ¥ til Realtime Ivr kampanjer", + "GOTOREALTIME_IVRCAMPAIGN": "GÃ¥ til Realtime Ivr kampanjer", + "ADVANCE": "Avansert", + "ALWAYS": "Alltid", + "NEVER": "Aldri", + "ONLY_IF_OPEN": "Bare hvis Ã¥pen", + "CHECKDUPLICATE": "Kontroller duplikater", + "PAGE": "Siden", + "ROWSPERPAGE": "Linjer per side", + "OF": "Av", + "CLOSED": "Lukket" } } \ No newline at end of file diff --git a/public/app/main/apps/motiondialer/i18n/pt-PT.json b/public/app/main/apps/motiondialer/i18n/pt-PT.json index f8661fe..ec576e5 100644 --- a/public/app/main/apps/motiondialer/i18n/pt-PT.json +++ b/public/app/main/apps/motiondialer/i18n/pt-PT.json @@ -86,7 +86,42 @@ "QUEUETIMEOUT_REQUIRED": "Fila de espera é necessário", "ORIGINATETIMEOUT_REQUIRED": "Tempo limite de origem é necessária", "GLOBALINTERVAL_REQUIRED": "Intervalo global é necessária", - "PREFIX_MUST_VALID_PATTERN": "O prefixo deve ser válido um padrão válido" + "PREFIX_MUST_VALID_PATTERN": "O prefixo deve ser válido um padrão válido", + "NAME_MUST_VALID_PATTERN": "O nome deve ser válido um padrão válido", + "MAXCONCURRENTCALLS_REQUIRED": "O valor para o máximo de chamadas simultâneas é necessária", + "CONCURRENTCALLS_REQUIRED": "O valor de chamadas simultâneas é necessária", + "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O nível de potência deve ser maior do que ou igual a", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor preditivo do percentual de otimização deve ser maior do que ou igual a", + "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor preditivo do intervalo deve ser maior do que ou igual a", + "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O máximo de chamadas simultâneas deve ser maior do que ou igual a", + "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O tempo limite de origem deve ser maior do que ou igual a", + "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O Tempo Limite de fila deve ser maior do que ou igual a", + "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O tempo limite do agente deve ser maior do que ou igual a", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "A repetição deve ser maior do que ou igual a", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O tempo de finalização deve ser maior do que ou igual a", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O peso deve ser maior do que ou igual a", + "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O Global Máximo de tentativas deve ser maior do que ou igual a", + "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "A congestão de Máximo de tentativas deve ser maior do que ou igual a", + "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O tempo de tentativa de congestionamento deve ser maior do que ou igual a", + "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O Máximo de tentativas de ocupado deve ser maior do que ou igual a", + "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O tempo de tentativa de ocupado deve ser maior do que ou igual a", + "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O Máximo de tentativas de resposta não deve ser maior do que ou igual a", + "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O tempo de tentativa de resposta não deve ser maior do que ou igual a", + "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "As chamadas simultâneas deve ser maior do que ou igual a", + "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O nível de potência deve ser menor que ou igual a", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor preditivo do percentual de otimização deve ser menor que ou igual a", + "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor preditivo do intervalo deve ser menor que ou igual a", + "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O máximo de chamadas simultâneas deve ser menor que ou igual a", + "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O tempo limite de origem deve ser menor que ou igual a", + "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "A fila de espera deverá ser inferior ou igual a", + "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O Global Máximo de tentativas deve ser menor que ou igual a", + "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "A congestão de Máximo de tentativas deve ser menor que ou igual a", + "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O tempo de tentativa de congestionamento deve ser menor que ou igual a", + "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O Máximo de tentativas de ocupado deve ser menor que ou igual a", + "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O tempo de tentativa de ocupado deve ser menor que ou igual a", + "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O Máximo de tentativas de resposta não deve ser menor que ou igual a", + "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O tempo de tentativa de resposta não deve ser menor que ou igual a", + "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "As chamadas simultâneas deve ser menor que ou igual a" }, "GENERAL": "Geral", "TIMEOUT": "Timeout", @@ -143,7 +178,6 @@ "ORIGINATECALLERIDNAME": "Nome da ID de chamador de saída", "ORIGINATECALLERIDNUMBER": "Número de ID de chamador de saída", "ORIGINATETIMEOUT": "Tempo em segundos para o originário da chamada de saída para estabelecer a conexão. Se o Connection não está estabelecida a origem status será sem resposta.", - "QUEUETIMEOUT": "Tempo em segundos que uma chamada aguarde na fila antes que ele é eliminado", "GLOBALMAXRETRY": "Número máximo de vezes em que um contato será chamado antes de considerar encerrada", "CONGESTIONMAXRETRY": "Número máximo de vezes que uma falha de contato de congestionamento razão é chamado antes de considerar encerrada", "CONGESTIONRETRYTIME": "Tempo em minutos antes de tentar chegar a um contato falhou por motivo de congestionamento", @@ -158,7 +192,9 @@ "PREDICTIVEINTERVAL": "Intervalo de tempo em minutos para ser considerado pelo algoritmo preditivo para calcular a quantidade de chamadas para gerar para otimizar o valor preditivo do fator de otimização", "AGENTTIMEOUT": "Especifica o número de segundos para tocar um dispositivo do agente.", "GLOBALINTERVAL": "Global intervalo de tempo durante o qual o discador é permitido para chamar contatos. Por favor preste atenção quando você modificar este campo. Nós não será responsável ou responsáveis por sua falha em cumprir com as leis e regulamentos do Estado Autodialer.", - "PREFIX": "Prefixo de telefone" + "PREFIX": "Prefixo de telefone", + "CALLYSQUAREPROJECT": "Se você selecionar um IVR projecto da lista, o discador irá encaminhar a chamada para o RVI antes de colocá-lo em uma fila.", + "NAME": "Apenas números, letras e caracteres específicos (._) são suportados" }, "MUSICONHOLD": "Música em espera", "ANNOUNCETOAGENT": "Anunciar para agente", @@ -474,6 +510,19 @@ "TOTAL_MANAGED": "Valor total gerido", "GLOBAL_INTERVAL_IS_OVERTIME": "Fora do Intervalo (Global)", "OPEN": "Abra", - "FRESH": "Carnes frescas" + "FRESH": "Carnes frescas", + "GOTO_QUEUECAMPAIGN": "Vá para a fila de campanhas em tempo real", + "GOTOREALTIME_QUEUECAMPAIGN": "Vá para a fila de campanhas em tempo real", + "GOTO_IVRCAMPAIGN": "Vá para campanhas de URA em tempo real", + "GOTOREALTIME_IVRCAMPAIGN": "Vá para campanhas de URA em tempo real", + "ADVANCE": "Avançado", + "ALWAYS": "Sempre", + "NEVER": "Nunca", + "ONLY_IF_OPEN": "Somente quando se abre", + "CHECKDUPLICATE": "Verificar Duplicado", + "PAGE": "Página", + "ROWSPERPAGE": "Linhas por página", + "OF": "De", + "CLOSED": "Fechado" } } \ No newline at end of file diff --git a/public/app/main/apps/motiondialer/i18n/ru.json b/public/app/main/apps/motiondialer/i18n/ru.json index 3d62aac..735779b 100644 --- a/public/app/main/apps/motiondialer/i18n/ru.json +++ b/public/app/main/apps/motiondialer/i18n/ru.json @@ -86,7 +86,42 @@ "QUEUETIMEOUT_REQUIRED": "Время ожидания в очереди не требуется", "ORIGINATETIMEOUT_REQUIRED": "Инициировать Timeout не требуется", "GLOBALINTERVAL_REQUIRED": "Глобальных интервала не требуется", - "PREFIX_MUST_VALID_PATTERN": "Префикс должен быть действительным действительный шаблон" + "PREFIX_MUST_VALID_PATTERN": "Префикс должен быть действительным действительный шаблон", + "NAME_MUST_VALID_PATTERN": "Имя должно быть действительным действительный шаблон", + "MAXCONCURRENTCALLS_REQUIRED": "Значение для Max параллельных вызовов не требуется", + "CONCURRENTCALLS_REQUIRED": "Значение для параллельных вызовов не требуется", + "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Уровень мощности должно быть больше или равно", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Предиктивный оптимизации процентное значение должно быть больше или равно", + "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Предиктивный интервал должен быть больше чем или равно", + "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max параллельных вызовов должно быть больше или равно", + "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Инициировать тайм-аута должно быть больше или равно", + "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Очереди ожидания должно быть больше или равно", + "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Оператор тайм-аута должно быть больше или равно", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Повтор должно быть больше или равно", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "На время завершения должно быть больше или равно", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Вес должен быть больше или равно", + "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Глобальной Max Retry должно быть больше или равно", + "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Перегруженность Max Retry должно быть больше или равно", + "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Перегруженность времени повторных попыток должно быть больше или равно", + "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Busy Max Retry должно быть больше или равно", + "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Busy времени повторных попыток должно быть больше или равно", + "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "В отсутствие ответа Max Retry должно быть больше или равно", + "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "В отсутствие ответа времени повторных попыток должно быть больше или равно", + "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "В параллельных вызовов должно быть больше или равно", + "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Уровень мощности должно быть меньше или равно", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Предиктивный оптимизации процентное значение должно быть меньше или равно", + "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Предиктивный интервал должен быть меньше или равен", + "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max параллельных вызовов должно быть меньше или равно", + "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Инициировать Timeout должно быть меньше или равно", + "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Очереди ожидания должно быть меньше или равно", + "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Глобальной Max Retry должно быть меньше или равно", + "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Перегруженность Max Retry должно быть меньше или равно", + "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Перегруженность времени повторных попыток должно быть меньше или равно", + "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Busy Max Retry должно быть меньше или равно", + "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Busy времени повторных попыток должно быть меньше или равно", + "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "В отсутствие ответа Max Retry должно быть меньше или равно", + "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "В отсутствие ответа времени повторных попыток должно быть меньше или равно", + "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "В параллельных вызовов должно быть меньше или равно" }, "GENERAL": "Генеральной", "TIMEOUT": "Превышение лимита времени", @@ -143,7 +178,6 @@ "ORIGINATECALLERIDNAME": "Идентификатор вызываемого абонента Name", "ORIGINATECALLERIDNUMBER": "Исходящий номер вызывающего абонента", "ORIGINATETIMEOUT": "Время в секундах для отправляющей исходящего вызова для установления соединения. Если connectin не установлено, инициировать состояние будет не в состоянии ответить на этот вопрос.", - "QUEUETIMEOUT": "Время в секундах, в течение которого вызов будет ожидать в очереди до его падения", "GLOBALMAXRETRY": "Максимальное количество раз в контакт называется до рассмотрения ее закрытой", "CONGESTIONMAXRETRY": "Максимальное количество раз в не контакта для перегрузки причины называется до рассмотрения ее закрытой", "CONGESTIONRETRYTIME": "Время в минутах перед повторной попыткой достичь не удалось связаться с по причине перегрузки", @@ -158,7 +192,9 @@ "PREDICTIVEINTERVAL": "Интервал времени в минутах, которые должны быть рассмотрены Предиктивный алгоритм для вычисления количества вызовов для генерирования для оптимизации оптимизации прогнозирования фактором", "AGENTTIMEOUT": "Указывает количество секунд для кольцо оператора устройства.", "GLOBALINTERVAL": "Глобальной интервал времени, в течение которого система автоматического обзвона не допускается для вызова контактов. Обратите внимание при изменении этой области. Мы не несет ответственности за невыполнение государством Autodialer законов и правил.", - "PREFIX": "Префикс телефона" + "PREFIX": "Префикс телефона", + "CALLYSQUAREPROJECT": "Если вы выберите IVR проекта из списка, система автоматического обзвона будет переадресовать вызов ИГМ до его постановки в очередь.", + "NAME": "Только цифры, буквы и специальные символы (_) поддерживаются" }, "MUSICONHOLD": "Музыка на удержании", "ANNOUNCETOAGENT": "Сообщить оператору", @@ -474,6 +510,19 @@ "TOTAL_MANAGED": "Общее управление", "GLOBAL_INTERVAL_IS_OVERTIME": "Из интервала (глобальный)", "OPEN": "Открыть", - "FRESH": "Свежее" + "FRESH": "Свежее", + "GOTO_QUEUECAMPAIGN": "Перейдите к очереди в реальном времени кампании", + "GOTOREALTIME_QUEUECAMPAIGN": "Перейдите к очереди в реальном времени кампании", + "GOTO_IVRCAMPAIGN": "Перейдите к в режиме реального времени кампаний IVR", + "GOTOREALTIME_IVRCAMPAIGN": "Перейдите к в режиме реального времени кампаний IVR", + "ADVANCE": "Расширенные возможности", + "ALWAYS": "Всегда", + "NEVER": "Ни в коем случае не", + "ONLY_IF_OPEN": "Только если открыть", + "CHECKDUPLICATE": "Проверьте дубликат", + "PAGE": "Страница", + "ROWSPERPAGE": "Строк на странице", + "OF": "В", + "CLOSED": "Закрыт" } } \ No newline at end of file diff --git a/public/app/main/apps/motiondialer/i18n/sv.json b/public/app/main/apps/motiondialer/i18n/sv.json index 9680961..6123525 100644 --- a/public/app/main/apps/motiondialer/i18n/sv.json +++ b/public/app/main/apps/motiondialer/i18n/sv.json @@ -86,7 +86,42 @@ "QUEUETIMEOUT_REQUIRED": "Tidsgräns för Kön är obligatoriskt", "ORIGINATETIMEOUT_REQUIRED": "Ursprung Timeout krävs", "GLOBALINTERVAL_REQUIRED": "Globala intervall krävs", - "PREFIX_MUST_VALID_PATTERN": "Prefix mÃ¥ste vara giltig giltig mönster" + "PREFIX_MUST_VALID_PATTERN": "Prefix mÃ¥ste vara giltig giltig mönster", + "NAME_MUST_VALID_PATTERN": "Namnet mÃ¥ste vara giltig giltig mönster", + "MAXCONCURRENTCALLS_REQUIRED": "Värdet för Max samtidiga samtal krävs", + "CONCURRENTCALLS_REQUIRED": "Värdet för samtidiga samtal krävs", + "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Effekten mÃ¥ste vara större än eller lika med", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den prediktiva optimering procentsats mÃ¥ste vara större än eller lika med", + "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den prediktiva intervall mÃ¥ste vara större än eller lika med", + "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max samtidiga samtal mÃ¥ste vara större än eller lika med", + "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den härstammar Timeout mÃ¥ste vara större än eller lika med", + "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kön Timeout mÃ¥ste vara större än eller lika med", + "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Agenten Timeout mÃ¥ste vara större än eller lika med", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Detta försök mÃ¥ste vara större än eller lika med", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Det Avslutningstiden mÃ¥ste vara större än eller lika med", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Vikten mÃ¥ste vara större än eller lika med", + "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den globala Max igen mÃ¥ste vara större än eller lika med", + "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Trängseln Max igen mÃ¥ste vara större än eller lika med", + "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Trängseln igen tid mÃ¥ste vara större än eller lika med", + "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den livliga Max igen mÃ¥ste vara större än eller lika med", + "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Upptagen igen tid mÃ¥ste vara större än eller lika med", + "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Inga svar Max igen mÃ¥ste vara större än eller lika med", + "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Inga svar försök tid mÃ¥ste vara större än eller lika med", + "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den samtidiga samtal mÃ¥ste vara större än eller lika med", + "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Effekten mÃ¥ste vara mindre än eller lika med", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Den prediktiva optimering procentsatsen mÃ¥ste vara mindre än eller lika med", + "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Den prediktiva intervall mÃ¥ste vara mindre än eller lika med", + "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max samtidiga samtal mÃ¥ste vara mindre än eller lika med", + "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Den härstammar Timeout mÃ¥ste vara mindre än eller lika med", + "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Kön Timeout mÃ¥ste vara mindre än eller lika med", + "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Den globala Max igen mÃ¥ste vara mindre än eller lika med", + "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Trängseln Max igen mÃ¥ste vara mindre än eller lika med", + "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Trängseln igen tid mÃ¥ste vara mindre än eller lika med", + "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Den livliga Max igen mÃ¥ste vara mindre än eller lika med", + "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Upptagen igen tid mÃ¥ste vara mindre än eller lika med", + "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Inga svar Max igen mÃ¥ste vara mindre än eller lika med", + "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Inga svar försök mÃ¥ste vara mindre än eller lika med", + "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Den samtidiga samtal mÃ¥ste vara mindre än eller lika med" }, "GENERAL": "Allmänt", "TIMEOUT": "Tidsgräns", @@ -143,7 +178,6 @@ "ORIGINATECALLERIDNAME": "Outgoing Callerlegitimation namn", "ORIGINATECALLERIDNUMBER": "Outgoing Callerlegitimation nummer", "ORIGINATETIMEOUT": "Tid i sekunder för ursprung utgÃ¥ende samtal för att upprätta anslutningen. Om uttaget inte är etablerad, kommer status kommer att svara nej.", - "QUEUETIMEOUT": "Tid i sekunder som en uppmaning att vänta i kö innan den tappas", "GLOBALMAXRETRY": "Maximalt antal gÃ¥nger en kontakt kallas innan du överväger det stängda", "CONGESTIONMAXRETRY": "Maximalt antal gÃ¥nger en misslyckad kontakt trafikstockningar anledning kallas innan du överväger det stängda", "CONGESTIONRETRYTIME": "Tid i minuter innan ett nytt försök görs att nÃ¥ en kontakt misslyckades för trafikstockningar anledning", @@ -158,7 +192,9 @@ "PREDICTIVEINTERVAL": "Tidsintervall i minuter anses av prediktiv algoritmen för att beräkna mängden samtal för att generera för att optimera prediktiv faktor för optimering", "AGENTTIMEOUT": "Anger antalet sekunder ringer en agents enhet.", "GLOBALINTERVAL": "Global tidsintervall under vilket dialer är tillÃ¥tet att ringa upp kontakter. Vänligen uppmärksamma när du ändrar det här fältet. Vi kan inte hÃ¥llas ansvarigt för din underlÃ¥tenhet att följa statliga Autodialer lagar och förordningar.", - "PREFIX": "Telefon prefix" + "PREFIX": "Telefon prefix", + "CALLYSQUAREPROJECT": "Om du väljer en IVR-projekt frÃ¥n listan, dialer kommer att vidarebefordra samtal till IVR innan du lägger det i en kö.", + "NAME": "Endast siffror, bokstäver och särskilda tecken (_) stöds" }, "MUSICONHOLD": "Musik i vänteläge", "ANNOUNCETOAGENT": "Meddela till agent", @@ -474,6 +510,19 @@ "TOTAL_MANAGED": "Totala hanterade", "GLOBAL_INTERVAL_IS_OVERTIME": "Utanför intervallet (globalt)", "OPEN": "Öppna", - "FRESH": "Färsk" + "FRESH": "Färsk", + "GOTO_QUEUECAMPAIGN": "GÃ¥ till Realtime kön kampanjer", + "GOTOREALTIME_QUEUECAMPAIGN": "GÃ¥ till Realtime kön kampanjer", + "GOTO_IVRCAMPAIGN": "GÃ¥ till Realtime Ivr-kampanjer", + "GOTOREALTIME_IVRCAMPAIGN": "GÃ¥ till Realtime Ivr-kampanjer", + "ADVANCE": "Avancerade", + "ALWAYS": "Alltid", + "NEVER": "Aldrig", + "ONLY_IF_OPEN": "Endast om öppen", + "CHECKDUPLICATE": "Kontrollera duplikat", + "PAGE": "Sidan", + "ROWSPERPAGE": "Rader per sida", + "OF": "Av", + "CLOSED": "Stängd" } } \ No newline at end of file diff --git a/public/app/main/apps/motiondialer/i18n/tr.json b/public/app/main/apps/motiondialer/i18n/tr.json index 1cdad02..55a6a9c 100644 --- a/public/app/main/apps/motiondialer/i18n/tr.json +++ b/public/app/main/apps/motiondialer/i18n/tr.json @@ -86,7 +86,42 @@ "QUEUETIMEOUT_REQUIRED": "Kuyruk Zaman Aşımı gerekiyor.", "ORIGINATETIMEOUT_REQUIRED": "Gerçekleştirilen Zaman Aşımı gerekiyor.", "GLOBALINTERVAL_REQUIRED": "Küresel Aralığı gereklidir", - "PREFIX_MUST_VALID_PATTERN": "Önek geçerli olmalıdır geçerli bir modeli" + "PREFIX_MUST_VALID_PATTERN": "Önek geçerli olmalıdır geçerli bir modeli", + "NAME_MUST_VALID_PATTERN": "Adı geçerli değil geçerli bir modeli", + "MAXCONCURRENTCALLS_REQUIRED": "Değeri için Max Eşzamanlı Çağrılar gereklidir", + "CONCURRENTCALLS_REQUIRED": "Değeri için Eşzamanlı Çağrılar gereklidir", + "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Güç Seviyesi eşit veya daha büyük olmalıdır.", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Prediktif İyileştirme Yüzdesi eşit veya daha büyük olmalıdır.", + "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Tahmin Aralığı eşit veya daha büyük olmalıdır.", + "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Maksimum Eşzamanlı Arama eşit veya daha büyük olmalıdır.", + "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gerçekleştirilen ve Zaman Aşımı eşit veya daha büyük olmalıdır.", + "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kuyruk Zaman Aşımı eşit veya daha büyük olmalıdır.", + "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Ajan Zaman Aşımı eşit veya daha büyük olmalıdır.", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Retry eşit veya daha büyük olmalıdır.", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Bu Toparlama Süresi eşit veya daha büyük olmalıdır.", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Ağırlık eşit veya daha büyük olmalıdır.", + "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Global Max Tekrar eşit veya daha büyük olmalıdır.", + "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Tıkanma Maks Tekrar eşit veya daha büyük olmalıdır.", + "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Tıkanma Tekrar Süresi eşit veya daha büyük olmalıdır.", + "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Meşgul Maks Tekrar eşit veya daha büyük olmalıdır.", + "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kalabalık Tekrar Süresi eşit veya daha büyük olmalıdır.", + "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Hiçbir Cevap Max Tekrar eşit veya daha büyük olmalıdır.", + "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Hiçbir Cevap Tekrar Süresi eşit veya daha büyük olmalıdır.", + "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Eş Zamanlı Aramalar eşit veya daha büyük olmalıdır.", + "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Güç Seviyesi altında veya eşit olmalıdır", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Prediktif Optimizasyon Yüzde'ye eşit veya daha düşük olmalıdır.", + "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Tahmin Aralığı'ye eşit veya daha düşük olmalıdır.", + "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Maksimum Eşzamanlı Aramalar'ye eşit veya daha düşük olmalıdır.", + "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gerçekleştirilen ve Zaman Aşımı'ye eşit veya daha düşük olmalıdır.", + "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Kuyruk Zaman Aşımı'ye eşit veya daha düşük olmalıdır.", + "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Global Max Dene'ye eşit veya daha düşük olmalıdır.", + "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Tıkanma Maks Tekrar Dene'ye eşit veya daha düşük olmalıdır.", + "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Tıkanma Tekrar Zaman'ye eşit veya daha düşük olmalıdır.", + "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Yoğun Max Dene'ye eşit veya daha düşük olmalıdır.", + "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Kalabalık Tekrar Zaman'ye eşit veya daha düşük olmalıdır.", + "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Hiçbir Cevap Max Dene'ye eşit veya daha düşük olmalıdır.", + "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Hiçbir Cevap Tekrar Zaman'ye eşit veya daha düşük olmalıdır.", + "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Eş Zamanlı Aramalar'ye eşit veya daha düşük olmalıdır." }, "GENERAL": "Genel", "TIMEOUT": "Zaman Aşımı", @@ -143,7 +178,6 @@ "ORIGINATECALLERIDNAME": "Giden Arayan Kimliği Adı", "ORIGINATECALLERIDNUMBER": "Giden Arayan Kimliği Numarası", "ORIGINATETIMEOUT": "Saniye olarak zaman, gelmeyen giden çağrı bağlantı. Eğer connectin kurulamıyorsa, gerçekleştirilen durumu Yanıt Yok.", - "QUEUETIMEOUT": "Saniye olarak zaman, bir çağrı bekleme, kuyruk, düşmüş", "GLOBALMAXRETRY": "Maksimum sayıda kişi adı önce kapalı", "CONGESTIONMAXRETRY": "Maksimum sayıda başarısız bir kişi için tıkanma nedeni sözde önce kapalı", "CONGESTIONRETRYTIME": "Dakika olarak zaman tekrar denemeden önce bir kişi için başarısız tıkanıklık nedeni", @@ -158,7 +192,9 @@ "PREDICTIVEINTERVAL": "Zaman aralığı içinde kabul edilen tahmini algoritması hesaplamak miktarda aramaları için optimum tahmini optimizasyon faktörü", "AGENTTIMEOUT": "Saniye cinsinden belirtir. halka bir temsilci.", "GLOBALINTERVAL": "Küresel bir zaman aralığı boyunca arama izin arama kişiler. Lütfen dikkat edin, bu alan. Biz sorumlu veya sorumlu ve uyulmaması Autodialer devletin yasa ve yönetmelikleri.", - "PREFIX": "Telefon öneki" + "PREFIX": "Telefon öneki", + "CALLYSQUAREPROJECT": "Eğer bir IVR project liste, arama, arama, IVR koymadan önce, bir kuyruk.", + "NAME": "Sadece sayılar, harfler ve özel karakterler (._) desteklenir." }, "MUSICONHOLD": "Bekletme Müziği", "ANNOUNCETOAGENT": "Duyurmak Agent", @@ -474,6 +510,19 @@ "TOTAL_MANAGED": "Toplam Yönetilen", "GLOBAL_INTERVAL_IS_OVERTIME": "Ve Aralık (Global).", "OPEN": "Açık", - "FRESH": "Taze" + "FRESH": "Taze", + "GOTO_QUEUECAMPAIGN": "Gi̇t Gerçek Zamanlı Kuyruk Kampanyaları", + "GOTOREALTIME_QUEUECAMPAIGN": "Gi̇t Gerçek Zamanlı Kuyruk Kampanyaları", + "GOTO_IVRCAMPAIGN": "Gi̇t Gerçek Zamanlı Ivr Kampanyaları", + "GOTOREALTIME_IVRCAMPAIGN": "Gi̇t Gerçek Zamanlı Ivr Kampanyaları", + "ADVANCE": "Gelişmiş", + "ALWAYS": "Her zaman", + "NEVER": "Asla", + "ONLY_IF_OPEN": "Sadece Açık", + "CHECKDUPLICATE": "Çift kontrol ediniz", + "PAGE": "Sayfa", + "ROWSPERPAGE": "Sayfadaki satırları", + "OF": "Ve", + "CLOSED": "Kapalı" } } \ No newline at end of file diff --git a/public/app/main/apps/motiondialer/i18n/zh-CN.json b/public/app/main/apps/motiondialer/i18n/zh-CN.json index e28ca89..d766559 100644 --- a/public/app/main/apps/motiondialer/i18n/zh-CN.json +++ b/public/app/main/apps/motiondialer/i18n/zh-CN.json @@ -86,7 +86,42 @@ "QUEUETIMEOUT_REQUIRED": "队列超时是必需的", "ORIGINATETIMEOUT_REQUIRED": "源自超时是必需的", "GLOBALINTERVAL_REQUIRED": "全球性的时间间隔是所需的", - "PREFIX_MUST_VALID_PATTERN": "前缀必须是有效的有效模式" + "PREFIX_MUST_VALID_PATTERN": "前缀必须是有效的有效模式", + "NAME_MUST_VALID_PATTERN": "名称必须是有效的有效模式", + "MAXCONCURRENTCALLS_REQUIRED": "此值为最大并发呼叫数是必需的", + "CONCURRENTCALLS_REQUIRED": "该值用于并发呼叫数是必需的", + "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "电源一级必须大于或等于", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "预测优化比例必须大于或等于", + "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "预测的时间间隔必须大于或等于", + "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "最大并发呼叫数必须大于或等于", + "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "“发起的超时值必须大于或等于", + "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "队列中的超时值必须大于或等于", + "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "代理超时必须大于或等于", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "“重试” 必须大于或等于", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "后续处理时间必须大于或等于", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "重量必须大于或等于", + "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "全球最大重试次数必须大于或等于", + "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "挤塞的最大重试次数必须大于或等于", + "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "在拥塞的重试时间必须大于或等于", + "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "忙碌的最大重试次数必须大于或等于", + "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "忙碌的重试时间必须大于或等于", + "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "无应答的最大重试次数必须大于或等于", + "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "“无应答时重试的时间必须大于或等于", + "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "“并发呼叫数必须大于或等于", + "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "电源级别必须小于或等于", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "预测优化比例必须小于或等于", + "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "预测的时间间隔必须小于或等于", + "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "最大并发呼叫数必须小于或等于", + "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "“源自超时的值必须小于或等于", + "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "队列中的超时时间必须小于或等于", + "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "全球最大重试次数必须小于或等于", + "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "挤塞的最大重试次数必须小于或等于", + "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "在拥塞的重试时间必须小于或等于", + "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "忙碌的最大重试次数必须小于或等于", + "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "忙碌的重试时间必须小于或等于", + "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "无应答的最大重试次数必须小于或等于", + "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "无应答重试时间必须小于或等于", + "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "并发呼叫数必须小于或等于" }, "GENERAL": "总的", "TIMEOUT": "超时", @@ -143,7 +178,6 @@ "ORIGINATECALLERIDNAME": "呼出呼叫方 ID 的名称。", "ORIGINATECALLERIDNUMBER": "传出呼叫者的 ID 号。", "ORIGINATETIMEOUT": "以秒为单位的时间为起始的外向呼叫建立连接。 如果缆连接用是不成立的, “发起的地位将无人应答。", - "QUEUETIMEOUT": "以秒为单位的时间, 将呼叫在队列中等待它之前被丢弃", "GLOBALMAXRETRY": "最大次数联系人被称为才再考虑关闭", "CONGESTIONMAXRETRY": "最大的失败联系人挤塞的原因称为才再考虑关闭", "CONGESTIONRETRYTIME": "以分钟为单位的时间。 重试之前达成一项联系人失败的拥塞的原因", @@ -158,7 +192,9 @@ "PREDICTIVEINTERVAL": "时间间隔在数分钟内将审议的预测算法的计算量的呼叫生成优化的预测优化因素。", "AGENTTIMEOUT": "指定的秒数, 环座席的设备。", "GLOBALINTERVAL": "全球性的时间间隔的拨号器是允许呼叫的联系人。 请密切注意在您修改此字段。 我们将不负任何责任。 您无法遵守状态的自动拨号器的法律和法规。", - "PREFIX": "电话前缀。" + "PREFIX": "电话前缀。", + "CALLYSQUAREPROJECT": "如果您选择 IVR 项目列表中的\"拨号程序\"将将该呼叫转接到 IVR 之前在队列中等待。", + "NAME": "只有数字、字母和特殊字符(_)的支持" }, "MUSICONHOLD": "音乐保留", "ANNOUNCETOAGENT": "宣布到座席", @@ -474,6 +510,19 @@ "TOTAL_MANAGED": "总的管理", "GLOBAL_INTERVAL_IS_OVERTIME": "出于时间间隔(全球)", "OPEN": "打开", - "FRESH": "新鲜的" + "FRESH": "新鲜的", + "GOTO_QUEUECAMPAIGN": "转至实时队列活动", + "GOTOREALTIME_QUEUECAMPAIGN": "转至实时队列活动", + "GOTO_IVRCAMPAIGN": "转到 IVR 实时运动", + "GOTOREALTIME_IVRCAMPAIGN": "转到 IVR 实时运动", + "ADVANCE": "高级", + "ALWAYS": "始终", + "NEVER": "从未", + "ONLY_IF_OPEN": "只有打开", + "CHECKDUPLICATE": "检查重复的", + "PAGE": "页面", + "ROWSPERPAGE": "每页的行数。", + "OF": "的", + "CLOSED": "关闭" } } \ No newline at end of file diff --git a/public/app/main/apps/motiondialer/i18n/zh-TW.json b/public/app/main/apps/motiondialer/i18n/zh-TW.json index e401f0d..37a7f45 100644 --- a/public/app/main/apps/motiondialer/i18n/zh-TW.json +++ b/public/app/main/apps/motiondialer/i18n/zh-TW.json @@ -86,7 +86,42 @@ "QUEUETIMEOUT_REQUIRED": "佇列中等候時間是必填欄位", "ORIGINATETIMEOUT_REQUIRED": "來自逾時為必填欄位", "GLOBALINTERVAL_REQUIRED": "全球時間間隔為必填欄位", - "PREFIX_MUST_VALID_PATTERN": "前置碼必須是有效的一種有效的圖案" + "PREFIX_MUST_VALID_PATTERN": "前置碼必須是有效的一種有效的圖案", + "NAME_MUST_VALID_PATTERN": "名稱必須是有效的一種有效的圖案", + "MAXCONCURRENTCALLS_REQUIRED": "同時呼叫的值最大爲必填項", + "CONCURRENTCALLS_REQUIRED": "同時呼叫的值是必需的", + "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "功率大小必須大於或等於", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "預測優化比例必須大於或等於", + "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "預測的時間間隔必須大於或等於", + "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "同時呼叫的最大值必須大於或等於", + "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "這是超時必須大於或等於", + "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "隊列超時必須大於或等於", + "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "值機員超時必須大於或等於", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Retry 必須大於或等於", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "後續處理時間必須大於或等於", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "重量必須大於或等於", + "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "全球最大重試次數必須大於或等於", + "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "擠塞的最大重試次數必須大於或等於", + "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "交通擠塞的重試時間必須大於或等於", + "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "「忙線中」必須大於或等於最大重試次數", + "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "「忙線」重試時間必須大於或等於", + "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "無應答時的最大重試次數必須大於或等於", + "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "無應答重試時間必須大於或等於", + "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "同時呼叫必須大於或等於", + "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "功率大小必須小於或等於", + "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "預測優化比例必須小於或等於", + "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "預測區間值必須小於或等於", + "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "同時呼叫的最大值必須小於或等於", + "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "這是超時必須小於或等於", + "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "隊列超時必須小於或等於", + "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "全球最大重試次數必須小於或等於", + "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "擁塞必須小於或等於最大重試次數", + "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "交通擠塞的重試時間必須小於或等於", + "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "「忙線中」必須小於或等於最大重試次數", + "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "繁忙時重試時間必須小於或等於", + "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "「無應答」必須小於或等於最大重試次數", + "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "無應答重試時間必須小於或等於", + "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "同時呼叫必須小於或等於" }, "GENERAL": "通用", "TIMEOUT": "逾時", @@ -143,7 +178,6 @@ "ORIGINATECALLERIDNAME": "去呼叫者 ID 名稱", "ORIGINATECALLERIDNUMBER": "去呼叫者 ID 號碼", "ORIGINATETIMEOUT": "時間 ( 以秒為單位的原始撥出通話以建立連線。 如果 connectin 沒有既定的起源狀態會無人接聽。", - "QUEUETIMEOUT": "時間 ( 以秒為單位的通話將會稍後在「佇列之前就會捨棄", "GLOBALMAXRETRY": "最大次數。連絡人會被稱為再考慮它已關閉", "CONGESTIONMAXRETRY": "最高次數的失敗連絡阻塞原因是稱為再考慮它已關閉", "CONGESTIONRETRYTIME": "以分鐘為單位的時間後再重試連線至某個連絡人失敗的阻塞原因", @@ -158,7 +192,9 @@ "PREDICTIVEINTERVAL": "時間間隔 ( 以分鐘為單位 ) 被視為是預測演算法計算數量的來電轉接至產生最佳的預測最佳化外型", "AGENTTIMEOUT": "指定的秒數以環代理的裝置。", "GLOBALINTERVAL": "全球時間間隔拨号器可撥話給聯絡人。 請密切注意當您要修改此欄位。 我們將不負任何責任或義務的遵守狀態自動撥號器相關法律及法規。", - "PREFIX": "電話前置字元" + "PREFIX": "電話前置字元", + "CALLYSQUAREPROJECT": "如果您選擇 IVR 項目從清單中撥號程式會將來電轉撥至 IVR 之前把它在佇列中。", + "NAME": "只有數字、字母和特殊字元 ( _ ) 都受到支援" }, "MUSICONHOLD": "音樂保留通話", "ANNOUNCETOAGENT": "發佈至值機員", @@ -474,6 +510,19 @@ "TOTAL_MANAGED": "總管理", "GLOBAL_INTERVAL_IS_OVERTIME": "出間隔 ( 全球 )", "OPEN": "開啟", - "FRESH": "新鮮" + "FRESH": "新鮮", + "GOTO_QUEUECAMPAIGN": "轉到實時佇列運動", + "GOTOREALTIME_QUEUECAMPAIGN": "轉到實時佇列運動", + "GOTO_IVRCAMPAIGN": "轉至即時 Ivr 活動", + "GOTOREALTIME_IVRCAMPAIGN": "轉至即時 Ivr 活動", + "ADVANCE": "高級", + "ALWAYS": "始終", + "NEVER": "切勿", + "ONLY_IF_OPEN": "只有在開啟", + "CHECKDUPLICATE": "檢查重複", + "PAGE": "頁面", + "ROWSPERPAGE": "每頁行數", + "OF": "的", + "CLOSED": "關閉" } } \ No newline at end of file diff --git a/public/app/main/apps/openchannel/i18n/da.json b/public/app/main/apps/openchannel/i18n/da.json index 954bf7b..4022f72 100644 --- a/public/app/main/apps/openchannel/i18n/da.json +++ b/public/app/main/apps/openchannel/i18n/da.json @@ -13,7 +13,11 @@ "REJECTURL_MUST_VALID_URL": "Reject-URL skal være skrevet i et gyldigt format", "CLOSEURL_MUST_VALID_URL": "Den tætte URL skal være skrevet i et gyldigt format", "REPLYURI_REQUIRED": "Svaret URI er pÃ¥krævet", - "REPLYURI_MUST_VALID_URL": "Svaret URI skal være skrevet i et gyldigt format" + "REPLYURI_MUST_VALID_URL": "Svaret URI skal være skrevet i et gyldigt format", + "PRIORITY_REQUIRED": "Indsatsen er pÃ¥krævet", + "CONDITION_REQUIRED": "Betingelsen er pÃ¥krævet", + "TRUEPRIORITY_REQUIRED": "Den sande prioritering er nødvendig", + "FALSEPRIORITY_REQUIRED": "Den falske prioritet er pÃ¥krævet" }, "STRATEGY": "Strategi", "AGENT_TIMEOUT": "Agent Timeout", @@ -65,6 +69,33 @@ "SELECTED_TEAMS": "Udvalgte Teams", "REPLYURI": "Svar URI", "RECEIVEURI": "Modtag URI", - "HELP": {} + "HELP": { + "RECEIVEURI": "Det er autogenereret API string du skal bruge til at modtage beskeder i din Ã¥bne kanal fra din eksterne program (POST metode skal anvendes). Du kan trykke pÃ¥ knappen for at kopiere det til Udklipsholder i din udklipsholder.", + "REPLYURI": "Det er URI open channel ringer ved afsendelse og besvarelse af en besked", + "NAME": "Kun tal og bogstaver og specielle tegn (.________) understøttes" + }, + "AGENT": "Agent", + "GOTO": "Goto", + "GOTOIF": "Gotoif", + "NOOP": "Noop", + "QUEUE": "Kø", + "EDIT_AGENT": "Rediger Agent", + "EDIT_GOTO": "Rediger Goto", + "EDIT_NOOP": "Rediger Noop", + "EDIT_GOTOIF": "Rediger Gotoif", + "EDIT_QUEUE": "Rediger kø", + "CONDITION": "Betingelse", + "TRUEPRIORITY": "Sande prioritering", + "FALSEPRIORITY": "Falske prioritet", + "VALUE": "Værdi", + "PRIORITY": "Prioritet", + "PENALTY": "Straf", + "TEAMADD_OPENCHANNELQUEUE": "Hold Tilføj til kø", + "AGENTADD_OPENCHANNELQUEUE": "Tilføj til kø", + "ALL_AGENTS": "Alle agenter", + "SELECTED_AGENTS": "Udvalgte agenter", + "PAGE": "Page", + "ROWSPERPAGE": "Rækker pr. side", + "OF": "Af" } } \ No newline at end of file diff --git a/public/app/main/apps/openchannel/i18n/de.json b/public/app/main/apps/openchannel/i18n/de.json index e1ab561..91e3efc 100644 --- a/public/app/main/apps/openchannel/i18n/de.json +++ b/public/app/main/apps/openchannel/i18n/de.json @@ -13,7 +13,11 @@ "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format", "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format", "REPLYURI_REQUIRED": "Die Antwort URI ist erforderlich", - "REPLYURI_MUST_VALID_URL": "Die Antwort URI muss im gültigen Format geschrieben werden" + "REPLYURI_MUST_VALID_URL": "Die Antwort URI muss im gültigen Format geschrieben werden", + "PRIORITY_REQUIRED": "Die Priorität ist erforderlich", + "CONDITION_REQUIRED": "Der Zustand ist erforderlich", + "TRUEPRIORITY_REQUIRED": "Die wahre Priorität ist erforderlich", + "FALSEPRIORITY_REQUIRED": "Die falsche Priorität ist erforderlich" }, "STRATEGY": "Strategie", "AGENT_TIMEOUT": "Agent Timeout", @@ -65,6 +69,33 @@ "SELECTED_TEAMS": "Ausgewählte Teams", "REPLYURI": "Antwort URI", "RECEIVEURI": "Erhalten URI", - "HELP": {} + "HELP": { + "RECEIVEURI": "Dies ist die automatisch generierte API-String müssen Sie die Nachrichten in Ihrem offenen Kanal zu erhalten von der externen Anwendung (POST-Methode verwendet werden muss). Drücken Sie die Zwischenablage, um Sie in die Zwischenablage zu kopieren.", + "REPLYURI": "Dies ist die URI der Offene Kanal wird beim Senden oder Beantworten von Nachrichten", + "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt." + }, + "AGENT": "Agent", + "GOTO": "Gehe zu", + "GOTOIF": "Gotoif", + "NOOP": "Noop", + "QUEUE": "Warteschlange", + "EDIT_AGENT": "Agent bearbeiten", + "EDIT_GOTO": "Bearbeiten Gehe zu", + "EDIT_NOOP": "Bearbeiten Noop", + "EDIT_GOTOIF": "Bearbeiten Gotoif", + "EDIT_QUEUE": "Warteschlange bearbeiten", + "CONDITION": "Zustand", + "TRUEPRIORITY": "Wahre Priorität", + "FALSEPRIORITY": "Falsche Priorität", + "VALUE": "Wert", + "PRIORITY": "Priorität", + "PENALTY": "Strafe", + "TEAMADD_OPENCHANNELQUEUE": "Team zur Warteschlange hinzufügen", + "AGENTADD_OPENCHANNELQUEUE": "Agent zur Warteschlange hinzufügen", + "ALL_AGENTS": "Alle Agenten", + "SELECTED_AGENTS": "Ausgewählte Agenten", + "PAGE": "Seite", + "ROWSPERPAGE": "Zeilen pro Seite", + "OF": "Von" } } \ No newline at end of file diff --git a/public/app/main/apps/openchannel/i18n/en.json b/public/app/main/apps/openchannel/i18n/en.json index f5576a0..61375fc 100644 --- a/public/app/main/apps/openchannel/i18n/en.json +++ b/public/app/main/apps/openchannel/i18n/en.json @@ -92,10 +92,29 @@ "HELP": { "RECEIVEURI": "This is the auto-generated API string you need to use to receive the messages inside your open channel from your external application (POST method must be used). You can press the clipboard button to copy it in your clipboard.", "REPLYURI": "This is the URI the open channel will call when sending or replying to a message", - "NAME": "Only numbers, letters and specific characters (._) are supported" + "NAME": "Only numbers, letters and specific characters (._) are supported", + "LIST": "Contact Manager list used to associate contacts" }, "PAGE": "Page", "ROWSPERPAGE": "Rows per page", - "OF": "Of" + "OF": "of", + "CONTACT": "Contact", + "STARTEDAT": "Started At", + "STATUS": "Status", + "CLOSED": "Closed", + "OPENED": "Open", + "OPEN": "Open", + "ACCOUNT": "Account", + "INTERACTION": "Interaction", + "INTERACTIONS": "Interactions", + "ALL": "All", + "SELECT_STATUS": "Select a status", + "FILTER": "Filter", + "FILTERS": "Filters", + "CLOSEDAT": "Closed At", + "DISPOSITION": "Disposition", + "NOTES": "Notes", + "NO_INTERACTION_AVAILABLE": "No interactions available", + "SELECT_ACCOUNT": "Select an account" } } \ No newline at end of file diff --git a/public/app/main/apps/openchannel/i18n/es.json b/public/app/main/apps/openchannel/i18n/es.json index c925334..cf71ec3 100644 --- a/public/app/main/apps/openchannel/i18n/es.json +++ b/public/app/main/apps/openchannel/i18n/es.json @@ -13,7 +13,11 @@ "REJECTURL_MUST_VALID_URL": "Rechazar la URL debe estar escrito en un formato válido", "CLOSEURL_MUST_VALID_URL": "La estrecha URL debe ser escrito en un formato válido", "REPLYURI_REQUIRED": "La respuesta es necesaria URI", - "REPLYURI_MUST_VALID_URL": "La respuesta URI debe estar escrito en un formato válido" + "REPLYURI_MUST_VALID_URL": "La respuesta URI debe estar escrito en un formato válido", + "PRIORITY_REQUIRED": "La prioridad es necesaria", + "CONDITION_REQUIRED": "La condición es necesaria", + "TRUEPRIORITY_REQUIRED": "La verdadera prioridad es necesaria", + "FALSEPRIORITY_REQUIRED": "La prioridad es necesaria FALSO" }, "STRATEGY": "Estrategia", "AGENT_TIMEOUT": "Tiempo de espera del agente", @@ -65,6 +69,33 @@ "SELECTED_TEAMS": "Los equipos seleccionados", "REPLYURI": "Responder URI", "RECEIVEURI": "Recibir URI", - "HELP": {} + "HELP": { + "RECEIVEURI": "Este es el auto-generado cadena API que usted necesita usar para recibir los mensajes dentro de su canal abierto desde su aplicación externa (post método debe utilizarse). Puede pulsar el botón Portapapeles para copiarlo en el portapapeles.", + "REPLYURI": "Este es el URI el canal abierto llamará al enviar o responder a un mensaje", + "NAME": "Sólo los números, letras y caracteres específicos (_) son compatibles." + }, + "AGENT": "Agent", + "GOTO": "Goto", + "GOTOIF": "Gotoif", + "NOOP": "Noop", + "QUEUE": "Cola", + "EDIT_AGENT": "Editar Agent", + "EDIT_GOTO": "Editar Goto", + "EDIT_NOOP": "Editar Noop", + "EDIT_GOTOIF": "Editar Gotoif", + "EDIT_QUEUE": "Editar cola", + "CONDITION": "Condición", + "TRUEPRIORITY": "True Priority", + "FALSEPRIORITY": "Prioridad falsa", + "VALUE": "Valor", + "PRIORITY": "Prioridad", + "PENALTY": "Pena", + "TEAMADD_OPENCHANNELQUEUE": "Agregar a la cola del equipo", + "AGENTADD_OPENCHANNELQUEUE": "Agregar a la cola del agente", + "ALL_AGENTS": "Todos los agentes", + "SELECTED_AGENTS": "Los agentes seleccionados", + "PAGE": "Página", + "ROWSPERPAGE": "Filas por página.", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/openchannel/i18n/fa.json b/public/app/main/apps/openchannel/i18n/fa.json index 7453b3e..52aca0e 100644 --- a/public/app/main/apps/openchannel/i18n/fa.json +++ b/public/app/main/apps/openchannel/i18n/fa.json @@ -13,7 +13,11 @@ "REJECTURL_MUST_VALID_URL": "آدرس کامل را رد كند بايد در فرمت معتبر نوشته شده است", "CLOSEURL_MUST_VALID_URL": "آدرس کامل باید بسته به فرمت معتبر نوشته شده است", "REPLYURI_REQUIRED": "پاسخ اوري لازم است.", - "REPLYURI_MUST_VALID_URL": "پاسخ اوري بايد به فرمت معتبر نوشته شده است" + "REPLYURI_MUST_VALID_URL": "پاسخ اوري بايد به فرمت معتبر نوشته شده است", + "PRIORITY_REQUIRED": "اولويت لازم است.", + "CONDITION_REQUIRED": "شرط لازم است.", + "TRUEPRIORITY_REQUIRED": "تقدم حقيقي لازم است.", + "FALSEPRIORITY_REQUIRED": "به غلط اولویت لازم است." }, "STRATEGY": "استراتژي", "AGENT_TIMEOUT": "عامل زمان مجاز", @@ -65,6 +69,33 @@ "SELECTED_TEAMS": "تيم هاي برگزيده", "REPLYURI": "پاسخ اوري", "RECEIVEURI": "دریافت اوري", - "HELP": {} + "HELP": { + "RECEIVEURI": "این API تولید خودکار عبارت شما نیاز به استفاده از آن دریافت پیام ها داخل کانال باز شما را از برنامه کاربردی خارجی (روش پست استفاده می شود). شما می توانید دکمه را فشار دهید تا یک کپی از آن را به حافظه موقت شما را در حافظه موقت کپی می کند.", + "REPLYURI": "این کانال باز اوري وقتی تلفن یا ارسال پیام را به یک سووال", + "NAME": "فقط شماره ها و حروف و نویسه های ویژه (_) پشتیبانی می شود." + }, + "AGENT": "عامل", + "GOTO": "هيزن", + "GOTOIF": "Gotoif", + "NOOP": "Noop", + "QUEUE": "صف", + "EDIT_AGENT": "عامل ویرایش", + "EDIT_GOTO": "ویرایش هيزن", + "EDIT_NOOP": "ویرایش Noop", + "EDIT_GOTOIF": "ویرایش Gotoif", + "EDIT_QUEUE": "ویرایش صف", + "CONDITION": "شرط", + "TRUEPRIORITY": "اولويت واقعي", + "FALSEPRIORITY": "اولويت نادرست", + "VALUE": "مقدار", + "PRIORITY": "اولويت", + "PENALTY": "مجازات اعدام", + "TEAMADD_OPENCHANNELQUEUE": "تيم ايران به صف اضافه کنید", + "AGENTADD_OPENCHANNELQUEUE": "عامل به صف اضافه کنید", + "ALL_AGENTS": "همه عوامل", + "SELECTED_AGENTS": "عوامل انتخاب شده", + "PAGE": "صفحه", + "ROWSPERPAGE": "رديف در صفحه", + "OF": "از" } } \ No newline at end of file diff --git a/public/app/main/apps/openchannel/i18n/fi.json b/public/app/main/apps/openchannel/i18n/fi.json index 596e479..e1a092b 100644 --- a/public/app/main/apps/openchannel/i18n/fi.json +++ b/public/app/main/apps/openchannel/i18n/fi.json @@ -13,7 +13,11 @@ "REJECTURL_MUST_VALID_URL": "Hylätyt URL on kirjoitettava kelvollisessa muodossa", "CLOSEURL_MUST_VALID_URL": "Sulje URL on kirjoitettava kelvollisessa muodossa", "REPLYURI_REQUIRED": "Vastaus URI on pakollinen", - "REPLYURI_MUST_VALID_URL": "Vastaus URI on kirjoitettava kelvollisessa muodossa" + "REPLYURI_MUST_VALID_URL": "Vastaus URI on kirjoitettava kelvollisessa muodossa", + "PRIORITY_REQUIRED": "Etusijalla on pakollinen", + "CONDITION_REQUIRED": "Kunto on pakollinen", + "TRUEPRIORITY_REQUIRED": "Todellinen prioriteetti on pakollinen", + "FALSEPRIORITY_REQUIRED": "Väärät prioriteetti on pakollinen" }, "STRATEGY": "Strategia", "AGENT_TIMEOUT": "Agentti aikakatkaisu", @@ -65,6 +69,33 @@ "SELECTED_TEAMS": "Valittu työryhmille", "REPLYURI": "Vastaus URI", "RECEIVEURI": "Vastaanota URI", - "HELP": {} + "HELP": { + "RECEIVEURI": "Tämä on automaattisesti luotua API string tarvitset vastaanottamaan viestejä sisään avointa kanavaa, ulkoinen sovellus (POST menetelmän on oltava käytössä). Voit painaa leikepöydän kopioi sen leikepöydälle.", + "REPLYURI": "Tämä on URI avoimesta kanavasta soittaa lähettäessäsi ja viestiin vastaaminen", + "NAME": "Vain numeroita, kirjaimia ja erikoismerkkejä (._ tuetaan" + }, + "AGENT": "Agent", + "GOTO": "Siirry tietoturvakeskukseen", + "GOTOIF": "Gotoif", + "NOOP": "Noop", + "QUEUE": "Jono", + "EDIT_AGENT": "Muokkaa Agent", + "EDIT_GOTO": "Muokkaa Goto", + "EDIT_NOOP": "Muokkaa Noop", + "EDIT_GOTOIF": "Muokkaa Gotoif", + "EDIT_QUEUE": "Muokkaa jonoa", + "CONDITION": "Kunto", + "TRUEPRIORITY": "Todellinen prioriteetti", + "FALSEPRIORITY": "Väärät prioriteetti", + "VALUE": "Arvo", + "PRIORITY": "Prioriteetti", + "PENALTY": "Kuolemanrangaistuksen poistaminen", + "TEAMADD_OPENCHANNELQUEUE": "Lisää Team jonoon", + "AGENTADD_OPENCHANNELQUEUE": "Lisää Edustajan jonoon", + "ALL_AGENTS": "Kaikki toimijat", + "SELECTED_AGENTS": "Valitut edustajat", + "PAGE": "Sivu", + "ROWSPERPAGE": "Riviä sivulle", + "OF": "," } } \ No newline at end of file diff --git a/public/app/main/apps/openchannel/i18n/fr.json b/public/app/main/apps/openchannel/i18n/fr.json index 31d692b..7a202de 100644 --- a/public/app/main/apps/openchannel/i18n/fr.json +++ b/public/app/main/apps/openchannel/i18n/fr.json @@ -13,7 +13,11 @@ "REJECTURL_MUST_VALID_URL": "Rejeter l'URL doit être écrit dans un format valide", "CLOSEURL_MUST_VALID_URL": "Fermer l'URL doit être écrit dans un format valide", "REPLYURI_REQUIRED": "La réponse URI est requis", - "REPLYURI_MUST_VALID_URL": "La réponse URI doit être écrit dans un format valide" + "REPLYURI_MUST_VALID_URL": "La réponse URI doit être écrit dans un format valide", + "PRIORITY_REQUIRED": "La priorité est requise", + "CONDITION_REQUIRED": "L'état est requis", + "TRUEPRIORITY_REQUIRED": "La vraie priorité est requise", + "FALSEPRIORITY_REQUIRED": "La fausse priorité est requise" }, "STRATEGY": "Stratégie", "AGENT_TIMEOUT": "Délai d'agent", @@ -65,6 +69,33 @@ "SELECTED_TEAMS": "Les équipes sélectionnées", "REPLYURI": "Réponse URI", "RECEIVEURI": "Recevoir URI", - "HELP": {} + "HELP": { + "RECEIVEURI": "C'est auto-généré la chaîne API vous avez besoin d'utiliser pour recevoir les messages à l'intérieur de votre Canal ouvert à partir de votre application externe (méthode POST doit être utilisé). Vous pouvez appuyer sur le bouton du presse-papiers pour copier dans votre presse-papiers.", + "REPLYURI": "C'est l'URI L'open channel fera appel lors de l'envoi d'un message et d'y répondre", + "NAME": "Seulement les chiffres, lettres et caractères spécifiques (._) sont pris en charge" + }, + "AGENT": "Agent", + "GOTO": "Goto", + "GOTOIF": "Gotoif", + "NOOP": "Noop", + "QUEUE": "Queue", + "EDIT_AGENT": "Agent Modifier", + "EDIT_GOTO": "Edit Goto", + "EDIT_NOOP": "Éditer Noop", + "EDIT_GOTOIF": "Éditer Gotoif", + "EDIT_QUEUE": "Modifier la file d'attente", + "CONDITION": "Condition", + "TRUEPRIORITY": "Véritable Priorité", + "FALSEPRIORITY": "Priorité faux", + "VALUE": "Valeur", + "PRIORITY": "La priorité", + "PENALTY": "De mort", + "TEAMADD_OPENCHANNELQUEUE": "Ajouter à la file d'attente de l'équipe", + "AGENTADD_OPENCHANNELQUEUE": "Ajouter à la file d'attente de l'Agent", + "ALL_AGENTS": "Tous les Agents", + "SELECTED_AGENTS": "Agents sélectionnés", + "PAGE": "La page", + "ROWSPERPAGE": "Les lignes par page", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/openchannel/i18n/hi.json b/public/app/main/apps/openchannel/i18n/hi.json index 0b87839..27c63f7 100644 --- a/public/app/main/apps/openchannel/i18n/hi.json +++ b/public/app/main/apps/openchannel/i18n/hi.json @@ -13,7 +13,11 @@ "REJECTURL_MUST_VALID_URL": "एक मान्य स्वरूप में लिखा होना URL को अस्वीकार करें", "CLOSEURL_MUST_VALID_URL": "एक मान्य स्वरूप में लिखा होना URL के निकट", "REPLYURI_REQUIRED": "उत्तर उरी अपेक्षित है।", - "REPLYURI_MUST_VALID_URL": "एक मान्य स्वरूप में लिखित उत्तर उरी होना" + "REPLYURI_MUST_VALID_URL": "एक मान्य स्वरूप में लिखित उत्तर उरी होना", + "PRIORITY_REQUIRED": "प्राथमिकता की आवश्यकता है।", + "CONDITION_REQUIRED": "की स्थिति की आवश्यकता है।", + "TRUEPRIORITY_REQUIRED": "यह सच प्राथमिकता की आवश्यकता है।", + "FALSEPRIORITY_REQUIRED": "झूठे प्राथमिकता की आवश्यकता है।" }, "STRATEGY": "रणनीति", "AGENT_TIMEOUT": "एजेंट समयबाह्य", @@ -65,6 +69,33 @@ "SELECTED_TEAMS": "चयनित टीम", "REPLYURI": "उत्तर उरी", "RECEIVEURI": "उरी प्राप्त कर सकते हैं.", - "HELP": {} + "HELP": { + "RECEIVEURI": "यह स्वत: जनरेट वैक्टर तार आपको संदेश प्राप्त करने के लिए प्रयोग करने के लिए आपका अपने बाह्य अनुप्रयोग खोलने के अंदर चैनल (पोस्ट पद्धति का उपयोग किया जाना चाहिए। क्लिपबोर्ड पर कॉपी कर सकते हैं जो आपको आपकी में दबाएं बटन को क्लिपबोर्ड पर कॉपी किया गया.", + "REPLYURI": "यह खुले उरी चैनल कॉल का उत्तर देते या संदेश भेजना", + "NAME": "केवल विशिष्ट वर्ण (।_) और नंबर्स, समर्थित" + }, + "AGENT": "कर्ता", + "GOTO": "जाएँगे|", + "GOTOIF": "Gotoif", + "NOOP": "Noop", + "QUEUE": "कतार", + "EDIT_AGENT": "एजेंट संपादित करें", + "EDIT_GOTO": "संपादित करने के लिए जाएँगे|", + "EDIT_NOOP": "Noop संपादित करें", + "EDIT_GOTOIF": "Gotoif संपादित करें", + "EDIT_QUEUE": "लोकतंत्रमें संपादित करें", + "CONDITION": "दशा", + "TRUEPRIORITY": "सच प्राथमिकता", + "FALSEPRIORITY": "झूठा प्राथमिकता", + "VALUE": "मूल्य", + "PRIORITY": "प्राथमिकता", + "PENALTY": "दण्ड", + "TEAMADD_OPENCHANNELQUEUE": "टीम की कतार में जोड़ें", + "AGENTADD_OPENCHANNELQUEUE": "एजेंट को कतार में जोड़ें", + "ALL_AGENTS": "सभी एजेंटों", + "SELECTED_AGENTS": "चयनित एजेंटों", + "PAGE": "पृष्ठ", + "ROWSPERPAGE": "पंक्तियां प्रति पृष्ठ", + "OF": "की" } } \ No newline at end of file diff --git a/public/app/main/apps/openchannel/i18n/it.json b/public/app/main/apps/openchannel/i18n/it.json index 7acf1e1..53621a7 100644 --- a/public/app/main/apps/openchannel/i18n/it.json +++ b/public/app/main/apps/openchannel/i18n/it.json @@ -13,7 +13,11 @@ "REJECTURL_MUST_VALID_URL": "L'URL Rifiuta deve essere in un formato valido", "CLOSEURL_MUST_VALID_URL": "L'URL Chiudi deve essere in un formato valido", "REPLYURI_REQUIRED": "L'URI di risposta è richiesto", - "REPLYURI_MUST_VALID_URL": "L'URI di risposta deve essere in un formato valido" + "REPLYURI_MUST_VALID_URL": "L'URI di risposta deve essere in un formato valido", + "PRIORITY_REQUIRED": "È necessario specificare la priorità.", + "CONDITION_REQUIRED": "La condizione è necessaria", + "TRUEPRIORITY_REQUIRED": "La vera Priorità è obbligatorio", + "FALSEPRIORITY_REQUIRED": "La falsa priorità è richiesto" }, "STRATEGY": "Strategia", "AGENT_TIMEOUT": "Timeout Agente", @@ -68,10 +72,49 @@ "HELP": { "RECEIVEURI": "Questa è la stringa API generata automaticamente che devi usare per ricevere i messaggi provenienti dalla tua applicatione esterna (deve essere usato il metodo POST). Puoi premere io bottone con l'icona del blocco note per copiarla negli appunti.", "REPLYURI": "Questo è lo URI usato dal canale open channel quando si invia o si risponde ad un messaggio", - "NAME": "Sono supportati solo numeri, lettere e caratteri specifici (._)" + "NAME": "Sono supportati solo numeri, lettere e caratteri specifici (._)", + "LIST": "Lista del Contact Manager usata per associare i contatti" }, "PAGE": "Pagina", "ROWSPERPAGE": "Righe per pagina", - "OF": "Di" + "OF": "di", + "AGENT": "Agent", + "GOTO": "Goto", + "GOTOIF": "Gotoif", + "NOOP": "Noop", + "QUEUE": "Coda", + "EDIT_AGENT": "Agente di modifica", + "EDIT_GOTO": "Modifica Goto", + "EDIT_NOOP": "Modifica Noop", + "EDIT_GOTOIF": "Modifica Gotoif", + "EDIT_QUEUE": "Modifica coda", + "CONDITION": "Condizione", + "TRUEPRIORITY": "True Priority", + "FALSEPRIORITY": "Falso la priorità", + "VALUE": "Valore", + "PRIORITY": "Priorità", + "PENALTY": "Penalità", + "TEAMADD_OPENCHANNELQUEUE": "Aggiungi squadra alla coda", + "AGENTADD_OPENCHANNELQUEUE": "Aggiungere agente per coda", + "ALL_AGENTS": "Tutti gli agenti", + "SELECTED_AGENTS": "Gli agenti selezionati", + "CONTACT": "Contatto", + "STARTEDAT": "Iniziata il", + "STATUS": "Stato", + "CLOSED": "Chiusa", + "OPENED": "Aperta", + "OPEN": "Apri", + "ACCOUNT": "Account", + "INTERACTION": "Interazione", + "INTERACTIONS": "Interazioni", + "ALL": "Tutte", + "SELECT_STATUS": "Seleziona uno stato", + "FILTER": "Filtro", + "FILTERS": "Filtri", + "CLOSEDAT": "Chiusa il", + "DISPOSITION": "Esito", + "NOTES": "Note", + "NO_INTERACTION_AVAILABLE": "Nessuna interazione disponibile", + "SELECT_ACCOUNT": "Seleziona un account" } } \ No newline at end of file diff --git a/public/app/main/apps/openchannel/i18n/ja.json b/public/app/main/apps/openchannel/i18n/ja.json index 8697f69..947fa88 100644 --- a/public/app/main/apps/openchannel/i18n/ja.json +++ b/public/app/main/apps/openchannel/i18n/ja.json @@ -13,7 +13,11 @@ "REJECTURL_MUST_VALID_URL": "拒否 URL に有効な形式で記述する必要があります", "CLOSEURL_MUST_VALID_URL": "閉じる URL を指定します。有効な形式で記述する必要があります", "REPLYURI_REQUIRED": "返信 URI が必要です", - "REPLYURI_MUST_VALID_URL": "[ 返信 ] の URI が有効な形式で記述する必要があります" + "REPLYURI_MUST_VALID_URL": "[ 返信 ] の URI が有効な形式で記述する必要があります", + "PRIORITY_REQUIRED": "優先順位は必要です", + "CONDITION_REQUIRED": "条件が必要です", + "TRUEPRIORITY_REQUIRED": "真の優先順位が必要で", + "FALSEPRIORITY_REQUIRED": "偽の優先順位が必要で" }, "STRATEGY": "戦略", "AGENT_TIMEOUT": "エージェントのタイムアウト", @@ -65,6 +69,33 @@ "SELECTED_TEAMS": "選択したチーム", "REPLYURI": "URI 返信", "RECEIVEURI": "URI の受信", - "HELP": {} + "HELP": { + "RECEIVEURI": "これは、自動生成される API 文字列を使用して、外部アプリケーション ( POST メソッドを使用する必要がありから、開いているチャネル内のメッセージを受信する必要があります。 クリップボードボタンをクリックしてクリップボードにコピーして押すことができます。", + "REPLYURI": "このメッセージへの返信を送信するとき、または開いているチャネルは、 URI にコール", + "NAME": "数字、文字、およびのみ特定の文字 ( 。 ) はサポートされています" + }, + "AGENT": "エージェント", + "GOTO": "後藤", + "GOTOIF": "Gotoif", + "NOOP": "Noop", + "QUEUE": "キュー", + "EDIT_AGENT": "エージェントの編集", + "EDIT_GOTO": "Goto の編集", + "EDIT_NOOP": "Noop を編集", + "EDIT_GOTOIF": "編集 Gotoif", + "EDIT_QUEUE": "「キューの編集", + "CONDITION": "状態", + "TRUEPRIORITY": "真の優先度", + "FALSEPRIORITY": "False の優先順位", + "VALUE": "値", + "PRIORITY": "優先順位", + "PENALTY": "ペナルティ", + "TEAMADD_OPENCHANNELQUEUE": "チームにキューを追加します。", + "AGENTADD_OPENCHANNELQUEUE": "エージェントにキューを追加します。", + "ALL_AGENTS": "すべてのエージェント", + "SELECTED_AGENTS": "選択されたエージェント", + "PAGE": "ページ", + "ROWSPERPAGE": "ページあたりの行数", + "OF": "の" } } \ No newline at end of file diff --git a/public/app/main/apps/openchannel/i18n/ko.json b/public/app/main/apps/openchannel/i18n/ko.json index aca8f52..f8a3c94 100644 --- a/public/app/main/apps/openchannel/i18n/ko.json +++ b/public/app/main/apps/openchannel/i18n/ko.json @@ -13,7 +13,11 @@ "REJECTURL_MUST_VALID_URL": "거부 URL 유효한 형식으로 작성되어 있어야 합니다", "CLOSEURL_MUST_VALID_URL": "닫기 URL 유효한 형식으로 작성되어 있어야 합니다", "REPLYURI_REQUIRED": "회신 대상 URI가 필요합니다.", - "REPLYURI_MUST_VALID_URL": "회신 대상 URI 유효한 형식으로 작성되어 있어야 합니다" + "REPLYURI_MUST_VALID_URL": "회신 대상 URI 유효한 형식으로 작성되어 있어야 합니다", + "PRIORITY_REQUIRED": "우선 필요합니다.", + "CONDITION_REQUIRED": "조건이 필요합니다.", + "TRUEPRIORITY_REQUIRED": "진정한 우선 필요합니다.", + "FALSEPRIORITY_REQUIRED": "잘못된 우선 순위 가 필요합니다." }, "STRATEGY": "전략", "AGENT_TIMEOUT": "상담원 시간 초과", @@ -65,6 +69,33 @@ "SELECTED_TEAMS": "선택한 팀에", "REPLYURI": "Uri 회신", "RECEIVEURI": "Uri 받기", - "HELP": {} + "HELP": { + "RECEIVEURI": "이것은 자동 생성 API 문자열 채널을 열어 내부에 외부 응용 프로그램(Post 메서드를 사용해야 합니다 보내는 메시지를 받기) 사용해야 합니다. Clipboard 단추를 사용하여 클립보드에 복사하기 누를 수 있습니다.", + "REPLYURI": "이 메시지를 보내거나 응답할 때 URI를 채널을 열어 지칭", + "NAME": "숫자와 글자 및 특정 문자(._) 지원됩니다." + }, + "AGENT": "상담원", + "GOTO": "Goto", + "GOTOIF": "Gotoif", + "NOOP": "Noop", + "QUEUE": "대기열", + "EDIT_AGENT": "상담원 편집", + "EDIT_GOTO": "Goto 편집", + "EDIT_NOOP": "Noop 편집", + "EDIT_GOTOIF": "편집 Gotoif", + "EDIT_QUEUE": "편집 대기", + "CONDITION": "ì¡°ê±´", + "TRUEPRIORITY": "진정한 우선 순위", + "FALSEPRIORITY": "잘못된 우선 순위", + "VALUE": "값", + "PRIORITY": "우선 순위", + "PENALTY": "페널티", + "TEAMADD_OPENCHANNELQUEUE": "팀 대기열에 추가", + "AGENTADD_OPENCHANNELQUEUE": "상담원 대기열에 추가", + "ALL_AGENTS": "모든 상담원", + "SELECTED_AGENTS": "선택된 상담원", + "PAGE": "페이지", + "ROWSPERPAGE": "페이지 당 행", + "OF": "중" } } \ No newline at end of file diff --git a/public/app/main/apps/openchannel/i18n/nl.json b/public/app/main/apps/openchannel/i18n/nl.json index 4c557be..939ae60 100644 --- a/public/app/main/apps/openchannel/i18n/nl.json +++ b/public/app/main/apps/openchannel/i18n/nl.json @@ -13,7 +13,11 @@ "REJECTURL_MUST_VALID_URL": "De afwijzing URL moet worden geschreven in een geldige indeling", "CLOSEURL_MUST_VALID_URL": "De nauwe URL moet worden geschreven in een geldige indeling", "REPLYURI_REQUIRED": "Het antwoord URI is vereist", - "REPLYURI_MUST_VALID_URL": "Het antwoord URI moet worden geschreven in een geldige indeling" + "REPLYURI_MUST_VALID_URL": "Het antwoord URI moet worden geschreven in een geldige indeling", + "PRIORITY_REQUIRED": "De prioriteit is vereist.", + "CONDITION_REQUIRED": "De conditie is vereist", + "TRUEPRIORITY_REQUIRED": "De echte prioriteit is vereist.", + "FALSEPRIORITY_REQUIRED": "De valse prioriteit is vereist." }, "STRATEGY": "Strategie", "AGENT_TIMEOUT": "Time-out agent", @@ -65,6 +69,33 @@ "SELECTED_TEAMS": "Geselecteerde teams", "REPLYURI": "Reageer URI", "RECEIVEURI": "Ontvang URI", - "HELP": {} + "HELP": { + "RECEIVEURI": "Dit is het automatisch gegenereerde API string hebt u de berichten in uw open kanaal uit de externe toepassing (POST methode moet worden gebruikt). U kunt op het klembord te kopiëren naar het klembord.", + "REPLYURI": "Dit is de URI (Uniform Resource Identifier) het open kanaal zal bellen wanneer u een bericht verstuurt of beantwoorden van een bericht", + "NAME": "Alleen cijfers, letters en speciale tekens (_) worden ondersteund" + }, + "AGENT": "Agent", + "GOTO": "Goto", + "GOTOIF": "Gotoif", + "NOOP": "Noop", + "QUEUE": "Wachtrij", + "EDIT_AGENT": "Edit Agent", + "EDIT_GOTO": "Ga naar bewerken", + "EDIT_NOOP": "Noop bewerken", + "EDIT_GOTOIF": "Gotoif bewerken", + "EDIT_QUEUE": "Wachtrij bewerken", + "CONDITION": "Voorwaarde", + "TRUEPRIORITY": "Echte prioriteit", + "FALSEPRIORITY": "False prioriteit", + "VALUE": "Waarde", + "PRIORITY": "Prioriteit", + "PENALTY": "Boete", + "TEAMADD_OPENCHANNELQUEUE": "Toevoegen aan wachtrij", + "AGENTADD_OPENCHANNELQUEUE": "Agent toevoegen aan een wachtrij", + "ALL_AGENTS": "Alle gebruikers zijn agenten", + "SELECTED_AGENTS": "Geselecteerde agenten", + "PAGE": "Pagina", + "ROWSPERPAGE": "Rijen per pagina", + "OF": "Van" } } \ No newline at end of file diff --git a/public/app/main/apps/openchannel/i18n/no.json b/public/app/main/apps/openchannel/i18n/no.json index d281563..7d4d463 100644 --- a/public/app/main/apps/openchannel/i18n/no.json +++ b/public/app/main/apps/openchannel/i18n/no.json @@ -13,7 +13,11 @@ "REJECTURL_MUST_VALID_URL": "Avvis URL mÃ¥ være skrevet i et gyldig format", "CLOSEURL_MUST_VALID_URL": "Lukk URL mÃ¥ være skrevet i et gyldig format", "REPLYURI_REQUIRED": "Svar URI er nødvendig", - "REPLYURI_MUST_VALID_URL": "Svar URI mÃ¥ være skrevet i et gyldig format" + "REPLYURI_MUST_VALID_URL": "Svar URI mÃ¥ være skrevet i et gyldig format", + "PRIORITY_REQUIRED": "Prioriteten er nødvendig", + "CONDITION_REQUIRED": "Tilstanden er nødvendig", + "TRUEPRIORITY_REQUIRED": "Den ekte prioritet er nødvendig", + "FALSEPRIORITY_REQUIRED": "Den falske prioritet er nødvendig" }, "STRATEGY": "Strategi", "AGENT_TIMEOUT": "Agent tidsavbrudd", @@ -65,6 +69,33 @@ "SELECTED_TEAMS": "Valgte lag", "REPLYURI": "Svar URI", "RECEIVEURI": "Motta URI", - "HELP": {} + "HELP": { + "RECEIVEURI": "Dette er auto-generert API-strengen du trenger for Ã¥ bruke til Ã¥ motta meldinger inne i Ã¥pen kanal fra den eksterne applikasjonen (POST-metoden mÃ¥ brukes). Du kan trykke pÃ¥ utklippstavlen for Ã¥ kopiere det pÃ¥ utklippstavlen.", + "REPLYURI": "Dette er URI den Ã¥pne kanalen vil ringe nÃ¥r du sender eller svare pÃ¥ en melding", + "NAME": "Bare tall, bokstaver og bestemte tegn (._) støttes" + }, + "AGENT": "Agent", + "GOTO": "GÃ¥ til", + "GOTOIF": "Gotoif", + "NOOP": "Noop", + "QUEUE": "Kø", + "EDIT_AGENT": "Rediger Agent", + "EDIT_GOTO": "Rediger Goto", + "EDIT_NOOP": "Rediger Noop", + "EDIT_GOTOIF": "Rediger Gotoif", + "EDIT_QUEUE": "Rediger kø", + "CONDITION": "Tilstand", + "TRUEPRIORITY": "Ekte prioritet", + "FALSEPRIORITY": "Falske prioritet", + "VALUE": "Verdi", + "PRIORITY": "Prioritet", + "PENALTY": "Penalty", + "TEAMADD_OPENCHANNELQUEUE": "Legg lag til kø", + "AGENTADD_OPENCHANNELQUEUE": "Legg til Agent til kø", + "ALL_AGENTS": "Alle agenter", + "SELECTED_AGENTS": "Valgt agenter", + "PAGE": "Siden", + "ROWSPERPAGE": "Linjer per side", + "OF": "Av" } } \ No newline at end of file diff --git a/public/app/main/apps/openchannel/i18n/pt-PT.json b/public/app/main/apps/openchannel/i18n/pt-PT.json index cb07b07..9f48e06 100644 --- a/public/app/main/apps/openchannel/i18n/pt-PT.json +++ b/public/app/main/apps/openchannel/i18n/pt-PT.json @@ -13,7 +13,11 @@ "REJECTURL_MUST_VALID_URL": "A rejeitar a URL deve ser escrito em um formato válido", "CLOSEURL_MUST_VALID_URL": "A FECHAR A URL deve ser escrito em um formato válido", "REPLYURI_REQUIRED": "A resposta é necessária URI", - "REPLYURI_MUST_VALID_URL": "A resposta URI deve ser escrito em um formato válido" + "REPLYURI_MUST_VALID_URL": "A resposta URI deve ser escrito em um formato válido", + "PRIORITY_REQUIRED": "A prioridade é necessária", + "CONDITION_REQUIRED": "A condição é necessária", + "TRUEPRIORITY_REQUIRED": "A verdadeira prioridade é obrigatório", + "FALSEPRIORITY_REQUIRED": "O falso é necessária prioridade" }, "STRATEGY": "Estratégia", "AGENT_TIMEOUT": "Tempo Limite do Agente", @@ -65,6 +69,33 @@ "SELECTED_TEAMS": "Equipes selecionadas", "REPLYURI": "Resposta URI", "RECEIVEURI": "Receber URI", - "HELP": {} + "HELP": { + "RECEIVEURI": "Esta é a API de auto-gerados de caracteres que você precisa usar para receber as mensagens no interior do seu canal aberto a partir do seu aplicativo externo (método POST deve ser usado). Você pode pressionar o botão de transferência para copiar na área de transferência.", + "REPLYURI": "Esta é a URI canal aberto será chamada quando enviar ou responder a uma mensagem", + "NAME": "Apenas números, letras e caracteres específicos (._) são suportados" + }, + "AGENT": "Agente", + "GOTO": "Ir para", + "GOTOIF": "Gotoif", + "NOOP": "Noop", + "QUEUE": "Fila", + "EDIT_AGENT": "Editar Agente", + "EDIT_GOTO": "Ir para editar", + "EDIT_NOOP": "Editar Noop", + "EDIT_GOTOIF": "Editar Gotoif", + "EDIT_QUEUE": "Fila de edição", + "CONDITION": "Estado", + "TRUEPRIORITY": "Verdadeira Prioridade", + "FALSEPRIORITY": "Falsa Prioridade", + "VALUE": "Valor", + "PRIORITY": "Prioridade", + "PENALTY": "Sanção", + "TEAMADD_OPENCHANNELQUEUE": "Adicionar grupo de fila", + "AGENTADD_OPENCHANNELQUEUE": "Adicionar agente para fila de espera", + "ALL_AGENTS": "Todos os Agentes", + "SELECTED_AGENTS": "Agentes selecionados", + "PAGE": "Página", + "ROWSPERPAGE": "Linhas por página", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/openchannel/i18n/ru.json b/public/app/main/apps/openchannel/i18n/ru.json index c1c3ff8..599be5b 100644 --- a/public/app/main/apps/openchannel/i18n/ru.json +++ b/public/app/main/apps/openchannel/i18n/ru.json @@ -13,7 +13,11 @@ "REJECTURL_MUST_VALID_URL": "Отклонить URL должен быть записан в действительный формат", "CLOSEURL_MUST_VALID_URL": "Закрыть адрес URL должен быть записан в действительный формат", "REPLYURI_REQUIRED": "Ответ URI не требуется", - "REPLYURI_MUST_VALID_URL": "Ответ URI должен быть написан в действительный формат" + "REPLYURI_MUST_VALID_URL": "Ответ URI должен быть написан в действительный формат", + "PRIORITY_REQUIRED": "Приоритет не требуется", + "CONDITION_REQUIRED": "Состояние не требуется", + "TRUEPRIORITY_REQUIRED": "Истинный приоритет не требуется", + "FALSEPRIORITY_REQUIRED": "Ложные приоритет не требуется" }, "STRATEGY": "Стратегия", "AGENT_TIMEOUT": "Время ожидания оператора", @@ -65,6 +69,33 @@ "SELECTED_TEAMS": "Выбранные группы", "REPLYURI": "Ответ URI", "RECEIVEURI": "Получить URI", - "HELP": {} + "HELP": { + "RECEIVEURI": "Это автоматически генерируемый API строки Вы должны использовать для приема сообщений внутри вашего открыть канал из внешнего приложения (POST метод должен использоваться). Вы можете нажать кнопку в буфер обмена для копирования в буфер обмена.", + "REPLYURI": "Это URI открытого канала будет вызов при отправке или ответе на сообщение", + "NAME": "Только цифры, буквы и специальные символы (_) поддерживаются" + }, + "AGENT": "Оператор", + "GOTO": "Goto", + "GOTOIF": "Gotoif", + "NOOP": "Noop", + "QUEUE": "Очереди", + "EDIT_AGENT": "Редактирование оператора", + "EDIT_GOTO": "Редактировать Goto", + "EDIT_NOOP": "Редактировать Noop", + "EDIT_GOTOIF": "Редактировать Gotoif", + "EDIT_QUEUE": "Редактирования очереди", + "CONDITION": "Состояние", + "TRUEPRIORITY": "Действительно первоочередной задачей", + "FALSEPRIORITY": "Ложные приоритетных", + "VALUE": "Значение", + "PRIORITY": "Первоочередное внимание", + "PENALTY": "Смертная казнь", + "TEAMADD_OPENCHANNELQUEUE": "Добавить группу в очереди", + "AGENTADD_OPENCHANNELQUEUE": "Добавить оператора в очереди", + "ALL_AGENTS": "Все Операторы", + "SELECTED_AGENTS": "Выбранные операторы", + "PAGE": "Страница", + "ROWSPERPAGE": "Строк на странице", + "OF": "В" } } \ No newline at end of file diff --git a/public/app/main/apps/openchannel/i18n/sv.json b/public/app/main/apps/openchannel/i18n/sv.json index 34092b3..7c8f93c 100644 --- a/public/app/main/apps/openchannel/i18n/sv.json +++ b/public/app/main/apps/openchannel/i18n/sv.json @@ -13,7 +13,11 @@ "REJECTURL_MUST_VALID_URL": "Avvisa URL mÃ¥ste vara skrivna pÃ¥ ett giltigt format", "CLOSEURL_MUST_VALID_URL": "Stäng URL mÃ¥ste vara skrivna pÃ¥ ett giltigt format", "REPLYURI_REQUIRED": "Svaret URI krävs", - "REPLYURI_MUST_VALID_URL": "Svaret URI mÃ¥ste skrivas i ett giltigt format" + "REPLYURI_MUST_VALID_URL": "Svaret URI mÃ¥ste skrivas i ett giltigt format", + "PRIORITY_REQUIRED": "Den prioritet som krävs", + "CONDITION_REQUIRED": "Skicket är obligatoriskt", + "TRUEPRIORITY_REQUIRED": "Den verkliga prioriterade krävs", + "FALSEPRIORITY_REQUIRED": "Den falska prioritering krävs" }, "STRATEGY": "Strategi", "AGENT_TIMEOUT": "Tidsgräns för agent", @@ -65,6 +69,33 @@ "SELECTED_TEAMS": "Valda grupper", "REPLYURI": "Svar URI", "RECEIVEURI": "FÃ¥ URI", - "HELP": {} + "HELP": { + "RECEIVEURI": "Det är auto-genererade API snöre som du behöver använda för att ta emot meddelanden i din öppna kanalen frÃ¥n din externa program (efter metod mÃ¥ste användas). Du kan trycka pÃ¥ clipboarden för att kopiera det i urklipp.", + "REPLYURI": "Detta är URI den öppna kanalen kommer att ringa när du skickar eller svarar pÃ¥ ett meddelande", + "NAME": "Endast siffror, bokstäver och särskilda tecken (_) stöds" + }, + "AGENT": "Agent", + "GOTO": "Goto", + "GOTOIF": "Gotoif", + "NOOP": "Noop", + "QUEUE": "Kö", + "EDIT_AGENT": "Redigera Agent", + "EDIT_GOTO": "Redigera Goto", + "EDIT_NOOP": "Redigera Noop", + "EDIT_GOTOIF": "Redigera Gotoif", + "EDIT_QUEUE": "Redigera kö", + "CONDITION": "Skick", + "TRUEPRIORITY": "True Priority", + "FALSEPRIORITY": "Falska prioritet", + "VALUE": "Värde", + "PRIORITY": "Prioritet", + "PENALTY": "Dödsstraff", + "TEAMADD_OPENCHANNELQUEUE": "Lägg till Team till kö", + "AGENTADD_OPENCHANNELQUEUE": "Lägg medlet till kö", + "ALL_AGENTS": "Alla agenter", + "SELECTED_AGENTS": "Valda agenter", + "PAGE": "Sidan", + "ROWSPERPAGE": "Rader per sida", + "OF": "Av" } } \ No newline at end of file diff --git a/public/app/main/apps/openchannel/i18n/tr.json b/public/app/main/apps/openchannel/i18n/tr.json index 37eaf41..1e93c69 100644 --- a/public/app/main/apps/openchannel/i18n/tr.json +++ b/public/app/main/apps/openchannel/i18n/tr.json @@ -13,7 +13,11 @@ "REJECTURL_MUST_VALID_URL": "Reddetme URL yazılmış olması gerekir. geçerli bir format", "CLOSEURL_MUST_VALID_URL": "Kapat URL yazılmış olması gerekir. geçerli bir format", "REPLYURI_REQUIRED": "Cevap URI gerekiyor.", - "REPLYURI_MUST_VALID_URL": "Cevap URI mutlaka yazılı geçerli bir format" + "REPLYURI_MUST_VALID_URL": "Cevap URI mutlaka yazılı geçerli bir format", + "PRIORITY_REQUIRED": "Öncelikli olarak gerekli", + "CONDITION_REQUIRED": "Bu durumda gerekli", + "TRUEPRIORITY_REQUIRED": "Gerçek Öncelik gerekli", + "FALSEPRIORITY_REQUIRED": "Yanlış Öncelik gerekli" }, "STRATEGY": "Strateji", "AGENT_TIMEOUT": "Ajan Zaman Aşımı", @@ -65,6 +69,33 @@ "SELECTED_TEAMS": "Seçilen Ekipleri", "REPLYURI": "Cevap URI", "RECEIVEURI": "Alma URI", - "HELP": {} + "HELP": { + "RECEIVEURI": "Bu otomatik oluşturulan API string için, mesajları, açık kanal harici uygulama (POST metodu kullanılmalıdır.). , Pano için kopyalama, panoya kopyalar.", + "REPLYURI": "Bu URI açık kanal çağrı gönderme veya mesajı yanıtlama", + "NAME": "Sadece sayılar, harfler ve özel karakterler (._) desteklenir." + }, + "AGENT": "Ajan", + "GOTO": "Git", + "GOTOIF": "Gotoif", + "NOOP": "Noop", + "QUEUE": "Kuyruk", + "EDIT_AGENT": "Edit Agent", + "EDIT_GOTO": "Edit Git", + "EDIT_NOOP": "Noop Düzenle", + "EDIT_GOTOIF": "Edit Gotoif", + "EDIT_QUEUE": "Edit Sırası", + "CONDITION": "Durumunu", + "TRUEPRIORITY": "Gerçek Öncelik", + "FALSEPRIORITY": "Yanlış Öncelik", + "VALUE": "Değer", + "PRIORITY": "Öncelik", + "PENALTY": "Cezasının", + "TEAMADD_OPENCHANNELQUEUE": "Add Team Kuyruk", + "AGENTADD_OPENCHANNELQUEUE": "Add Ajans Kuyruk", + "ALL_AGENTS": "Tüm Temsilciler", + "SELECTED_AGENTS": "Seçilen maddeler", + "PAGE": "Sayfa", + "ROWSPERPAGE": "Sayfadaki satırları", + "OF": "Ve" } } \ No newline at end of file diff --git a/public/app/main/apps/openchannel/i18n/zh-CN.json b/public/app/main/apps/openchannel/i18n/zh-CN.json index ddedf2e..87c84c8 100644 --- a/public/app/main/apps/openchannel/i18n/zh-CN.json +++ b/public/app/main/apps/openchannel/i18n/zh-CN.json @@ -13,7 +13,11 @@ "REJECTURL_MUST_VALID_URL": "“拒绝” 的 URL 必须是书面的格式无效", "CLOSEURL_MUST_VALID_URL": "关闭 URL 必须是书面的格式无效", "REPLYURI_REQUIRED": "回复 URI 是必需的", - "REPLYURI_MUST_VALID_URL": "回复 URI 必须书面格式无效" + "REPLYURI_MUST_VALID_URL": "回复 URI 必须书面格式无效", + "PRIORITY_REQUIRED": "优先级是必需的", + "CONDITION_REQUIRED": "条件是必需的", + "TRUEPRIORITY_REQUIRED": "真正的优先事项是必需的", + "FALSEPRIORITY_REQUIRED": "错误的优先级是必需的" }, "STRATEGY": "战略", "AGENT_TIMEOUT": "代理超时", @@ -65,6 +69,33 @@ "SELECTED_TEAMS": "选定的组", "REPLYURI": "答覆的 URI", "RECEIVEURI": "接收的 URI", - "HELP": {} + "HELP": { + "RECEIVEURI": "这是自动生成的 API 字符串需要使用接收的讯息的渠道, 从您的外部应用程序(开机自检的方法必须使用)。 您可以按 “剪贴板” 按钮以将其复制到您的剪贴板上。", + "REPLYURI": "这是开放的开放的通道将呼叫发送或回复消息", + "NAME": "只有数字、字母和特殊字符(_)的支持" + }, + "AGENT": "座席", + "GOTO": "Goto", + "GOTOIF": "Gotoif", + "NOOP": "Noop", + "QUEUE": "队列", + "EDIT_AGENT": "编辑座席", + "EDIT_GOTO": "编辑 Goto", + "EDIT_NOOP": "编辑 Noop", + "EDIT_GOTOIF": "Gotoif 编辑", + "EDIT_QUEUE": "编辑队列", + "CONDITION": "条件", + "TRUEPRIORITY": "真正的优先事项", + "FALSEPRIORITY": "虚假优先级", + "VALUE": "值", + "PRIORITY": "优先级", + "PENALTY": "刑罚", + "TEAMADD_OPENCHANNELQUEUE": "添加组至队列", + "AGENTADD_OPENCHANNELQUEUE": "代理添加到队列中", + "ALL_AGENTS": "所有座席", + "SELECTED_AGENTS": "选定的座席", + "PAGE": "页面", + "ROWSPERPAGE": "每页的行数。", + "OF": "的" } } \ No newline at end of file diff --git a/public/app/main/apps/openchannel/i18n/zh-TW.json b/public/app/main/apps/openchannel/i18n/zh-TW.json index cb5fd6d..9f9fce3 100644 --- a/public/app/main/apps/openchannel/i18n/zh-TW.json +++ b/public/app/main/apps/openchannel/i18n/zh-TW.json @@ -13,7 +13,11 @@ "REJECTURL_MUST_VALID_URL": "拒絕 URL 必須以有效的格式", "CLOSEURL_MUST_VALID_URL": "關閉的 URL 必須以有效的格式", "REPLYURI_REQUIRED": "回覆所需的 URI", - "REPLYURI_MUST_VALID_URL": "回覆 URI 必須書面的格式無效" + "REPLYURI_MUST_VALID_URL": "回覆 URI 必須書面的格式無效", + "PRIORITY_REQUIRED": "優先級", + "CONDITION_REQUIRED": "需要的條件", + "TRUEPRIORITY_REQUIRED": "真正的重點是必填項", + "FALSEPRIORITY_REQUIRED": "這個錯誤的優先順序是必要的" }, "STRATEGY": "策略", "AGENT_TIMEOUT": "值機人員等候逾時", @@ -65,6 +69,33 @@ "SELECTED_TEAMS": "選取群組", "REPLYURI": "回覆 URI", "RECEIVEURI": "收到的 URI", - "HELP": {} + "HELP": { + "RECEIVEURI": "這是自動生成的 API 串您需要使用接收的訊息在您打開通道從您的外部應用程式 ( 必須使用 POST 方法 ) 。 您可以按下按鈕以將其複製到您的剪貼簿剪貼簿。", + "REPLYURI": "這是開放的我們打開通道將通話傳送或回覆訊息時", + "NAME": "只有數字、字母和特殊字元 ( _ ) 都受到支援" + }, + "AGENT": "值機員", + "GOTO": "Goto", + "GOTOIF": "Gotoif", + "NOOP": "Noop", + "QUEUE": "佇列", + "EDIT_AGENT": "編輯值機員", + "EDIT_GOTO": "編輯執行 ?", + "EDIT_NOOP": "編輯 Noop", + "EDIT_GOTOIF": "編輯 Gotoif", + "EDIT_QUEUE": "編輯隊列", + "CONDITION": "條件", + "TRUEPRIORITY": "真正的優先順序", + "FALSEPRIORITY": "錯誤的優先順序", + "VALUE": "值", + "PRIORITY": "優先順序", + "PENALTY": "罰款", + "TEAMADD_OPENCHANNELQUEUE": "新增群組到佇列", + "AGENTADD_OPENCHANNELQUEUE": "新增值機員至佇列", + "ALL_AGENTS": "所有值機員", + "SELECTED_AGENTS": "選定的值機員", + "PAGE": "頁面", + "ROWSPERPAGE": "每頁行數", + "OF": "的" } } \ No newline at end of file diff --git a/public/app/main/apps/settings/i18n/da.json b/public/app/main/apps/settings/i18n/da.json index 24d8c5a..c7f782b 100644 --- a/public/app/main/apps/settings/i18n/da.json +++ b/public/app/main/apps/settings/i18n/da.json @@ -62,7 +62,11 @@ "ADD_NETWORK": "Add Network", "HELP": { "ADDRESS": "Adressen pÃ¥ nettet", - "LOCALNETADDRESS": "IP-adresse og undernetmaske" + "LOCALNETADDRESS": "IP-adresse og undernetmaske", + "SMTP_SECURE": "Hvis det er rigtigt, at forbindelsen vil bruge TLS til at oprette forbindelse til server", + "SMTP_USERNAME": "Brugernavn bruges til godkendelse", + "SMTP_PASSWORD": "Adgangskoden bruges til godkendelse", + "EMAILADDRESS": "Angive de oprindelige e-mail-adresse Besked (fra)" }, "ERRORS": { "ADDRESS_REQUIRED": "Adressen er pÃ¥krævet", @@ -72,7 +76,16 @@ "HEADER_WHITELABEL_REQUIRED": "Det whitelabel er pÃ¥krævet", "LOCALNETADDRESS_REQUIRED": "Localnet adresse pÃ¥krævet", "LOCALNETADDRESS_MUST_VALID_PATTERN": "Localnet skal være gyldigt et gyldigt mønster", - "ADDRESS_MUST_VALID_PATTERN": "Adressen skal være gyldig mønster" + "ADDRESS_MUST_VALID_PATTERN": "Adressen skal være gyldig mønster", + "ACCOUNTNAME_REQUIRED": "Kontonavnet er pÃ¥krævet", + "EMAILADDRESS_REQUIRED": "E-mail-adresse er nødvendig", + "EMAILADDRESS_MUST_VALID": "E-mail-adressen skal være skrevet i et gyldigt format", + "SMTP_USERNAME_REQUIRED": "Brugernavn er pÃ¥krævet", + "PASSWORD_REQUIRED": "Adgangskoden kræves", + "SMTP_HOST_REQUIRED": "Værten er pÃ¥krævet", + "SMTP_PORT_REQUIRED": "Havnen er pÃ¥krævet", + "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min Indre skal være større end eller lig med", + "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min postkasse skal være større end eller lig med" }, "EDIT_NETWORK": "Edit Network", "DELETE_NETWORK": "Delete Network", @@ -118,6 +131,18 @@ "TRIAL_VERSION": "Prøveversion", "RELOAD": "Reload", "VERIFY": "Kontroller", - "GLOBAL": "Global" + "GLOBAL": "Global", + "SMTP_AUTHENTICATION": "Netværksgodkendelse", + "LICENSE_REQUEST_SENT": "Tak! Den licensudstedende Team undersøger din konto asap for at godkende anmodninger: Du vil modtage en e-mail nÃ¥r ændringerne træder i kraft. Se license@xcally.com for yderligere oplysninger.", + "ACCOUNTNAME": "Kontonavn", + "EMAILADDRESS": "E-mail adresse", + "EXPIRATION_REASON_MESSAGE": "Din licens er udløbet eller din maskine unik id er blevet opdateret pga. en ændring i deres system. Kontakte xCALLY Motion supportteam sender bÃ¥de dit gamle og dit nye uuid.", + "OLD_TOKEN": "Gamle Token", + "SEND_EMAIL_TO": "Send email til", + "CONTACT_XCALLY_MOTION_SUPPORT": "Kontakt xCALLY Motion støtte", + "JIRA_ERROR_MESSAGE": "Fejl under licens. Kontakt vores salgsteam pÃ¥ license@xcally.com licens med din anmodning", + "PAGE": "Page", + "ROWSPERPAGE": "Rækker pr. side", + "OF": "Af" } } \ No newline at end of file diff --git a/public/app/main/apps/settings/i18n/de.json b/public/app/main/apps/settings/i18n/de.json index 096ec3b..a47a7e0 100644 --- a/public/app/main/apps/settings/i18n/de.json +++ b/public/app/main/apps/settings/i18n/de.json @@ -62,7 +62,11 @@ "ADD_NETWORK": "Netzwerk hinzufügen", "HELP": { "ADDRESS": "Die Adresse des Netzwerks", - "LOCALNETADDRESS": "IP-Adresse/Subnetzmaske" + "LOCALNETADDRESS": "IP-Adresse/Subnetzmaske", + "SMTP_SECURE": "Bei true wird die Verbindung TLS verwenden, wenn eine Verbindung zu Server", + "SMTP_USERNAME": "Benutzername für die Authentifizierung verwendet werden", + "SMTP_PASSWORD": "Kennwort für die Authentifizierung verwendet werden", + "EMAILADDRESS": "Geben Sie die E-Mail-Adresse der Nachricht (von)" }, "ERRORS": { "ADDRESS_REQUIRED": "Die Adresse ist erforderlich", @@ -72,7 +76,16 @@ "HEADER_WHITELABEL_REQUIRED": "Die whitelabel ist erforderlich", "LOCALNETADDRESS_REQUIRED": "Localnet Adresse erforderlich", "LOCALNETADDRESS_MUST_VALID_PATTERN": "Localnet gültig sein muss eine gültige Muster", - "ADDRESS_MUST_VALID_PATTERN": "Adresse muss eine gültige Muster sein" + "ADDRESS_MUST_VALID_PATTERN": "Adresse muss eine gültige Muster sein", + "ACCOUNTNAME_REQUIRED": "Das Konto Name ist erforderlich", + "EMAILADDRESS_REQUIRED": "Die E-Mail Adresse ist erforderlich", + "EMAILADDRESS_MUST_VALID": "Die E-Mail-Adresse muss ein gültiges Format geschrieben werden", + "SMTP_USERNAME_REQUIRED": "Der Benutzername ist erforderlich", + "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich", + "SMTP_HOST_REQUIRED": "Der Host wird benötigt", + "SMTP_PORT_REQUIRED": "Der Port ist erforderlich", + "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Min-internen muss größer als oder gleich", + "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Min-Mailbox muss größer als oder gleich" }, "EDIT_NETWORK": "Netzwerk bearbeiten", "DELETE_NETWORK": "Netzwerk löschen", @@ -118,6 +131,18 @@ "TRIAL_VERSION": "Testversion", "RELOAD": "Neu laden", "VERIFY": "Überprüfen Sie, ob", - "GLOBAL": "Global" + "GLOBAL": "Global", + "SMTP_AUTHENTICATION": "Authentifizierung", + "LICENSE_REQUEST_SENT": "Vielen Dank! Die Lizenzierung Team wird Sie in Ihrem Konto so schnell wie möglich um Ihre Wünsche zu genehmigen: erhalten Sie eine e-Mail, wenn die Änderungen wirksam werden. Lesen Sie bitte für weitere Informationen an License@xcally.com.", + "ACCOUNTNAME": "Konto Name", + "EMAILADDRESS": "E-mail Adresse", + "EXPIRATION_REASON_MESSAGE": "Ihre Lizenz ist abgelaufen oder Ihre Maschine eindeutige Id wurde aufgrund einer Änderung an Ihrem System aktualisiert. Die xCALLY Motion Support Team Ihre alte und Ihre neue uuid senden Kontakt.", + "OLD_TOKEN": "Alte Token", + "SEND_EMAIL_TO": "E-Mail senden an", + "CONTACT_XCALLY_MOTION_SUPPORT": "Kontakt xCALLY Motion Support", + "JIRA_ERROR_MESSAGE": "Fehler während der Lizenz anfordern. Bitte kontaktieren Sie unser Team bei License@xcally.com mit Ihrer Anfrage", + "PAGE": "Seite", + "ROWSPERPAGE": "Zeilen pro Seite", + "OF": "Von" } } \ No newline at end of file diff --git a/public/app/main/apps/settings/i18n/en.json b/public/app/main/apps/settings/i18n/en.json index 4dad458..e226b2c 100644 --- a/public/app/main/apps/settings/i18n/en.json +++ b/public/app/main/apps/settings/i18n/en.json @@ -91,7 +91,9 @@ "SMTP_USERNAME_REQUIRED": "The Username is required", "PASSWORD_REQUIRED": "The Password is required", "SMTP_HOST_REQUIRED": "The Host is required", - "SMTP_PORT_REQUIRED": "The Port is required" + "SMTP_PORT_REQUIRED": "The Port is required", + "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Min Internal must be greater than or equal to", + "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Min Mailbox must be greater than or equal to" }, "EDIT_NETWORK": "Edit Network", "DELETE_NETWORK": "Delete Network", @@ -142,6 +144,6 @@ "JIRA_ERROR_MESSAGE": "Error during license request. Please contact our license team at license@xcally.com with your request", "PAGE": "Page", "ROWSPERPAGE": "Rows per page", - "OF": "Of" + "OF": "of" } } \ No newline at end of file diff --git a/public/app/main/apps/settings/i18n/es.json b/public/app/main/apps/settings/i18n/es.json index 72e7d6c..592714c 100644 --- a/public/app/main/apps/settings/i18n/es.json +++ b/public/app/main/apps/settings/i18n/es.json @@ -62,7 +62,11 @@ "ADD_NETWORK": "Añadir red", "HELP": { "ADDRESS": "La dirección de la red", - "LOCALNETADDRESS": "Dirección IP/máscara de subred" + "LOCALNETADDRESS": "Dirección IP/máscara de subred", + "SMTP_SECURE": "Si el valor es true usará la conexión TLS cuando se conecta a un servidor", + "SMTP_USERNAME": "Nombre de usuario utilizado para la autenticación", + "SMTP_PASSWORD": "Contraseña utilizada para la autenticación", + "EMAILADDRESS": "Especifique la dirección de correo electrónico de origen del mensaje (de)" }, "ERRORS": { "ADDRESS_REQUIRED": "La dirección es obligatoria", @@ -72,7 +76,16 @@ "HEADER_WHITELABEL_REQUIRED": "El whitelabel es obligatorio", "LOCALNETADDRESS_REQUIRED": "Localnet dirección requerida", "LOCALNETADDRESS_MUST_VALID_PATTERN": "Localnet debe ser válido un patrón válido", - "ADDRESS_MUST_VALID_PATTERN": "La dirección debe ser un modelo válido" + "ADDRESS_MUST_VALID_PATTERN": "La dirección debe ser un modelo válido", + "ACCOUNTNAME_REQUIRED": "Es necesario el nombre de la cuenta", + "EMAILADDRESS_REQUIRED": "Es necesario introducir la dirección de correo electrónico", + "EMAILADDRESS_MUST_VALID": "La dirección de correo electrónico deben escribirse en un formato válido", + "SMTP_USERNAME_REQUIRED": "El nombre de usuario es obligatorio", + "PASSWORD_REQUIRED": "Es necesaria la contraseña", + "SMTP_HOST_REQUIRED": "El Host es obligatorio", + "SMTP_PORT_REQUIRED": "El puerto es necesario", + "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El Min interior debe ser mayor o igual a", + "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La Min Buzón debe ser mayor o igual a" }, "EDIT_NETWORK": "Editar Red", "DELETE_NETWORK": "Eliminar la red", @@ -118,6 +131,18 @@ "TRIAL_VERSION": "Versión de prueba", "RELOAD": "Recargar", "VERIFY": "Verificar", - "GLOBAL": "Global" + "GLOBAL": "Global", + "SMTP_AUTHENTICATION": "Autentificación", + "LICENSE_REQUEST_SENT": "Gracias! El equipo de licencias comprobará su cuenta ASAP para aprobar sus peticiones: Usted recibirá un e-mail cuando los cambios sean efectivos. Consulte license@xcally.com para cualquier información adicional.", + "ACCOUNTNAME": "Nombre de cuenta", + "EMAILADDRESS": "Dirección de correo electrónico", + "EXPIRATION_REASON_MESSAGE": "Su licencia ha caducado o su identificador único de la máquina se ha actualizado debido a un cambio en el sistema. Póngase en contacto con el equipo de soporte de movimiento xCALLY enviar tanto el antiguo y el nuevo UUID.", + "OLD_TOKEN": "Token viejo", + "SEND_EMAIL_TO": "Enviar correo electrónico a", + "CONTACT_XCALLY_MOTION_SUPPORT": "Póngase en contacto con soporte de movimiento xCALLY", + "JIRA_ERROR_MESSAGE": "Error durante la solicitud de licencia. Póngase en contacto con nuestro equipo de licencia License@xcally.com con su solicitud", + "PAGE": "Página", + "ROWSPERPAGE": "Filas por página.", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/settings/i18n/fa.json b/public/app/main/apps/settings/i18n/fa.json index 0083026..e9e0686 100644 --- a/public/app/main/apps/settings/i18n/fa.json +++ b/public/app/main/apps/settings/i18n/fa.json @@ -62,7 +62,11 @@ "ADD_NETWORK": "افزودن یک شبکه", "HELP": { "ADDRESS": "آدرس شبکه وجود دارد.", - "LOCALNETADDRESS": "آدرس IP/پوشش زیرشبکه" + "LOCALNETADDRESS": "آدرس IP/پوشش زیرشبکه", + "SMTP_SECURE": "درست است كه اگر ارتباط استفاده خواهد هيچ دليل مشروعی هنگام اتصال به سرور", + "SMTP_USERNAME": "استفاده از نام کاربری برای تأیید اعتبار", + "SMTP_PASSWORD": "رمز عبور استفاده شده برای تأیید اعتبار", + "EMAILADDRESS": "آدرس ایمیل مبدا را مشخص می کند اين پيام (از)" }, "ERRORS": { "ADDRESS_REQUIRED": "آدرس مورد نیاز است.", @@ -72,7 +76,16 @@ "HEADER_WHITELABEL_REQUIRED": "از whitelabel لازم است.", "LOCALNETADDRESS_REQUIRED": "آدرس Localnet لازم است", "LOCALNETADDRESS_MUST_VALID_PATTERN": "Localnet بايد الگوى معتبر معتبر خواهد بود.", - "ADDRESS_MUST_VALID_PATTERN": "آدرس صحیح الگو باشند." + "ADDRESS_MUST_VALID_PATTERN": "آدرس صحیح الگو باشند.", + "ACCOUNTNAME_REQUIRED": "نام اشتراک مورد نیاز است.", + "EMAILADDRESS_REQUIRED": "آدرس ایمیل لازم است.", + "EMAILADDRESS_MUST_VALID": "آدرس ایمیل باید با فرمت معتبر نوشته شده است", + "SMTP_USERNAME_REQUIRED": "نام کاربری مورد نیاز است.", + "PASSWORD_REQUIRED": "رمز عبور لازم است.", + "SMTP_HOST_REQUIRED": "ميزبان لازم است.", + "SMTP_PORT_REQUIRED": "از پورت مورد نیاز است.", + "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "داخلی را در دقیقه باید بیشتر یا مساوی با", + "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "در دقیقه Mailbox را باید بیشتر یا مساوی با" }, "EDIT_NETWORK": "ویرایش شبکه", "DELETE_NETWORK": "شبکه را حذف کنید", @@ -118,6 +131,18 @@ "TRIAL_VERSION": "نسخه آزمایشی", "RELOAD": "امارات - آث میلان", "VERIFY": "تأیید کنید", - "GLOBAL": "جهانی" + "GLOBAL": "جهانی", + "SMTP_AUTHENTICATION": "تأیید اعتبار", + "LICENSE_REQUEST_SENT": "متشکرم! تیم بررسی درخواست مجوز اشتراک asap به منظور تصويب درخواست شما : می توانید یک ایمیل را در تغییرات زمانی موثر واقع می شوند. لطفاً License@xcally.com مراجعه کنید برای هر گونه اطلاعات بيشتر است.", + "ACCOUNTNAME": "نام اشتراک", + "EMAILADDRESS": "آدرس ایمیل", + "EXPIRATION_REASON_MESSAGE": "مجوز شما منقضی شده است يا شناسه منحصر به فرد دستگاه شما به روز شده است به علت تغییر سیستم شما. تماس با گروه پشتیبانی ارسال xCALLY حركت هر دو قديم و جديد شما uuid.", + "OLD_TOKEN": "نشانه پير", + "SEND_EMAIL_TO": "فرستادن به ایمیل", + "CONTACT_XCALLY_MOTION_SUPPORT": "حركت xCALLY پشتیبانی تماس بگیرید", + "JIRA_ERROR_MESSAGE": "خطا در هنگام درخواست مجوز كرد. لطفاً قرارداد مجوز را در تيم ما تماس با درخواست شما License@xcally.com", + "PAGE": "صفحه", + "ROWSPERPAGE": "رديف در صفحه", + "OF": "از" } } \ No newline at end of file diff --git a/public/app/main/apps/settings/i18n/fi.json b/public/app/main/apps/settings/i18n/fi.json index 9489bbd..83e3b5e 100644 --- a/public/app/main/apps/settings/i18n/fi.json +++ b/public/app/main/apps/settings/i18n/fi.json @@ -62,7 +62,11 @@ "ADD_NETWORK": "Add Network", "HELP": { "ADDRESS": "Die fehlende Nennung der verkko", - "LOCALNETADDRESS": "IP-osoite/Aliverkon peite" + "LOCALNETADDRESS": "IP-osoite/Aliverkon peite", + "SMTP_SECURE": "Jos tosi, käytä TLS, kun muodostat yhteyden palvelimeen", + "SMTP_USERNAME": "Käyttäjätunnus todennukseen käytettävä", + "SMTP_PASSWORD": "Salasana todennukseen käytettävä", + "EMAILADDRESS": "Valitse lähtö sähköpostiosoite viesti (poistetaan)" }, "ERRORS": { "ADDRESS_REQUIRED": "Osoite on pakollinen", @@ -72,7 +76,16 @@ "HEADER_WHITELABEL_REQUIRED": "Kun whitelabel ei tarvita", "LOCALNETADDRESS_REQUIRED": "Localnet tarvitset", "LOCALNETADDRESS_MUST_VALID_PATTERN": "Localnet on oltava kelvollinen kelvollinen kuvio", - "ADDRESS_MUST_VALID_PATTERN": "Osoitteen on oltava kelvollinen kuvio" + "ADDRESS_MUST_VALID_PATTERN": "Osoitteen on oltava kelvollinen kuvio", + "ACCOUNTNAME_REQUIRED": "Tilin nimi on annettava", + "EMAILADDRESS_REQUIRED": "Sähköpostiosoite on pakollinen", + "EMAILADDRESS_MUST_VALID": "Sähköpostiosoite on kirjoitettava kelvollisessa muodossa", + "SMTP_USERNAME_REQUIRED": "Käyttäjätunnus on pakollinen", + "PASSWORD_REQUIRED": "Salasana on pakollinen", + "SMTP_HOST_REQUIRED": "Isäntä ei tarvita", + "SMTP_PORT_REQUIRED": "Portti ei tarvita", + "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min sisäinen on oltava suurempi tai yhtä suuri kuin", + "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min postilaatikko on oltava suurempi tai yhtä suuri kuin" }, "EDIT_NETWORK": "Muokkaa verkko", "DELETE_NETWORK": "Poista verkko", @@ -118,6 +131,18 @@ "TRIAL_VERSION": "Kokeiluversio", "RELOAD": "Lataa", "VERIFY": "Varmista", - "GLOBAL": "Global" + "GLOBAL": "Global", + "SMTP_AUTHENTICATION": "Todennus", + "LICENSE_REQUEST_SENT": "Kiitos! Kuljetustodistukset tiimi tarkistaa tilisi asap voidakseen hyväksyä pyyntösi: saat sähköpostiviestin, kun muutokset tulevat voimaan. Lisätietoja license@xcally.com lisätietoja.", + "ACCOUNTNAME": "Tilin nimi", + "EMAILADDRESS": "Sähköpostiosoite", + "EXPIRATION_REASON_MESSAGE": "Lisenssi on vanhentunut tai laitteen yksilöivä tunnus on päivitetty muutos järjestelmään. Ota xCALLY Motion -tukiryhmään lähettämällä vanhat ja uudet uuid.", + "OLD_TOKEN": "Vanha etätunnistin", + "SEND_EMAIL_TO": "Lähettää sähköpostia", + "CONTACT_XCALLY_MOTION_SUPPORT": "Ota xCALLY liikkeen tuki", + "JIRA_ERROR_MESSAGE": "Virhe lisenssin. Ota yhteys lisenssi huonepalvelun license@xcally.com pyyntönne", + "PAGE": "Sivu", + "ROWSPERPAGE": "Riviä sivulle", + "OF": "," } } \ No newline at end of file diff --git a/public/app/main/apps/settings/i18n/fr.json b/public/app/main/apps/settings/i18n/fr.json index 6efb6e2..90a9ea9 100644 --- a/public/app/main/apps/settings/i18n/fr.json +++ b/public/app/main/apps/settings/i18n/fr.json @@ -62,7 +62,11 @@ "ADD_NETWORK": "Ajouter Network", "HELP": { "ADDRESS": "L'adresse du réseau", - "LOCALNETADDRESS": "L'adresse IP/masque de sous-réseau" + "LOCALNETADDRESS": "L'adresse IP/masque de sous-réseau", + "SMTP_SECURE": "Vrai si la connexion utilise TLS lorsque la connexion au serveur", + "SMTP_USERNAME": "Utilisateur utilisé pour l'authentification", + "SMTP_PASSWORD": "Mot de passe utilisé pour l'authentification", + "EMAILADDRESS": "Adresse e-mail Indiquez l'origine du message (de)" }, "ERRORS": { "ADDRESS_REQUIRED": "L'adresse est nécessaire", @@ -72,7 +76,16 @@ "HEADER_WHITELABEL_REQUIRED": "L'whitelabel est requis", "LOCALNETADDRESS_REQUIRED": "Adresse Localnet nécessaire", "LOCALNETADDRESS_MUST_VALID_PATTERN": "Localnet doit être valide un modèle valable", - "ADDRESS_MUST_VALID_PATTERN": "Adresse doit être un modèle valable" + "ADDRESS_MUST_VALID_PATTERN": "Adresse doit être un modèle valable", + "ACCOUNTNAME_REQUIRED": "Le nom de compte est requis", + "EMAILADDRESS_REQUIRED": "L'adresse e-mail est nécessaire", + "EMAILADDRESS_MUST_VALID": "L'adresse e-mail doivent être écrites dans un format valide", + "SMTP_USERNAME_REQUIRED": "L'utilisateur est nécessaire", + "PASSWORD_REQUIRED": "Le mot de passe est requis", + "SMTP_HOST_REQUIRED": "L'hôte est nécessaire", + "SMTP_PORT_REQUIRED": "Le port est requis", + "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "L'Interne Min doit être supérieure ou égale à", + "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La Min Boîte aux lettres doit être supérieure ou égale à" }, "EDIT_NETWORK": "Modifier un réseau", "DELETE_NETWORK": "Réseau Supprimer", @@ -118,6 +131,18 @@ "TRIAL_VERSION": "Version d'essai", "RELOAD": "Recharger", "VERIFY": "Vérifier", - "GLOBAL": "Global" + "GLOBAL": "Global", + "SMTP_AUTHENTICATION": "Authentication", + "LICENSE_REQUEST_SENT": "Merci ! L'équipe des licences va vérifier votre compte dès que possible afin d'approuver votre demande : vous recevrez un e-mail quand les modifications entrent en vigueur. Veuillez vous reporter à license@xcally.com pour toute information complémentaire.", + "ACCOUNTNAME": "Nom de compte", + "EMAILADDRESS": "Adresse e-mail", + "EXPIRATION_REASON_MESSAGE": "Votre licence a expiré ou votre machine id unique a été mise à jour en raison d'un changement à votre système. Contacter l'équipe de soutien à la motion xCALLY l'envoi à la fois votre ancienne et votre nouvel UUID.", + "OLD_TOKEN": "Jeton ancien", + "SEND_EMAIL_TO": "Envoyez un courriel à", + "CONTACT_XCALLY_MOTION_SUPPORT": "Contactez xCALLY Soutien Motion", + "JIRA_ERROR_MESSAGE": "Erreur lors de la demande de licence. Veuillez contacter notre équipe de licence à license@xcally.com avec votre demande", + "PAGE": "La page", + "ROWSPERPAGE": "Les lignes par page", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/settings/i18n/hi.json b/public/app/main/apps/settings/i18n/hi.json index f235de0..1f7d360 100644 --- a/public/app/main/apps/settings/i18n/hi.json +++ b/public/app/main/apps/settings/i18n/hi.json @@ -62,7 +62,11 @@ "ADD_NETWORK": "नेटवर्क जोड़ें", "HELP": { "ADDRESS": "नेटवर्क का पता", - "LOCALNETADDRESS": "IP पता/सबनेट मास् क" + "LOCALNETADDRESS": "IP पता/सबनेट मास् क", + "SMTP_SECURE": "यदि TLS कनेक् शन का प्रयोग करेंगे जब सर्वर से कनेक्ट करने में सही", + "SMTP_USERNAME": "उपयोगकर्ता प्रमाणीकरण के लिए प्रयुक्त", + "SMTP_PASSWORD": "पासवर्ड का प्रयोग करने के लिए प्रमाणीकरण", + "EMAILADDRESS": "निर्दिष्ट ईमेल पते का उद्भव का संदेश ()" }, "ERRORS": { "ADDRESS_REQUIRED": "इस अभिभाषण की आवश्यकता है।", @@ -72,7 +76,16 @@ "HEADER_WHITELABEL_REQUIRED": "इस whitelabel अपेक्षित है।", "LOCALNETADDRESS_REQUIRED": "पता Localnet अपेक्षित", "LOCALNETADDRESS_MUST_VALID_PATTERN": "एक मान्य होना Localnet मान्य स्वरूप", - "ADDRESS_MUST_VALID_PATTERN": "पता मान्य स्वरूप किया जाना चाहिए।" + "ADDRESS_MUST_VALID_PATTERN": "पता मान्य स्वरूप किया जाना चाहिए।", + "ACCOUNTNAME_REQUIRED": "खाता नाम की आवश्यकता है।", + "EMAILADDRESS_REQUIRED": "ईमेल पते की आवश्यकता है।", + "EMAILADDRESS_MUST_VALID": "ईमेल पते को मान्य स्वरूप में लिखा होना", + "SMTP_USERNAME_REQUIRED": "उपयोगकर्ता नाम की आवश्यकता है।", + "PASSWORD_REQUIRED": "पासवर्ड की आवश्यकता है।", + "SMTP_HOST_REQUIRED": "मेजबान की आवश्यकता है।", + "SMTP_PORT_REQUIRED": "इस पत्तन पर अपेक्षित है।", + "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "आंतरिक मिन ने से अधिक होनी चाहिए अथवा समान", + "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "इस मेलबॉक्स मिनट से अधिक होना चाहिए या के बराबर" }, "EDIT_NETWORK": "नेटवर्क संपादित करें", "DELETE_NETWORK": "नेटवर्क हटाएं", @@ -118,6 +131,18 @@ "TRIAL_VERSION": "परीक्षण संस्करण", "RELOAD": "पुन: लोड करें", "VERIFY": "सत्यापित करें", - "GLOBAL": "विश्वव्यापी" + "GLOBAL": "विश्वव्यापी", + "SMTP_AUTHENTICATION": "प्रमाणीकरण", + "LICENSE_REQUEST_SENT": "आपको धन्यवाद! अपने खाते को रोकने के लिए लाइसेनसिनग टीम अपने अनुरोध को स्वीकार करने में asap: आप एक ई-मेल प्राप्त होगा जब परिवर्तनों को प्रभावी हो। कृपया और अधिक जानकारी के लिए किसी license@xcally.com", + "ACCOUNTNAME": "खाता नाम", + "EMAILADDRESS": "ईमेल पता", + "EXPIRATION_REASON_MESSAGE": "आपका लाइसेंस समाप्त हो चुकी है या आपके मशीन अद्वितीय id अद्यतन किया गया है. अपने सिस्टम में परिवर्तन के कारण संपर्क का प्रस्ताव भेजने का समर्थन करता है और आप अपने पुराने दोनों xCALLY टीम के नए uuid है।", + "OLD_TOKEN": "प्राचीन सांकेतिक", + "SEND_EMAIL_TO": "को ईमेल भेजें", + "CONTACT_XCALLY_MOTION_SUPPORT": "संपर्क xCALLY प्रस्ताव का समर्थन", + "JIRA_ERROR_MESSAGE": "लाइसेंस के दौरान त्रुटि अनुरोध है। कृपया अपने संपर्क आपके अनुरोध के साथ license@xcally.com टीम को लाइसेंस", + "PAGE": "पृष्ठ", + "ROWSPERPAGE": "पंक्तियां प्रति पृष्ठ", + "OF": "की" } } \ No newline at end of file diff --git a/public/app/main/apps/settings/i18n/it.json b/public/app/main/apps/settings/i18n/it.json index 0ca88fe..efe3cf1 100644 --- a/public/app/main/apps/settings/i18n/it.json +++ b/public/app/main/apps/settings/i18n/it.json @@ -83,7 +83,9 @@ "SMTP_USERNAME_REQUIRED": "Lo Username è richiesto", "PASSWORD_REQUIRED": "La Password è richiesta", "SMTP_HOST_REQUIRED": "L'Host è richiesto", - "SMTP_PORT_REQUIRED": "La Porta è richiesta" + "SMTP_PORT_REQUIRED": "La Porta è richiesta", + "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il Numero Interno minimo deve essere superiore o uguale a", + "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il Numero di Casella Mail minimo deve essere superiore o uguale a" }, "EDIT_NETWORK": "Modifica Rete", "DELETE_NETWORK": "Elimina Rete", @@ -141,6 +143,6 @@ "JIRA_ERROR_MESSAGE": "Errore durante la richiseta di licenza. Per favore contatta il notro team di licenza su license@xcally.com con la tua richiesta", "PAGE": "Pagina", "ROWSPERPAGE": "Righe per pagina", - "OF": "Di" + "OF": "di" } } \ No newline at end of file diff --git a/public/app/main/apps/settings/i18n/ja.json b/public/app/main/apps/settings/i18n/ja.json index fe5518e..71dbed9 100644 --- a/public/app/main/apps/settings/i18n/ja.json +++ b/public/app/main/apps/settings/i18n/ja.json @@ -62,7 +62,11 @@ "ADD_NETWORK": "ネットワークを追加します。", "HELP": { "ADDRESS": "は、ネットワークのアドレス", - "LOCALNETADDRESS": "IP アドレス / サブネットマスク" + "LOCALNETADDRESS": "IP アドレス / サブネットマスク", + "SMTP_SECURE": "サーバに接続するときの接続は、 TLS を使用して真( True )の場合", + "SMTP_USERNAME": "認証に使用されるユーザ名", + "SMTP_PASSWORD": "認証に使用されるパスワード", + "EMAILADDRESS": "メッセージの送信元の電子メールのアドレス( From )を指定" }, "ERRORS": { "ADDRESS_REQUIRED": "アドレスが必要", @@ -72,7 +76,16 @@ "HEADER_WHITELABEL_REQUIRED": "、 whitelabel は必要な", "LOCALNETADDRESS_REQUIRED": "Localnet のアドレスが必要です", "LOCALNETADDRESS_MUST_VALID_PATTERN": "Localnet に有効なパターンが有効である必要があり", - "ADDRESS_MUST_VALID_PATTERN": "アドレスは、有効なパターンの必要があります" + "ADDRESS_MUST_VALID_PATTERN": "アドレスは、有効なパターンの必要があります", + "ACCOUNTNAME_REQUIRED": "アカウント名が必要です", + "EMAILADDRESS_REQUIRED": "電子メールのアドレスが必要です。", + "EMAILADDRESS_MUST_VALID": "電子メールのアドレスが有効な形式で記述する必要があります", + "SMTP_USERNAME_REQUIRED": "ユーザ名が必要です", + "PASSWORD_REQUIRED": "パスワードが必要です", + "SMTP_HOST_REQUIRED": "は、ホストが必要です", + "SMTP_PORT_REQUIRED": "のポートが必要です", + "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min 内部は以上である必要があります", + "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min メールボックスは以上である必要があります" }, "EDIT_NETWORK": "ネットワークの編集", "DELETE_NETWORK": "ネットワークの削除", @@ -118,6 +131,18 @@ "TRIAL_VERSION": "トライアルバージョン", "RELOAD": "再ロード", "VERIFY": "ていることを確認", - "GLOBAL": "グローバル" + "GLOBAL": "グローバル", + "SMTP_AUTHENTICATION": "認証", + "LICENSE_REQUEST_SENT": "ありがとうございました! ライセンスチームがあなたの要求を承認するために、お客様のアカウント ASAP の点検を行います。変更を有効にすると、電子メールが届きます。 の詳細情報は license@xcally.com を参照してください。", + "ACCOUNTNAME": "アカウント名", + "EMAILADDRESS": "電子メールアドレス", + "EXPIRATION_REASON_MESSAGE": "ライセンスの有効期限が切れているか、システムに変更が発生したため、マシンの一意の ID が更新されました。 のモーション xCALLY 古い、新しい UUID の両方を送信するサポートチームにお問い合わせください。", + "OLD_TOKEN": "古いトークン", + "SEND_EMAIL_TO": "電子メールを送信する", + "CONTACT_XCALLY_MOTION_SUPPORT": "XCALLY モーションサポートにお問い合わせください", + "JIRA_ERROR_MESSAGE": "ライセンス要求の処理中にエラーが発生しました。 で license@xcally.com あなたの要求と当社の連絡先ライセンスチームにお問い合わせください。", + "PAGE": "ページ", + "ROWSPERPAGE": "ページあたりの行数", + "OF": "の" } } \ No newline at end of file diff --git a/public/app/main/apps/settings/i18n/ko.json b/public/app/main/apps/settings/i18n/ko.json index 84659e9..aeeab81 100644 --- a/public/app/main/apps/settings/i18n/ko.json +++ b/public/app/main/apps/settings/i18n/ko.json @@ -62,7 +62,11 @@ "ADD_NETWORK": "네트워크 추가", "HELP": { "ADDRESS": "네트워크 주소", - "LOCALNETADDRESS": "IP 주소/서브넷 마스크" + "LOCALNETADDRESS": "IP 주소/서브넷 마스크", + "SMTP_SECURE": "서버에 연결하는 경우 연결 TLS를 사용합니다 참인 경우", + "SMTP_USERNAME": "인증에 사용되는 사용자 이름", + "SMTP_PASSWORD": "인증에 사용되는 암호", + "EMAILADDRESS": "메시지의 근원지 이메일 주소(From) 지정" }, "ERRORS": { "ADDRESS_REQUIRED": "주소가 필요합니다.", @@ -72,7 +76,16 @@ "HEADER_WHITELABEL_REQUIRED": "이 whitelabel 필요합니다.", "LOCALNETADDRESS_REQUIRED": "Localnet 주소 필요", "LOCALNETADDRESS_MUST_VALID_PATTERN": "Localnet 유효한 유효한 패턴 합니다.", - "ADDRESS_MUST_VALID_PATTERN": "주소는 유효한 패턴 합니다." + "ADDRESS_MUST_VALID_PATTERN": "주소는 유효한 패턴 합니다.", + "ACCOUNTNAME_REQUIRED": "계정 이름이 필요합니다.", + "EMAILADDRESS_REQUIRED": "전자 메일 주소가 필요합니다.", + "EMAILADDRESS_MUST_VALID": "이메일 주소에 유효한 형식으로 작성되어 있어야 합니다", + "SMTP_USERNAME_REQUIRED": "사용자 이름이 필요합니다.", + "PASSWORD_REQUIRED": "암호 필요", + "SMTP_HOST_REQUIRED": "호스트가 필요합니다.", + "SMTP_PORT_REQUIRED": "포트 필요", + "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min 내부 같거나 커야 합니다.", + "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min 사서함 같거나 커야 합니다." }, "EDIT_NETWORK": "네트워크 편집", "DELETE_NETWORK": "네트워크 삭제", @@ -118,6 +131,18 @@ "TRIAL_VERSION": "평가판 버전", "RELOAD": "다시 로드", "VERIFY": "확인", - "GLOBAL": "글로벌" + "GLOBAL": "글로벌", + "SMTP_AUTHENTICATION": "인증", + "LICENSE_REQUEST_SENT": "감사합니다! 라이센스 팀이 귀하의 요청을 승인할 수 있도록 계정 부탁 드립니다 확인 변경 사항을 발효했기 전자 메일로 알려드리겠습니다. 추가 정보는 license@xcally.com 참조하십시오.", + "ACCOUNTNAME": "계정 이름", + "EMAILADDRESS": "전자 메일 주소", + "EXPIRATION_REASON_MESSAGE": "라이센스가 만료됨 또는 기계 고유 ID 시스템을 바뀌는 관계로 업데이트되었습니다. Xcally 모션 기존 컴퓨터와 새 UUID 될때 지원 팀에 문의하십시오.", + "OLD_TOKEN": "오래된 토큰", + "SEND_EMAIL_TO": "이메일 보내기", + "CONTACT_XCALLY_MOTION_SUPPORT": "Xcally 동작 지원 문의", + "JIRA_ERROR_MESSAGE": "라이센스 요청 중 오류. 현재 고객님의 요청을 함께 license@xcally.com 문의 라이센스 팀으로 문의해 주십시오.", + "PAGE": "페이지", + "ROWSPERPAGE": "페이지 당 행", + "OF": "중" } } \ No newline at end of file diff --git a/public/app/main/apps/settings/i18n/nl.json b/public/app/main/apps/settings/i18n/nl.json index 2a84b62..1e4081b 100644 --- a/public/app/main/apps/settings/i18n/nl.json +++ b/public/app/main/apps/settings/i18n/nl.json @@ -62,7 +62,11 @@ "ADD_NETWORK": "Netwerkhost toevoegen", "HELP": { "ADDRESS": "Het adres van het netwerk", - "LOCALNETADDRESS": "IP-adres/subnetmasker" + "LOCALNETADDRESS": "IP-adres/subnetmasker", + "SMTP_SECURE": "Als ware de verbinding met TLS om verbinding te maken met server", + "SMTP_USERNAME": "Gebruikersnaam die wordt gebruikt voor verificatie", + "SMTP_PASSWORD": "Het wachtwoord dat wordt gebruikt voor verificatie", + "EMAILADDRESS": "Geef de oorsprong email adres van het bericht (uit)" }, "ERRORS": { "ADDRESS_REQUIRED": "Het adres is vereist.", @@ -72,7 +76,16 @@ "HEADER_WHITELABEL_REQUIRED": "De whitelabel is vereist", "LOCALNETADDRESS_REQUIRED": "Adres localnet vereist", "LOCALNETADDRESS_MUST_VALID_PATTERN": "Localnet moet geldig een geldig patroon", - "ADDRESS_MUST_VALID_PATTERN": "Adres moet een geldig patroon" + "ADDRESS_MUST_VALID_PATTERN": "Adres moet een geldig patroon", + "ACCOUNTNAME_REQUIRED": "Als u de accountnaam is vereist", + "EMAILADDRESS_REQUIRED": "Het e-mailadres is vereist", + "EMAILADDRESS_MUST_VALID": "Het e-mailadres moet worden geschreven in een geldige indeling", + "SMTP_USERNAME_REQUIRED": "De gebruikersnaam is vereist", + "PASSWORD_REQUIRED": "Het wachtwoord is vereist", + "SMTP_HOST_REQUIRED": "De host is vereist", + "SMTP_PORT_REQUIRED": "De poort is vereist", + "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De Min interne moet groter zijn dan of gelijk aan", + "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Het Min-mailbox moet groter zijn dan of gelijk aan" }, "EDIT_NETWORK": "Edit netwerk", "DELETE_NETWORK": "Netwerk verwijderen", @@ -118,6 +131,18 @@ "TRIAL_VERSION": "Evaluatieversie", "RELOAD": "Reload", "VERIFY": "Controleren", - "GLOBAL": "Wereldwijde" + "GLOBAL": "Wereldwijde", + "SMTP_AUTHENTICATION": "Verificatie", + "LICENSE_REQUEST_SENT": "Dank je wel! De vergunningverlenende team controleert uw account asap om goedkeuren: u ontvangt een e-mail zodra de wijzigingen van kracht. Raadpleeg license@xcally.com voor alle verdere informatie.", + "ACCOUNTNAME": "Accountnaam", + "EMAILADDRESS": "E-mail adres", + "EXPIRATION_REASON_MESSAGE": "Uw licentie is verlopen of de machine unieke id is bijgewerkt in verband met een inkomenswijziging van uw systeem. Contact de xCALLY Motion ondersteuningsteam sturen zowel uw oude en uw nieuwe uuid.", + "OLD_TOKEN": "Oude Token", + "SEND_EMAIL_TO": "Stuur een email naar", + "CONTACT_XCALLY_MOTION_SUPPORT": "Contact xCALLY Motion Support", + "JIRA_ERROR_MESSAGE": "Fout tijdens licentieaanvraag. Neem contact op met onze licentie team bij license@xcally.com met uw verzoek", + "PAGE": "Pagina", + "ROWSPERPAGE": "Rijen per pagina", + "OF": "Van" } } \ No newline at end of file diff --git a/public/app/main/apps/settings/i18n/no.json b/public/app/main/apps/settings/i18n/no.json index 098423d..04d4115 100644 --- a/public/app/main/apps/settings/i18n/no.json +++ b/public/app/main/apps/settings/i18n/no.json @@ -62,7 +62,11 @@ "ADD_NETWORK": "Legg til nettverk", "HELP": { "ADDRESS": "Adressen til nettverket", - "LOCALNETADDRESS": "IP-adresse/subnettmasken" + "LOCALNETADDRESS": "IP-adresse/subnettmasken", + "SMTP_SECURE": "Hvis true tilkoblingen vil bruke TLS nÃ¥r en tilkobling til tjeneren", + "SMTP_USERNAME": "Brukernavnet som brukes for autentisering", + "SMTP_PASSWORD": "Passordet som brukes til godkjenning", + "EMAILADDRESS": "Angi opprinnelse e-postadresse til meldingen (fra)" }, "ERRORS": { "ADDRESS_REQUIRED": "Adressen er nødvendig", @@ -72,7 +76,16 @@ "HEADER_WHITELABEL_REQUIRED": "Det whitelabel er nødvendig", "LOCALNETADDRESS_REQUIRED": "Localnet adresse kreves", "LOCALNETADDRESS_MUST_VALID_PATTERN": "Localnet mÃ¥ være gyldig en gyldig mønster", - "ADDRESS_MUST_VALID_PATTERN": "Adressen mÃ¥ være en gyldig mønster" + "ADDRESS_MUST_VALID_PATTERN": "Adressen mÃ¥ være en gyldig mønster", + "ACCOUNTNAME_REQUIRED": "Kontonavnet er nødvendig", + "EMAILADDRESS_REQUIRED": "E-postadresse er pÃ¥krevd", + "EMAILADDRESS_MUST_VALID": "E-postadressen mÃ¥ være skrevet i et gyldig format", + "SMTP_USERNAME_REQUIRED": "Brukernavnet er nødvendig", + "PASSWORD_REQUIRED": "Passordet er nødvendig", + "SMTP_HOST_REQUIRED": "Verten er nødvendig", + "SMTP_PORT_REQUIRED": "Porten er nødvendig", + "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "PÃ¥ Min interne mÃ¥ være større enn eller lik", + "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min postkasse mÃ¥ være større enn eller lik" }, "EDIT_NETWORK": "Endre nettverk", "DELETE_NETWORK": "Slette nettverket", @@ -118,6 +131,18 @@ "TRIAL_VERSION": "Prøveversjon", "RELOAD": "Laste inn", "VERIFY": "Kontroller", - "GLOBAL": "Global" + "GLOBAL": "Global", + "SMTP_AUTHENTICATION": "Godkjenning", + "LICENSE_REQUEST_SENT": "Takk! Det lisensiering Team vil sjekke din konto asap for Ã¥ godkjenne dine forespørsler: Du vil motta en e-post nÃ¥r endringene blir effektiv. Vennligst se license@xcally.com for ytterligere informasjon.", + "ACCOUNTNAME": "Kontonavn", + "EMAILADDRESS": "E-postadresse", + "EXPIRATION_REASON_MESSAGE": "Lisensen din er utløpt eller maskinen din unike id har blitt oppdatert pÃ¥ grunn av en endring i systemet ditt. Kontakt xCALLY motion support team sender bÃ¥de den gamle og den nye uuid.", + "OLD_TOKEN": "Gamle brikke", + "SEND_EMAIL_TO": "Send e-post til", + "CONTACT_XCALLY_MOTION_SUPPORT": "Kontakt xCALLY motion-støtte", + "JIRA_ERROR_MESSAGE": "Feil under lisens. Kontakt vÃ¥r lisens team pÃ¥ license@xcally.com med din forespørsel", + "PAGE": "Siden", + "ROWSPERPAGE": "Linjer per side", + "OF": "Av" } } \ No newline at end of file diff --git a/public/app/main/apps/settings/i18n/pt-PT.json b/public/app/main/apps/settings/i18n/pt-PT.json index e7357fb..9a07211 100644 --- a/public/app/main/apps/settings/i18n/pt-PT.json +++ b/public/app/main/apps/settings/i18n/pt-PT.json @@ -62,7 +62,11 @@ "ADD_NETWORK": "Adicionar a rede", "HELP": { "ADDRESS": "O endereço da rede", - "LOCALNETADDRESS": "A máscara de sub-rede/endereço IP" + "LOCALNETADDRESS": "A máscara de sub-rede/endereço IP", + "SMTP_SECURE": "Se for verdade a ligação vai usar TLS quando estabelecer ligação ao servidor", + "SMTP_USERNAME": "Nome de usuário usado para a autenticação", + "SMTP_PASSWORD": "Senha usada para a autenticação", + "EMAILADDRESS": "Especifique o endereço de correio electrónico de origem da mensagem (de)" }, "ERRORS": { "ADDRESS_REQUIRED": "O endereço é obrigatório", @@ -72,7 +76,16 @@ "HEADER_WHITELABEL_REQUIRED": "A whitelabel é necessária", "LOCALNETADDRESS_REQUIRED": "Localnet Endereço requerido", "LOCALNETADDRESS_MUST_VALID_PATTERN": "Localnet deve ser válido para um padrão válido", - "ADDRESS_MUST_VALID_PATTERN": "O endereço deve ser um padrão válido" + "ADDRESS_MUST_VALID_PATTERN": "O endereço deve ser um padrão válido", + "ACCOUNTNAME_REQUIRED": "O nome da conta é necessária", + "EMAILADDRESS_REQUIRED": "O endereço de e-mail é obrigatório", + "EMAILADDRESS_MUST_VALID": "O endereço de e-mail deve ser escrito em um formato válido", + "SMTP_USERNAME_REQUIRED": "O nome de usuário é obrigatório", + "PASSWORD_REQUIRED": "A senha é obrigatória", + "SMTP_HOST_REQUIRED": "O Host é necessário", + "SMTP_PORT_REQUIRED": "A porta é necessária", + "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "A Min interna deve ser maior do que ou igual a", + "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "A Min Caixa postal deve ser maior do que ou igual a" }, "EDIT_NETWORK": "Editar rede", "DELETE_NETWORK": "Excluir redes", @@ -118,6 +131,18 @@ "TRIAL_VERSION": "Versão de teste", "RELOAD": "Recarregar", "VERIFY": "Verifique", - "GLOBAL": "Global" + "GLOBAL": "Global", + "SMTP_AUTHENTICATION": "Autenticação", + "LICENSE_REQUEST_SENT": "Obrigado! A equipe de licenciamento irá verificar a sua conta asap para aprovar suas solicitações: você receberá uma mensagem de correio electrónico quando as alterações se tornam eficaz. Consulte license@xcally.com para qualquer informação adicional.", + "ACCOUNTNAME": "Nome da conta", + "EMAILADDRESS": "Endereço de e-mail", + "EXPIRATION_REASON_MESSAGE": "A sua licença expirou ou a sua máquina id exclusivo foi atualizado devido a uma alteração em seu sistema. Entre em contato com a equipe de suporte de movimento xCALLY enviar tanto o seu antigo e o novo UUID.", + "OLD_TOKEN": "Token de antigo", + "SEND_EMAIL_TO": "Enviar email para", + "CONTACT_XCALLY_MOTION_SUPPORT": "Entre em contato com o suporte de movimento xCALLY", + "JIRA_ERROR_MESSAGE": "Erro durante a solicitação de licença. Entre em contato com nossa equipe de licença License@xcally.com com o seu pedido", + "PAGE": "Página", + "ROWSPERPAGE": "Linhas por página", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/settings/i18n/ru.json b/public/app/main/apps/settings/i18n/ru.json index 964bd7a..9221ff1 100644 --- a/public/app/main/apps/settings/i18n/ru.json +++ b/public/app/main/apps/settings/i18n/ru.json @@ -62,7 +62,11 @@ "ADD_NETWORK": "Добавить сеть", "HELP": { "ADDRESS": "Адрес сети", - "LOCALNETADDRESS": "IP-адрес и маску подсети" + "LOCALNETADDRESS": "IP-адрес и маску подсети", + "SMTP_SECURE": "Если true соединение будет использовать TLS при подключении к серверу", + "SMTP_USERNAME": "Имя пользователя используется для проверки подлинности", + "SMTP_PASSWORD": "Пароль используется для проверки подлинности", + "EMAILADDRESS": "Укажите происхождения адрес электронной почты сообщение (С)." }, "ERRORS": { "ADDRESS_REQUIRED": "Адрес не требуется", @@ -72,7 +76,16 @@ "HEADER_WHITELABEL_REQUIRED": "В whitelabel не требуется", "LOCALNETADDRESS_REQUIRED": "Адрес Localnet требуется", "LOCALNETADDRESS_MUST_VALID_PATTERN": "Localnet должен быть действительным действительный шаблон", - "ADDRESS_MUST_VALID_PATTERN": "Адрес должен быть действительным шаблон" + "ADDRESS_MUST_VALID_PATTERN": "Адрес должен быть действительным шаблон", + "ACCOUNTNAME_REQUIRED": "Имя учетной записи не требуется", + "EMAILADDRESS_REQUIRED": "Адрес электронной почты не требуется", + "EMAILADDRESS_MUST_VALID": "Адрес электронной почты должен быть написан в действительный формат", + "SMTP_USERNAME_REQUIRED": "Имя пользователя не требуется", + "PASSWORD_REQUIRED": "Пароль не требуется", + "SMTP_HOST_REQUIRED": "Хост не требуется", + "SMTP_PORT_REQUIRED": "Порт не требуется", + "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Мин. Внутренний должно быть больше или равно", + "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Мин. Почтовый ящик должен быть больше или равен" }, "EDIT_NETWORK": "Редактировать сети", "DELETE_NETWORK": "Удалить сеть", @@ -118,6 +131,18 @@ "TRIAL_VERSION": "Пробная версия", "RELOAD": "Перезагрузить", "VERIFY": "Проверить", - "GLOBAL": "Глобальной" + "GLOBAL": "Глобальной", + "SMTP_AUTHENTICATION": "Проверка подлинности", + "LICENSE_REQUEST_SENT": "Спасибо вам! Лицензирование Группа будет проверьте вашу учетную запись в программе Virtualize ASAP, с тем чтобы утвердить ваши запросы: Вы получите e-mail, когда изменения вступят в силу. Обратитесь к license@xcally.com за любой дополнительной информацией.", + "ACCOUNTNAME": "Имя учетной записи", + "EMAILADDRESS": "Адрес электронной почты", + "EXPIRATION_REASON_MESSAGE": "Срок лицензии истек или вашей машины уникальный идентификатор был обновлен в соответствии с изменением в вашей системе. Обратитесь в xCALLY Motion группы поддержки отправки ваш старый и новый идентификатор UUID.", + "OLD_TOKEN": "Старый маркер", + "SEND_EMAIL_TO": "Отправьте сообщение электронной почты на адрес", + "CONTACT_XCALLY_MOTION_SUPPORT": "Контакт xCALLY поддержки движения", + "JIRA_ERROR_MESSAGE": "Ошибка во время запроса лицензии. Обратитесь в нашу группу лицензии на license@xcally.com с вашей просьбой", + "PAGE": "Страница", + "ROWSPERPAGE": "Строк на странице", + "OF": "В" } } \ No newline at end of file diff --git a/public/app/main/apps/settings/i18n/sv.json b/public/app/main/apps/settings/i18n/sv.json index 6c1761a..b1c8fad 100644 --- a/public/app/main/apps/settings/i18n/sv.json +++ b/public/app/main/apps/settings/i18n/sv.json @@ -62,7 +62,11 @@ "ADD_NETWORK": "Lägg till nätverk", "HELP": { "ADDRESS": "Adressen till nätverket", - "LOCALNETADDRESS": "IP-adress/Nätmask" + "LOCALNETADDRESS": "IP-adress/Nätmask", + "SMTP_SECURE": "Om true connection använder TLS för att ansluta till servern", + "SMTP_USERNAME": "Användarnamn används för autentisering", + "SMTP_PASSWORD": "Lösenord används för autentisering", + "EMAILADDRESS": "Ange ursprunget e-postadress meddelande (frÃ¥n)" }, "ERRORS": { "ADDRESS_REQUIRED": "Adressen är obligatoriskt", @@ -72,7 +76,16 @@ "HEADER_WHITELABEL_REQUIRED": "Den moderator krävs", "LOCALNETADDRESS_REQUIRED": "Localnet adress", "LOCALNETADDRESS_MUST_VALID_PATTERN": "Localnet mÃ¥ste vara giltig giltig mönster", - "ADDRESS_MUST_VALID_PATTERN": "Adress mÃ¥ste vara en giltig mönster" + "ADDRESS_MUST_VALID_PATTERN": "Adress mÃ¥ste vara en giltig mönster", + "ACCOUNTNAME_REQUIRED": "Kontonamnet är obligatoriskt", + "EMAILADDRESS_REQUIRED": "E-postadress krävs", + "EMAILADDRESS_MUST_VALID": "E-postadressen mÃ¥ste vara skriven pÃ¥ ett giltigt format", + "SMTP_USERNAME_REQUIRED": "Användarnamn krävs", + "PASSWORD_REQUIRED": "Lösenord krävs", + "SMTP_HOST_REQUIRED": "Värd är obligatoriskt", + "SMTP_PORT_REQUIRED": "Porten är obligatoriskt", + "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min inre mÃ¥ste vara större än eller lika med", + "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min brevlÃ¥da mÃ¥ste vara större än eller lika med" }, "EDIT_NETWORK": "Edit Network", "DELETE_NETWORK": "Ta bort nätverket", @@ -118,6 +131,18 @@ "TRIAL_VERSION": "Provversion", "RELOAD": "Ladda om", "VERIFY": "Verifiera", - "GLOBAL": "Global" + "GLOBAL": "Global", + "SMTP_AUTHENTICATION": "Autentisering", + "LICENSE_REQUEST_SENT": "Tack! Licensiering Team kommer att kontrollera ditt konto asap för att godkänna din begäran: du kommer att fÃ¥ ett e-postmeddelande när ändringarna börjar gälla. Se License@xcally.com för ytterligare information.", + "ACCOUNTNAME": "Kontonamn", + "EMAILADDRESS": "E-postadress", + "EXPIRATION_REASON_MESSAGE": "Din licens har gÃ¥tt ut eller din maskin unika id har uppdaterats pÃ¥ grund av en ändring i ditt system. Kontakta xCALLY Motion supportteam skicka bÃ¥de din gamla och din nya uuid.", + "OLD_TOKEN": "Gamla token", + "SEND_EMAIL_TO": "Skicka e-post till", + "CONTACT_XCALLY_MOTION_SUPPORT": "Kontakta xCALLY Motion stöd", + "JIRA_ERROR_MESSAGE": "Fel under licens. Kontakta vÃ¥r licens team pÃ¥ License@xcally.com med din begäran", + "PAGE": "Sidan", + "ROWSPERPAGE": "Rader per sida", + "OF": "Av" } } \ No newline at end of file diff --git a/public/app/main/apps/settings/i18n/tr.json b/public/app/main/apps/settings/i18n/tr.json index b1552ba..ac09260 100644 --- a/public/app/main/apps/settings/i18n/tr.json +++ b/public/app/main/apps/settings/i18n/tr.json @@ -62,7 +62,11 @@ "ADD_NETWORK": "Ekle", "HELP": { "ADDRESS": "Adresi, ağ", - "LOCALNETADDRESS": "IP adresi/Alt Ağ Maskesi" + "LOCALNETADDRESS": "IP adresi/Alt Ağ Maskesi", + "SMTP_SECURE": "Eğer gerçek bir bağlantı, TLS, sunucu", + "SMTP_USERNAME": "Kullanıcı kimlik doğrulaması için kullanılan", + "SMTP_PASSWORD": "Parola kimlik doğrulaması için kullanılan", + "EMAILADDRESS": "Belirleyin, kaynak e-posta adresi mesaj (en)" }, "ERRORS": { "ADDRESS_REQUIRED": "Bu Adresi gerekli", @@ -72,7 +76,16 @@ "HEADER_WHITELABEL_REQUIRED": ", whitelabel gerekiyor.", "LOCALNETADDRESS_REQUIRED": "Localnet Adresi Gerekli", "LOCALNETADDRESS_MUST_VALID_PATTERN": "Localnet geçerli olmalıdır geçerli bir modeli", - "ADDRESS_MUST_VALID_PATTERN": "Adres geçerli bir modeli" + "ADDRESS_MUST_VALID_PATTERN": "Adres geçerli bir modeli", + "ACCOUNTNAME_REQUIRED": "Hesap Adı gerekiyor.", + "EMAILADDRESS_REQUIRED": "E-Posta Adresi gerekli", + "EMAILADDRESS_MUST_VALID": "E-Posta Adresi yazılmış olması gerekir. geçerli bir format", + "SMTP_USERNAME_REQUIRED": "Kullanıcı Adı gerekiyor", + "PASSWORD_REQUIRED": "Parola gerekli", + "SMTP_HOST_REQUIRED": "Ana gerekiyor.", + "SMTP_PORT_REQUIRED": "Port gerekiyor.", + "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min iç eşit veya daha büyük olmalıdır.", + "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min Posta eşit veya daha büyük olmalıdır." }, "EDIT_NETWORK": "Edit Ağ", "DELETE_NETWORK": "Delete Ağ", @@ -118,6 +131,18 @@ "TRIAL_VERSION": "Deneme Sürümü", "RELOAD": "Yükle", "VERIFY": "Doğrulayın", - "GLOBAL": "Küresel" + "GLOBAL": "Küresel", + "SMTP_AUTHENTICATION": "Kimlik doğrulama", + "LICENSE_REQUEST_SENT": "Teşekkür ederiz! Lisanslama Ekibi kontrol hesap aci̇l onaylamak i̇çi̇n, istekleri: bir e-posta alırsınız, değişiklikler etkili. Lütfen license@xcally.com daha fazla bilgi.", + "ACCOUNTNAME": "Hesap Adı", + "EMAILADDRESS": "E-Posta Adresi", + "EXPIRATION_REASON_MESSAGE": "Lisans süresi dolmuş veya makine benzersiz id güncellendi bir değişiklik nedeniyle. Kişi, xCALLY Hareket Destek ekibi gönderme hem eski ve yeni uuid.", + "OLD_TOKEN": "Eski Kart", + "SEND_EMAIL_TO": "E-Posta Gönder", + "CONTACT_XCALLY_MOTION_SUPPORT": "Kişi xCALLY Hareket Desteği", + "JIRA_ERROR_MESSAGE": "Hata sırasında lisans talep. Lütfen lisans ekibi license@xcally.com, talebi", + "PAGE": "Sayfa", + "ROWSPERPAGE": "Sayfadaki satırları", + "OF": "Ve" } } \ No newline at end of file diff --git a/public/app/main/apps/settings/i18n/zh-CN.json b/public/app/main/apps/settings/i18n/zh-CN.json index 8e630b6..0b56c05 100644 --- a/public/app/main/apps/settings/i18n/zh-CN.json +++ b/public/app/main/apps/settings/i18n/zh-CN.json @@ -62,7 +62,11 @@ "ADD_NETWORK": "添加网络", "HELP": { "ADDRESS": "该网络的地址", - "LOCALNETADDRESS": "IP 地址/子网掩码。" + "LOCALNETADDRESS": "IP 地址/子网掩码。", + "SMTP_SECURE": "如果真的会将该连接使用 TLS 连接到服务器时", + "SMTP_USERNAME": "用于验证的用户名", + "SMTP_PASSWORD": "用于验证的密码", + "EMAILADDRESS": "指定原始电子邮件地址的信息(从)" }, "ERRORS": { "ADDRESS_REQUIRED": "该地址是必填项", @@ -72,7 +76,16 @@ "HEADER_WHITELABEL_REQUIRED": "“whitelabel 是必需的", "LOCALNETADDRESS_REQUIRED": "Localnet 地址所需的", "LOCALNETADDRESS_MUST_VALID_PATTERN": "Localnet 必须是有效的有效模式", - "ADDRESS_MUST_VALID_PATTERN": "地址必须为有效的模式" + "ADDRESS_MUST_VALID_PATTERN": "地址必须为有效的模式", + "ACCOUNTNAME_REQUIRED": "该帐户的名称是必需的", + "EMAILADDRESS_REQUIRED": "电子邮件地址是必填项", + "EMAILADDRESS_MUST_VALID": "该电子邮件地址必须写的格式无效", + "SMTP_USERNAME_REQUIRED": "用户名是必需的", + "PASSWORD_REQUIRED": "密码是必需的", + "SMTP_HOST_REQUIRED": "主机是必需的", + "SMTP_PORT_REQUIRED": "该端口是必需的", + "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "“最小的内部必须大于或等于", + "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "“最小的邮箱必须大于或等于" }, "EDIT_NETWORK": "编辑网络", "DELETE_NETWORK": "删除网络", @@ -118,6 +131,18 @@ "TRIAL_VERSION": "试用版本。", "RELOAD": "重新加载", "VERIFY": "验证", - "GLOBAL": "全球" + "GLOBAL": "全球", + "SMTP_AUTHENTICATION": "身份验证", + "LICENSE_REQUEST_SENT": "谢谢您! 发牌小组将检查您的帐户 asap 以批准您的请求: 您将收到一封电子邮件所做的更改才会生效。 请参阅 license@xcally.com 的任何其它信息。", + "ACCOUNTNAME": "帐户名称", + "EMAILADDRESS": "电子邮件地址", + "EXPIRATION_REASON_MESSAGE": "您的许可证已过期或您的机器的独特的身份证已被更新的更改到您的系统。 联系 xCALLY 动议的支持团队发送您的旧的和新的 uuid。", + "OLD_TOKEN": "旧令牌", + "SEND_EMAIL_TO": "发送电子邮件至", + "CONTACT_XCALLY_MOTION_SUPPORT": "联系 xCALLY 议案的支持。", + "JIRA_ERROR_MESSAGE": "错误的许可证请求。 请联系我们的许可证组 license@xcally.com 与您的请求", + "PAGE": "页面", + "ROWSPERPAGE": "每页的行数。", + "OF": "的" } } \ No newline at end of file diff --git a/public/app/main/apps/settings/i18n/zh-TW.json b/public/app/main/apps/settings/i18n/zh-TW.json index 02f3398..1b20bd3 100644 --- a/public/app/main/apps/settings/i18n/zh-TW.json +++ b/public/app/main/apps/settings/i18n/zh-TW.json @@ -62,7 +62,11 @@ "ADD_NETWORK": "新增網路", "HELP": { "ADDRESS": "該網路的位址", - "LOCALNETADDRESS": "IP 位址 / 子網路遮罩" + "LOCALNETADDRESS": "IP 位址 / 子網路遮罩", + "SMTP_SECURE": "如果真的連線將會連線至伺服器時使用 TLS", + "SMTP_USERNAME": "用於驗證使用者名稱", + "SMTP_PASSWORD": "使用密碼進行驗證", + "EMAILADDRESS": "指定電子郵件地址的訊息的來源 ( 自 )" }, "ERRORS": { "ADDRESS_REQUIRED": "地址為必填欄位", @@ -72,7 +76,16 @@ "HEADER_WHITELABEL_REQUIRED": "Whitelabel 的為必填欄位", "LOCALNETADDRESS_REQUIRED": "Localnet 地址必填欄位", "LOCALNETADDRESS_MUST_VALID_PATTERN": "Localnet 必須是有效的有效模式", - "ADDRESS_MUST_VALID_PATTERN": "位址必須是有效圖案" + "ADDRESS_MUST_VALID_PATTERN": "位址必須是有效圖案", + "ACCOUNTNAME_REQUIRED": "「帳戶名稱」為必填欄位", + "EMAILADDRESS_REQUIRED": "「電子郵件地址」為必填欄位", + "EMAILADDRESS_MUST_VALID": "電子郵件地址必須是書面的格式無效", + "SMTP_USERNAME_REQUIRED": "使用者名稱是必填項", + "PASSWORD_REQUIRED": "需要密碼", + "SMTP_HOST_REQUIRED": "需要的主機", + "SMTP_PORT_REQUIRED": "需要的連接埠", + "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min 內部必須大於或等於", + "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "最小值必須大於或等於信箱" }, "EDIT_NETWORK": "編輯網路", "DELETE_NETWORK": "刪除網路", @@ -118,6 +131,18 @@ "TRIAL_VERSION": "免費試用版", "RELOAD": "重新載入", "VERIFY": "驗證", - "GLOBAL": "全球" + "GLOBAL": "全球", + "SMTP_AUTHENTICATION": "驗證", + "LICENSE_REQUEST_SENT": "謝謝您 ! 許可證組將檢查您的帳戶 , 以便儘快批准您的請求 : 您將會收到一封電子郵件當變更生效。 請參閱有關的任何詳細資訊。 license@xcally.com", + "ACCOUNTNAME": "帳號名稱", + "EMAILADDRESS": "電子郵件地址", + "EXPIRATION_REASON_MESSAGE": "您的許可證已過期或您的機器的獨特 ID 已被更新由於更改到您的系統中。 請連絡您的支援團隊發送 xCALLY 議案舊和新的 uuid 。", + "OLD_TOKEN": "舊令牌", + "SEND_EMAIL_TO": "將電子郵件傳送至", + "CONTACT_XCALLY_MOTION_SUPPORT": "聯繫人 xCALLY 運動的支持", + "JIRA_ERROR_MESSAGE": "許可證申請過程中出現錯誤。 請聯繫我們的團隊與您的請求許可在 license@xcally.com", + "PAGE": "頁面", + "ROWSPERPAGE": "每頁行數", + "OF": "的" } } \ No newline at end of file diff --git a/public/app/main/apps/sms/i18n/da.json b/public/app/main/apps/sms/i18n/da.json index a48668c..6f24499 100644 --- a/public/app/main/apps/sms/i18n/da.json +++ b/public/app/main/apps/sms/i18n/da.json @@ -72,6 +72,12 @@ "NEW_SMSACCOUNT": "Nye SMS-konto", "NO_AVAILABLE_INFO": "Der er ingen tilgængelig info", "ALL_TEAMS": "Alle hold", - "SELECTED_TEAMS": "Udvalgte Teams" + "SELECTED_TEAMS": "Udvalgte Teams", + "HELP": { + "NAME": "Kun tal og bogstaver og specielle tegn (.________) understøttes" + }, + "PAGE": "Page", + "ROWSPERPAGE": "Rækker pr. side", + "OF": "Af" } } \ No newline at end of file diff --git a/public/app/main/apps/sms/i18n/de.json b/public/app/main/apps/sms/i18n/de.json index 11c119e..2603bd2 100644 --- a/public/app/main/apps/sms/i18n/de.json +++ b/public/app/main/apps/sms/i18n/de.json @@ -72,6 +72,12 @@ "NEW_SMSACCOUNT": "Neue SMS-Konto", "NO_AVAILABLE_INFO": "Keine verfügbaren Info", "ALL_TEAMS": "Alle Mannschaften", - "SELECTED_TEAMS": "Ausgewählte Teams" + "SELECTED_TEAMS": "Ausgewählte Teams", + "HELP": { + "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt." + }, + "PAGE": "Seite", + "ROWSPERPAGE": "Zeilen pro Seite", + "OF": "Von" } } \ No newline at end of file diff --git a/public/app/main/apps/sms/i18n/en.json b/public/app/main/apps/sms/i18n/en.json index 86cc315..f59dcd8 100644 --- a/public/app/main/apps/sms/i18n/en.json +++ b/public/app/main/apps/sms/i18n/en.json @@ -78,6 +78,6 @@ }, "PAGE": "Page", "ROWSPERPAGE": "Rows per page", - "OF": "Of" + "OF": "of" } } \ No newline at end of file diff --git a/public/app/main/apps/sms/i18n/es.json b/public/app/main/apps/sms/i18n/es.json index 7d722fe..9587e41 100644 --- a/public/app/main/apps/sms/i18n/es.json +++ b/public/app/main/apps/sms/i18n/es.json @@ -72,6 +72,12 @@ "NEW_SMSACCOUNT": "Nueva cuenta de SMS", "NO_AVAILABLE_INFO": "No hay información disponible", "ALL_TEAMS": "Todos los equipos", - "SELECTED_TEAMS": "Los equipos seleccionados" + "SELECTED_TEAMS": "Los equipos seleccionados", + "HELP": { + "NAME": "Sólo los números, letras y caracteres específicos (_) son compatibles." + }, + "PAGE": "Página", + "ROWSPERPAGE": "Filas por página.", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/sms/i18n/fa.json b/public/app/main/apps/sms/i18n/fa.json index 1fd2873..5d3b945 100644 --- a/public/app/main/apps/sms/i18n/fa.json +++ b/public/app/main/apps/sms/i18n/fa.json @@ -72,6 +72,12 @@ "NEW_SMSACCOUNT": "اشتراک جدید SMS", "NO_AVAILABLE_INFO": "اطلاعات در دسترس نیست", "ALL_TEAMS": "همه تیم ها", - "SELECTED_TEAMS": "تيم هاي برگزيده" + "SELECTED_TEAMS": "تيم هاي برگزيده", + "HELP": { + "NAME": "فقط شماره ها و حروف و نویسه های ویژه (_) پشتیبانی می شود." + }, + "PAGE": "صفحه", + "ROWSPERPAGE": "رديف در صفحه", + "OF": "از" } } \ No newline at end of file diff --git a/public/app/main/apps/sms/i18n/fi.json b/public/app/main/apps/sms/i18n/fi.json index ac52740..d0f29ad 100644 --- a/public/app/main/apps/sms/i18n/fi.json +++ b/public/app/main/apps/sms/i18n/fi.json @@ -72,6 +72,12 @@ "NEW_SMSACCOUNT": "Uusien tekstiviestien tili", "NO_AVAILABLE_INFO": "Ei saatavana olevasta lataustehosta", "ALL_TEAMS": "Kaikki joukkueet", - "SELECTED_TEAMS": "Valittu työryhmille" + "SELECTED_TEAMS": "Valittu työryhmille", + "HELP": { + "NAME": "Vain numeroita, kirjaimia ja erikoismerkkejä (._ tuetaan" + }, + "PAGE": "Sivu", + "ROWSPERPAGE": "Riviä sivulle", + "OF": "," } } \ No newline at end of file diff --git a/public/app/main/apps/sms/i18n/fr.json b/public/app/main/apps/sms/i18n/fr.json index 8b497fc..361d3c3 100644 --- a/public/app/main/apps/sms/i18n/fr.json +++ b/public/app/main/apps/sms/i18n/fr.json @@ -72,6 +72,12 @@ "NEW_SMSACCOUNT": "Nouveau compte SMS", "NO_AVAILABLE_INFO": "Aucune information disponible", "ALL_TEAMS": "Toutes les équipes", - "SELECTED_TEAMS": "Les équipes sélectionnées" + "SELECTED_TEAMS": "Les équipes sélectionnées", + "HELP": { + "NAME": "Seulement les chiffres, lettres et caractères spécifiques (._) sont pris en charge" + }, + "PAGE": "La page", + "ROWSPERPAGE": "Les lignes par page", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/sms/i18n/hi.json b/public/app/main/apps/sms/i18n/hi.json index 45ed8a0..1975f2e 100644 --- a/public/app/main/apps/sms/i18n/hi.json +++ b/public/app/main/apps/sms/i18n/hi.json @@ -72,6 +72,12 @@ "NEW_SMSACCOUNT": "SMS के नए खाते", "NO_AVAILABLE_INFO": "जानकारी उपलब्ध नहीं", "ALL_TEAMS": "सभी टीमें भाग लेंगी।", - "SELECTED_TEAMS": "चयनित टीम" + "SELECTED_TEAMS": "चयनित टीम", + "HELP": { + "NAME": "केवल विशिष्ट वर्ण (।_) और नंबर्स, समर्थित" + }, + "PAGE": "पृष्ठ", + "ROWSPERPAGE": "पंक्तियां प्रति पृष्ठ", + "OF": "की" } } \ No newline at end of file diff --git a/public/app/main/apps/sms/i18n/it.json b/public/app/main/apps/sms/i18n/it.json index 1a1f49b..fbecd17 100644 --- a/public/app/main/apps/sms/i18n/it.json +++ b/public/app/main/apps/sms/i18n/it.json @@ -79,6 +79,6 @@ }, "PAGE": "Pagina", "ROWSPERPAGE": "Righe per pagina", - "OF": "Di" + "OF": "di" } } \ No newline at end of file diff --git a/public/app/main/apps/sms/i18n/ja.json b/public/app/main/apps/sms/i18n/ja.json index e9f1426..5418009 100644 --- a/public/app/main/apps/sms/i18n/ja.json +++ b/public/app/main/apps/sms/i18n/ja.json @@ -72,6 +72,12 @@ "NEW_SMSACCOUNT": "新しい SMS アカウント", "NO_AVAILABLE_INFO": "使用可能な情報はありません", "ALL_TEAMS": "すべてのチーム", - "SELECTED_TEAMS": "選択したチーム" + "SELECTED_TEAMS": "選択したチーム", + "HELP": { + "NAME": "数字、文字、およびのみ特定の文字 ( 。 ) はサポートされています" + }, + "PAGE": "ページ", + "ROWSPERPAGE": "ページあたりの行数", + "OF": "の" } } \ No newline at end of file diff --git a/public/app/main/apps/sms/i18n/ko.json b/public/app/main/apps/sms/i18n/ko.json index f89425d..35c6f1f 100644 --- a/public/app/main/apps/sms/i18n/ko.json +++ b/public/app/main/apps/sms/i18n/ko.json @@ -72,6 +72,12 @@ "NEW_SMSACCOUNT": "새로운 SMS 계정", "NO_AVAILABLE_INFO": "사용 가능한 정보가 없습니다", "ALL_TEAMS": "모든 팀이", - "SELECTED_TEAMS": "선택한 팀에" + "SELECTED_TEAMS": "선택한 팀에", + "HELP": { + "NAME": "숫자와 글자 및 특정 문자(._) 지원됩니다." + }, + "PAGE": "페이지", + "ROWSPERPAGE": "페이지 당 행", + "OF": "중" } } \ No newline at end of file diff --git a/public/app/main/apps/sms/i18n/nl.json b/public/app/main/apps/sms/i18n/nl.json index 5584c6d..881dcfe 100644 --- a/public/app/main/apps/sms/i18n/nl.json +++ b/public/app/main/apps/sms/i18n/nl.json @@ -72,6 +72,12 @@ "NEW_SMSACCOUNT": "Nieuwe SMS-account", "NO_AVAILABLE_INFO": "Geen beschikbare informatie", "ALL_TEAMS": "Alle teams", - "SELECTED_TEAMS": "Geselecteerde teams" + "SELECTED_TEAMS": "Geselecteerde teams", + "HELP": { + "NAME": "Alleen cijfers, letters en speciale tekens (_) worden ondersteund" + }, + "PAGE": "Pagina", + "ROWSPERPAGE": "Rijen per pagina", + "OF": "Van" } } \ No newline at end of file diff --git a/public/app/main/apps/sms/i18n/no.json b/public/app/main/apps/sms/i18n/no.json index 5a55dcd..4f07e93 100644 --- a/public/app/main/apps/sms/i18n/no.json +++ b/public/app/main/apps/sms/i18n/no.json @@ -72,6 +72,12 @@ "NEW_SMSACCOUNT": "Nye SMS-konto", "NO_AVAILABLE_INFO": "Ingen tilgjengelig info", "ALL_TEAMS": "Alle grupper", - "SELECTED_TEAMS": "Valgte lag" + "SELECTED_TEAMS": "Valgte lag", + "HELP": { + "NAME": "Bare tall, bokstaver og bestemte tegn (._) støttes" + }, + "PAGE": "Siden", + "ROWSPERPAGE": "Linjer per side", + "OF": "Av" } } \ No newline at end of file diff --git a/public/app/main/apps/sms/i18n/pt-PT.json b/public/app/main/apps/sms/i18n/pt-PT.json index 56fbad3..a76a430 100644 --- a/public/app/main/apps/sms/i18n/pt-PT.json +++ b/public/app/main/apps/sms/i18n/pt-PT.json @@ -72,6 +72,12 @@ "NEW_SMSACCOUNT": "Nova conta SMS", "NO_AVAILABLE_INFO": "Sem informações disponíveis", "ALL_TEAMS": "Todas as equipas", - "SELECTED_TEAMS": "Equipes selecionadas" + "SELECTED_TEAMS": "Equipes selecionadas", + "HELP": { + "NAME": "Apenas números, letras e caracteres específicos (._) são suportados" + }, + "PAGE": "Página", + "ROWSPERPAGE": "Linhas por página", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/sms/i18n/ru.json b/public/app/main/apps/sms/i18n/ru.json index 1778f14..834ce0c 100644 --- a/public/app/main/apps/sms/i18n/ru.json +++ b/public/app/main/apps/sms/i18n/ru.json @@ -72,6 +72,12 @@ "NEW_SMSACCOUNT": "Новая учетная запись сервера SMS", "NO_AVAILABLE_INFO": "Нет доступной информации", "ALL_TEAMS": "Все группы", - "SELECTED_TEAMS": "Выбранные группы" + "SELECTED_TEAMS": "Выбранные группы", + "HELP": { + "NAME": "Только цифры, буквы и специальные символы (_) поддерживаются" + }, + "PAGE": "Страница", + "ROWSPERPAGE": "Строк на странице", + "OF": "В" } } \ No newline at end of file diff --git a/public/app/main/apps/sms/i18n/sv.json b/public/app/main/apps/sms/i18n/sv.json index 808aa9e..acb5ae3 100644 --- a/public/app/main/apps/sms/i18n/sv.json +++ b/public/app/main/apps/sms/i18n/sv.json @@ -72,6 +72,12 @@ "NEW_SMSACCOUNT": "Nya SMS-konto", "NO_AVAILABLE_INFO": "Inga tillgängliga info", "ALL_TEAMS": "Alla grupper", - "SELECTED_TEAMS": "Valda grupper" + "SELECTED_TEAMS": "Valda grupper", + "HELP": { + "NAME": "Endast siffror, bokstäver och särskilda tecken (_) stöds" + }, + "PAGE": "Sidan", + "ROWSPERPAGE": "Rader per sida", + "OF": "Av" } } \ No newline at end of file diff --git a/public/app/main/apps/sms/i18n/tr.json b/public/app/main/apps/sms/i18n/tr.json index 8a5c036..8426770 100644 --- a/public/app/main/apps/sms/i18n/tr.json +++ b/public/app/main/apps/sms/i18n/tr.json @@ -72,6 +72,12 @@ "NEW_SMSACCOUNT": "Yeni SMS Hesabı", "NO_AVAILABLE_INFO": "Mevcut bilgisi", "ALL_TEAMS": "Tüm takımlar", - "SELECTED_TEAMS": "Seçilen Ekipleri" + "SELECTED_TEAMS": "Seçilen Ekipleri", + "HELP": { + "NAME": "Sadece sayılar, harfler ve özel karakterler (._) desteklenir." + }, + "PAGE": "Sayfa", + "ROWSPERPAGE": "Sayfadaki satırları", + "OF": "Ve" } } \ No newline at end of file diff --git a/public/app/main/apps/sms/i18n/zh-CN.json b/public/app/main/apps/sms/i18n/zh-CN.json index 65ae544..9702195 100644 --- a/public/app/main/apps/sms/i18n/zh-CN.json +++ b/public/app/main/apps/sms/i18n/zh-CN.json @@ -72,6 +72,12 @@ "NEW_SMSACCOUNT": "新的 SMS 帐户", "NO_AVAILABLE_INFO": "无可用的信息", "ALL_TEAMS": "所有的团队", - "SELECTED_TEAMS": "选定的组" + "SELECTED_TEAMS": "选定的组", + "HELP": { + "NAME": "只有数字、字母和特殊字符(_)的支持" + }, + "PAGE": "页面", + "ROWSPERPAGE": "每页的行数。", + "OF": "的" } } \ No newline at end of file diff --git a/public/app/main/apps/sms/i18n/zh-TW.json b/public/app/main/apps/sms/i18n/zh-TW.json index bdff4b7..cfec9ac 100644 --- a/public/app/main/apps/sms/i18n/zh-TW.json +++ b/public/app/main/apps/sms/i18n/zh-TW.json @@ -72,6 +72,12 @@ "NEW_SMSACCOUNT": "新的 SMS 帳戶", "NO_AVAILABLE_INFO": "無可用資訊", "ALL_TEAMS": "所有群組", - "SELECTED_TEAMS": "選取群組" + "SELECTED_TEAMS": "選取群組", + "HELP": { + "NAME": "只有數字、字母和特殊字元 ( _ ) 都受到支援" + }, + "PAGE": "頁面", + "ROWSPERPAGE": "每頁行數", + "OF": "的" } } \ 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 daf93c6..24e1d34 100644 --- a/public/app/main/apps/staff/i18n/da.json +++ b/public/app/main/apps/staff/i18n/da.json @@ -56,7 +56,11 @@ "NOREPLYNUMBER_REQUIRED": "No Reply nummer er pÃ¥krævet", "BUSYNUMBER_REQUIRED": "Det optagede nummer er pÃ¥krævet", "USERNAME_MUST_VALID_PATTERN": "Brugernavnet skal være gyldig {{regex}}", - "REMOTECONTROLPORT_REQUIRED": "Fjernbetjeningen Port kræves" + "REMOTECONTROLPORT_REQUIRED": "Fjernbetjeningen Port kræves", + "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Chat-kapacitet skal være større end eller lig med", + "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "E-Mail-kapacitet skal være større end eller lig med", + "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Faxen kapacitet skal være større end eller lig med", + "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den Ã¥bne kanal kapacitet skal være større end eller lig med" }, "ACCOUNT": "Konto", "VOICE": "Voice", @@ -83,7 +87,8 @@ "SMSCAPACITY": "Nul betyder ubegrænset.", "OPENCHANNELCAPACITY": "Nul betyder ubegrænset.", "CALLGROUP": "Definerer agentens callgroup", - "PICKUPGROUP": "Definerer grupper, hvor agenten kan besvare opkald" + "PICKUPGROUP": "Definerer grupper, hvor agenten kan besvare opkald", + "USERNAME": "Kun tal og bogstaver og specielle tegn (.________) understøttes" }, "NEW_PASSWORD": "Ny adgangskode", "CONFIRM_PASSWORD": "Bekræft adgangskode", @@ -181,6 +186,9 @@ "CHANGEPASSWORD_TELEPHONE": "Skift adgangskode", "RINGINUSE": "Ringen er i brug", "TEAMADD_AGENT": "Tilføj Agent til Team", - "SHOWWEBCONTROL": "Vis Web Control" + "SHOWWEBCONTROL": "Vis Web Control", + "PAGE": "Page", + "ROWSPERPAGE": "Rækker pr. side", + "OF": "Af" } } \ 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 155ad97..43154c2 100644 --- a/public/app/main/apps/staff/i18n/de.json +++ b/public/app/main/apps/staff/i18n/de.json @@ -56,7 +56,11 @@ "NOREPLYNUMBER_REQUIRED": "Die Nummer ist keine Antwort erforderlich", "BUSYNUMBER_REQUIRED": "Die besetzt ist erforderlich", "USERNAME_MUST_VALID_PATTERN": "Der Benutzername muss gültige {{regex}}.", - "REMOTECONTROLPORT_REQUIRED": "Die Fernbedienung Anschluss erforderlich" + "REMOTECONTROLPORT_REQUIRED": "Die Fernbedienung Anschluss erforderlich", + "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Chat Kapazität muss größer als oder gleich", + "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die E-Mail Kapazität muss größer als oder gleich", + "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Fax Kapazität muss größer als oder gleich", + "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der offene Kanal Kapazität muss größer als oder gleich" }, "ACCOUNT": "Konto", "VOICE": "Voice", @@ -83,7 +87,8 @@ "SMSCAPACITY": "Null bedeutet unbegrenzt.", "OPENCHANNELCAPACITY": "Null bedeutet unbegrenzt.", "CALLGROUP": "Legt der Agent callgroup", - "PICKUPGROUP": "Definiert die Gruppen in denen der Agent Anrufe annehmen können" + "PICKUPGROUP": "Definiert die Gruppen in denen der Agent Anrufe annehmen können", + "USERNAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt." }, "NEW_PASSWORD": "Neues Kennwort", "CONFIRM_PASSWORD": "Passwort bestätigen", @@ -181,6 +186,9 @@ "CHANGEPASSWORD_TELEPHONE": "Passwort ändern", "RINGINUSE": "Ring im Einsatz", "TEAMADD_AGENT": "Agent zu Gruppe hinzufügen", - "SHOWWEBCONTROL": "Anzeigen Web Control" + "SHOWWEBCONTROL": "Anzeigen Web Control", + "PAGE": "Seite", + "ROWSPERPAGE": "Zeilen pro Seite", + "OF": "Von" } } \ 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 8afd2b1..1d5fb13 100644 --- a/public/app/main/apps/staff/i18n/en.json +++ b/public/app/main/apps/staff/i18n/en.json @@ -57,7 +57,12 @@ "NOREPLYNUMBER_REQUIRED": "The No Reply Number is required", "BUSYNUMBER_REQUIRED": "The Busy Number is required", "USERNAME_MUST_VALID_PATTERN": "The Username must be valid {{regex}}", - "REMOTECONTROLPORT_REQUIRED": "The Remote Control Port is required" + "REMOTECONTROLPORT_REQUIRED": "The Remote Control Port is required", + "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Chat Capacity must be greater than or equal to", + "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Mail Capacity must be greater than or equal to", + "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Fax Capacity must be greater than or equal to", + "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Fax Capacity must be greater than or equal to", + "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Open Channel Capacity must be greater than or equal to" }, "ACCOUNT": "Account", "VOICE": "Voice", @@ -186,6 +191,8 @@ "SHOWWEBCONTROL": "Show Web Control", "PAGE": "Page", "ROWSPERPAGE": "Rows per page", - "OF": "Of" + "OF": "of", + "CALLFORWARDING": "Call Forwarding", + "DND": "Do not disturb during pause" } } \ 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 b9c71e6..5598ec6 100644 --- a/public/app/main/apps/staff/i18n/es.json +++ b/public/app/main/apps/staff/i18n/es.json @@ -56,7 +56,11 @@ "NOREPLYNUMBER_REQUIRED": "La respuesta no es necesario el número de", "BUSYNUMBER_REQUIRED": "El concurrido número es necesario", "USERNAME_MUST_VALID_PATTERN": "El nombre de usuario debe ser válida {{regex}}", - "REMOTECONTROLPORT_REQUIRED": "El control remoto puerto es necesario" + "REMOTECONTROLPORT_REQUIRED": "El control remoto puerto es necesario", + "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La capacidad de chat debe ser mayor o igual a", + "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La capacidad de correo debe ser mayor o igual a", + "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La capacidad de fax debe ser mayor o igual a", + "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La capacidad de canal abierto debe ser mayor o igual a" }, "ACCOUNT": "Cuenta", "VOICE": "Voz", @@ -83,7 +87,8 @@ "SMSCAPACITY": "Cero significa ilimitado.", "OPENCHANNELCAPACITY": "Cero significa ilimitado.", "CALLGROUP": "Define el agente callgroup", - "PICKUPGROUP": "Define los grupos en los que el agente puede responder llamadas" + "PICKUPGROUP": "Define los grupos en los que el agente puede responder llamadas", + "USERNAME": "Sólo los números, letras y caracteres específicos (_) son compatibles." }, "NEW_PASSWORD": "Nueva contraseña", "CONFIRM_PASSWORD": "Confirmar contraseña", @@ -181,6 +186,9 @@ "CHANGEPASSWORD_TELEPHONE": "Cambiar contraseña", "RINGINUSE": "Anillo en uso", "TEAMADD_AGENT": "Agregar Agente al equipo", - "SHOWWEBCONTROL": "Mostrar control Web" + "SHOWWEBCONTROL": "Mostrar control Web", + "PAGE": "Página", + "ROWSPERPAGE": "Filas por página.", + "OF": "De" } } \ 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 08808f9..3cb81ed 100644 --- a/public/app/main/apps/staff/i18n/fa.json +++ b/public/app/main/apps/staff/i18n/fa.json @@ -56,7 +56,11 @@ "NOREPLYNUMBER_REQUIRED": "پاسخ به تعداد مورد نیاز است.", "BUSYNUMBER_REQUIRED": "مشغول به تعداد مورد نیاز است.", "USERNAME_MUST_VALID_PATTERN": "باید نام کاربری معتبر {{regex}}", - "REMOTECONTROLPORT_REQUIRED": "به درگاه کنترل از راه دور مورد نیاز است." + "REMOTECONTROLPORT_REQUIRED": "به درگاه کنترل از راه دور مورد نیاز است.", + "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "از قابليت چت روم باید بیشتر یا مساوی با", + "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "ظرفيت پست باید بیشتر یا مساوی با", + "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "ظرفیت فكس را باید بیشتر یا مساوی با", + "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "ظرفیت کانال باز باید بیشتر یا مساوی با" }, "ACCOUNT": "اشتراک", "VOICE": "صدا", @@ -83,7 +87,8 @@ "SMSCAPACITY": "صفر به معناى نامحدود است.", "OPENCHANNELCAPACITY": "صفر به معناى نامحدود است.", "CALLGROUP": "در تعريف عامل Callgroup", - "PICKUPGROUP": "از گروه هایی که می توانند عامل جواب تلفن" + "PICKUPGROUP": "از گروه هایی که می توانند عامل جواب تلفن", + "USERNAME": "فقط شماره ها و حروف و نویسه های ویژه (_) پشتیبانی می شود." }, "NEW_PASSWORD": "اسم رمز جدید", "CONFIRM_PASSWORD": "تأیید رمز ورود", @@ -181,6 +186,9 @@ "CHANGEPASSWORD_TELEPHONE": "تغییر اسم رمز", "RINGINUSE": "در استفاده از حلقه", "TEAMADD_AGENT": "عامل را به تيم اضافه کنید", - "SHOWWEBCONTROL": "نمایش کنترل وب" + "SHOWWEBCONTROL": "نمایش کنترل وب", + "PAGE": "صفحه", + "ROWSPERPAGE": "رديف در صفحه", + "OF": "از" } } \ 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 27d4304..b526fdb 100644 --- a/public/app/main/apps/staff/i18n/fi.json +++ b/public/app/main/apps/staff/i18n/fi.json @@ -56,7 +56,11 @@ "NOREPLYNUMBER_REQUIRED": "No vastaus on pakollinen", "BUSYNUMBER_REQUIRED": "Kiireisille numero on pakollinen", "USERNAME_MUST_VALID_PATTERN": "Käyttäjätunnuksen on oltava voimassa {{regex}}", - "REMOTECONTROLPORT_REQUIRED": "Kaukosäädin tarvitaan" + "REMOTECONTROLPORT_REQUIRED": "Kaukosäädin tarvitaan", + "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Chat-kapasiteetin on oltava suurempi tai yhtä suuri kuin", + "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Postin kapasiteetin on oltava suurempi tai yhtä suuri kuin", + "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Faksi kapasiteetin on oltava suurempi tai yhtä suuri kuin", + "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Avoimesta kanavasta kapasiteetin on oltava suurempi tai yhtä suuri kuin" }, "ACCOUNT": "Tili", "VOICE": "Ääni", @@ -83,7 +87,8 @@ "SMSCAPACITY": "Nolla tarkoittaa rajaton.", "OPENCHANNELCAPACITY": "Nolla tarkoittaa rajaton.", "CALLGROUP": "Määrittää edustajan callgroup", - "PICKUPGROUP": "Määrittää ryhmän edustaja voi vastata puheluihin" + "PICKUPGROUP": "Määrittää ryhmän edustaja voi vastata puheluihin", + "USERNAME": "Vain numeroita, kirjaimia ja erikoismerkkejä (._ tuetaan" }, "NEW_PASSWORD": "Uusi salasana", "CONFIRM_PASSWORD": "Vahvista salasana", @@ -181,6 +186,9 @@ "CHANGEPASSWORD_TELEPHONE": "Salasanan vaihtaminen", "RINGINUSE": "Rengas on käytössä", "TEAMADD_AGENT": "Lisää agentin tiimi", - "SHOWWEBCONTROL": "Näytä Web-ohjaus" + "SHOWWEBCONTROL": "Näytä Web-ohjaus", + "PAGE": "Sivu", + "ROWSPERPAGE": "Riviä sivulle", + "OF": "," } } \ 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 00819f1..32f1392 100644 --- a/public/app/main/apps/staff/i18n/fr.json +++ b/public/app/main/apps/staff/i18n/fr.json @@ -56,7 +56,11 @@ "NOREPLYNUMBER_REQUIRED": "La réponse n'est requis", "BUSYNUMBER_REQUIRED": "Le numéro occupé est requise", "USERNAME_MUST_VALID_PATTERN": "L'utilisateur doit être valide {{exrég}}", - "REMOTECONTROLPORT_REQUIRED": "Le Port de commande à distance est requis" + "REMOTECONTROLPORT_REQUIRED": "Le Port de commande à distance est requis", + "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Le chat La capacité doit être supérieure ou égale à", + "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La messagerie électronique doit être supérieure ou égale à", + "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La capacité de télécopie doit être supérieure ou égale à", + "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La capacité du canal ouvert doit être supérieure ou égale à" }, "ACCOUNT": "Compte", "VOICE": "Voix", @@ -83,7 +87,8 @@ "SMSCAPACITY": "Zéro signifie illimité.", "OPENCHANNELCAPACITY": "Zéro signifie illimité.", "CALLGROUP": "Définit l'agent's callgroup", - "PICKUPGROUP": "Définit les groupes dans lesquels l'agent peut répondre à des appels" + "PICKUPGROUP": "Définit les groupes dans lesquels l'agent peut répondre à des appels", + "USERNAME": "Seulement les chiffres, lettres et caractères spécifiques (._) sont pris en charge" }, "NEW_PASSWORD": "Nouveau mot de passe", "CONFIRM_PASSWORD": "Confirmer le mot de passe", @@ -181,6 +186,9 @@ "CHANGEPASSWORD_TELEPHONE": "Changer de mot de passe", "RINGINUSE": "L'utilisation de bague", "TEAMADD_AGENT": "Ajouter à l'équipe de l'Agent", - "SHOWWEBCONTROL": "Afficher le contrôle Web" + "SHOWWEBCONTROL": "Afficher le contrôle Web", + "PAGE": "La page", + "ROWSPERPAGE": "Les lignes par page", + "OF": "De" } } \ 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 0c26480..57a9d06 100644 --- a/public/app/main/apps/staff/i18n/hi.json +++ b/public/app/main/apps/staff/i18n/hi.json @@ -56,7 +56,11 @@ "NOREPLYNUMBER_REQUIRED": "का कोई उत्तर संख्या की आवश्यकता है।", "BUSYNUMBER_REQUIRED": "व् यस् त संख्या की आवश्यकता है।", "USERNAME_MUST_VALID_PATTERN": "सूबेदार सुरिन९दर सिनह को मान्य उपयोगकर्ता नाम होना regex}}{", - "REMOTECONTROLPORT_REQUIRED": "रिमोट कंट्रोल पत्तन की आवश्यकता है।" + "REMOTECONTROLPORT_REQUIRED": "रिमोट कंट्रोल पत्तन की आवश्यकता है।", + "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "चैट क्षमता से अधिक होना चाहिए या के बराबर", + "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "मेल की ख्रमता से अधिक होना चाहिए या के बराबर", + "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "फ़ैक्स क्षमता से अधिक होना चाहिए या के बराबर", + "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "खुले चैनल की ख्रमता से अधिक होना चाहिए या के बराबर" }, "ACCOUNT": "खाते", "VOICE": "आवाज", @@ -83,7 +87,8 @@ "SMSCAPACITY": "असीमित अर्थ शून्य", "OPENCHANNELCAPACITY": "असीमित अर्थ शून्य", "CALLGROUP": "इस परिभाषा के एजेंट callgroup", - "PICKUPGROUP": "को परिभाषित समूह कॉल का अपने आप उत्तर दें जो एजेंट कर सकते हैं।" + "PICKUPGROUP": "को परिभाषित समूह कॉल का अपने आप उत्तर दें जो एजेंट कर सकते हैं।", + "USERNAME": "केवल विशिष्ट वर्ण (।_) और नंबर्स, समर्थित" }, "NEW_PASSWORD": "नया पासवर्ड", "CONFIRM_PASSWORD": "पासवर्ड की पुष्टि करें:", @@ -181,6 +186,9 @@ "CHANGEPASSWORD_TELEPHONE": "पासवर्ड बदलें", "RINGINUSE": "रिंग प्रयोग में है", "TEAMADD_AGENT": "एजेंट को टीम में जोड़ें", - "SHOWWEBCONTROL": "वेब नियंत्रण में दिखाएं" + "SHOWWEBCONTROL": "वेब नियंत्रण में दिखाएं", + "PAGE": "पृष्ठ", + "ROWSPERPAGE": "पंक्तियां प्रति पृष्ठ", + "OF": "की" } } \ 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 b1239de..cecc0a9 100644 --- a/public/app/main/apps/staff/i18n/it.json +++ b/public/app/main/apps/staff/i18n/it.json @@ -56,7 +56,11 @@ "NOREPLYNUMBER_REQUIRED": "Numero inoltro in caso di nessuna risposta è richiesto", "BUSYNUMBER_REQUIRED": "Il Numero per inoltro se occupato è richiesto", "USERNAME_MUST_VALID_PATTERN": "Lo username deve essere valido {{regex}}", - "REMOTECONTROLPORT_REQUIRED": "La Porta Controllo Remoto è richiesta" + "REMOTECONTROLPORT_REQUIRED": "La Porta Controllo Remoto è richiesta", + "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La Capacità Chat deve essere superiore o uguale a", + "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La Capacità Mail deve essere superiore o uguale a", + "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La Capacità Fax deve essere superiore o uguale a", + "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La Capacità Open Channel deve essere superiore o uguale a" }, "ACCOUNT": "Account", "VOICE": "Voce", @@ -186,6 +190,8 @@ "SHOWWEBCONTROL": "Mostra controlli web", "PAGE": "Pagina", "ROWSPERPAGE": "Righe per pagina", - "OF": "Di" + "OF": "di", + "CALLFORWARDING": "Inoltro Chiamata", + "DND": "Non disturbare durante la pausa" } } \ 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 5574b47..1f61787 100644 --- a/public/app/main/apps/staff/i18n/ja.json +++ b/public/app/main/apps/staff/i18n/ja.json @@ -56,7 +56,11 @@ "NOREPLYNUMBER_REQUIRED": "No 返信番号が必要です。", "BUSYNUMBER_REQUIRED": "使用中の番号が必要です。", "USERNAME_MUST_VALID_PATTERN": "ユーザー名は ' 有効な { regex } } 必要があります", - "REMOTECONTROLPORT_REQUIRED": "リモート・コントロールのポートが必要です" + "REMOTECONTROLPORT_REQUIRED": "リモート・コントロールのポートが必要です", + "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "チャットの容量以上である必要があります", + "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "メールの容量は以上である必要があります", + "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Fax の容量以上である必要があります", + "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "のオープンチャネルの容量以上である必要があります" }, "ACCOUNT": "アカウント", "VOICE": "音声", @@ -83,7 +87,8 @@ "SMSCAPACITY": "ゼロは制限なしを意味します。", "OPENCHANNELCAPACITY": "ゼロは制限なしを意味します。", "CALLGROUP": "エージェントの callgroup を定義します。", - "PICKUPGROUP": "エージェントがコールに応答できますが、グループを定義します。" + "PICKUPGROUP": "エージェントがコールに応答できますが、グループを定義します。", + "USERNAME": "数字、文字、およびのみ特定の文字 ( 。 ) はサポートされています" }, "NEW_PASSWORD": "新しいパスワード", "CONFIRM_PASSWORD": "パスワードを確認します", @@ -181,6 +186,9 @@ "CHANGEPASSWORD_TELEPHONE": "パスワードの変更", "RINGINUSE": "を使用してのリング", "TEAMADD_AGENT": "エージェントをチームに追加", - "SHOWWEBCONTROL": "Web コントロールを表示" + "SHOWWEBCONTROL": "Web コントロールを表示", + "PAGE": "ページ", + "ROWSPERPAGE": "ページあたりの行数", + "OF": "の" } } \ 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 4bc8f5f..4ac078e 100644 --- a/public/app/main/apps/staff/i18n/ko.json +++ b/public/app/main/apps/staff/i18n/ko.json @@ -56,7 +56,11 @@ "NOREPLYNUMBER_REQUIRED": "회신 번호 필요", "BUSYNUMBER_REQUIRED": "분주한 번호가 필요합니다.", "USERNAME_MUST_VALID_PATTERN": "사용자 이름이 올바르지 {{regex}} 합니다.", - "REMOTECONTROLPORT_REQUIRED": "원격 제어 포트 필요" + "REMOTECONTROLPORT_REQUIRED": "원격 제어 포트 필요", + "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "채트 용량이 같거나 커야 합니다.", + "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "메일 용량이 같거나 커야 합니다.", + "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "팩스 용량이 같거나 커야 합니다.", + "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "열기 채널 용량이 같거나 커야 합니다." }, "ACCOUNT": "계정", "VOICE": "음성", @@ -83,7 +87,8 @@ "SMSCAPACITY": "0은 제한 없음을 의미합니다.", "OPENCHANNELCAPACITY": "0은 제한 없음을 의미합니다.", "CALLGROUP": "상담원의 callgroup 정의합니다", - "PICKUPGROUP": "상담원이 통화에 응답할 수 있는 그룹을 정의합니다" + "PICKUPGROUP": "상담원이 통화에 응답할 수 있는 그룹을 정의합니다", + "USERNAME": "숫자와 글자 및 특정 문자(._) 지원됩니다." }, "NEW_PASSWORD": "새 암호", "CONFIRM_PASSWORD": "암호 확인", @@ -181,6 +186,9 @@ "CHANGEPASSWORD_TELEPHONE": "암호 변경", "RINGINUSE": "사용 중인 링", "TEAMADD_AGENT": "상담원 팀 추가", - "SHOWWEBCONTROL": "웹 표시 제어" + "SHOWWEBCONTROL": "웹 표시 제어", + "PAGE": "페이지", + "ROWSPERPAGE": "페이지 당 행", + "OF": "중" } } \ 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 3bf6f9a..c99b631 100644 --- a/public/app/main/apps/staff/i18n/nl.json +++ b/public/app/main/apps/staff/i18n/nl.json @@ -56,7 +56,11 @@ "NOREPLYNUMBER_REQUIRED": "Het antwoord is vereist", "BUSYNUMBER_REQUIRED": "Het drukke-nummer is vereist", "USERNAME_MUST_VALID_PATTERN": "De Gebruikersnaam moet geldig {{regex}}", - "REMOTECONTROLPORT_REQUIRED": "De aansluiting voor afstandsbediening vereist" + "REMOTECONTROLPORT_REQUIRED": "De aansluiting voor afstandsbediening vereist", + "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De Chat capaciteit moet groter zijn dan of gelijk aan", + "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De Mail capaciteit moet groter zijn dan of gelijk aan", + "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De Fax capaciteit moet groter zijn dan of gelijk aan", + "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Het open kanaal capaciteit moet groter zijn dan of gelijk aan" }, "ACCOUNT": "Account", "VOICE": "Spraak", @@ -83,7 +87,8 @@ "SMSCAPACITY": "Nul betekent onbeperkt.", "OPENCHANNELCAPACITY": "Nul betekent onbeperkt.", "CALLGROUP": "Definieert de agent callgroup", - "PICKUPGROUP": "Definieert de groepen waarin de agent kan oproepen beantwoorden" + "PICKUPGROUP": "Definieert de groepen waarin de agent kan oproepen beantwoorden", + "USERNAME": "Alleen cijfers, letters en speciale tekens (_) worden ondersteund" }, "NEW_PASSWORD": "Nieuw wachtwoord", "CONFIRM_PASSWORD": "Wachtwoord bevestigen", @@ -181,6 +186,9 @@ "CHANGEPASSWORD_TELEPHONE": "Wachtwoord wijzigen", "RINGINUSE": "Ring in gebruik", "TEAMADD_AGENT": "Voeg agent team", - "SHOWWEBCONTROL": "Show Web Control" + "SHOWWEBCONTROL": "Show Web Control", + "PAGE": "Pagina", + "ROWSPERPAGE": "Rijen per pagina", + "OF": "Van" } } \ 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 527b376..493a3f9 100644 --- a/public/app/main/apps/staff/i18n/no.json +++ b/public/app/main/apps/staff/i18n/no.json @@ -56,7 +56,11 @@ "NOREPLYNUMBER_REQUIRED": "Det ingen svar nummer er obligatorisk", "BUSYNUMBER_REQUIRED": "Det travle nummer er obligatorisk", "USERNAME_MUST_VALID_PATTERN": "Brukernavnet mÃ¥ være gyldig {{regex}}", - "REMOTECONTROLPORT_REQUIRED": "Fjernkontrollen Port er nødvendig" + "REMOTECONTROLPORT_REQUIRED": "Fjernkontrollen Port er nødvendig", + "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Det Chat kapasitet mÃ¥ være større enn eller lik", + "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "E-kapasitet mÃ¥ være større enn eller lik", + "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Det faks kapasitet mÃ¥ være større enn eller lik", + "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den Ã¥pne kanalen kapasitet mÃ¥ være større enn eller lik" }, "ACCOUNT": "Konto", "VOICE": "Stemme", @@ -83,7 +87,8 @@ "SMSCAPACITY": "Null betyr ubegrenset.", "OPENCHANNELCAPACITY": "Null betyr ubegrenset.", "CALLGROUP": "Definerer agentens callgroup", - "PICKUPGROUP": "Definerer grupper der agent kan svare pÃ¥ anrop" + "PICKUPGROUP": "Definerer grupper der agent kan svare pÃ¥ anrop", + "USERNAME": "Bare tall, bokstaver og bestemte tegn (._) støttes" }, "NEW_PASSWORD": "Nytt passord", "CONFIRM_PASSWORD": "Bekreft passord", @@ -181,6 +186,9 @@ "CHANGEPASSWORD_TELEPHONE": "Endre passord", "RINGINUSE": "Ring i bruk", "TEAMADD_AGENT": "Legg til Agent til Team", - "SHOWWEBCONTROL": "Vis Web-kontroll" + "SHOWWEBCONTROL": "Vis Web-kontroll", + "PAGE": "Siden", + "ROWSPERPAGE": "Linjer per side", + "OF": "Av" } } \ 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 6b7d046..a57c8d0 100644 --- a/public/app/main/apps/staff/i18n/pt-PT.json +++ b/public/app/main/apps/staff/i18n/pt-PT.json @@ -56,7 +56,11 @@ "NOREPLYNUMBER_REQUIRED": "O número de resposta não é necessária", "BUSYNUMBER_REQUIRED": "É necessário o Número Ocupado", "USERNAME_MUST_VALID_PATTERN": "O nome de utilizador tem de ser válida {{regex}}", - "REMOTECONTROLPORT_REQUIRED": "Porta do controle remoto é necessário" + "REMOTECONTROLPORT_REQUIRED": "Porta do controle remoto é necessário", + "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "A capacidade de Chat deve ser maior do que ou igual a", + "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "A capacidade de correio deve ser maior do que ou igual a", + "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "A capacidade de fax deve ser maior do que ou igual a", + "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O Canal Aberto a capacidade deve ser maior do que ou igual a" }, "ACCOUNT": "Conta", "VOICE": "Voz", @@ -83,7 +87,8 @@ "SMSCAPACITY": "Zero significa ilimitado.", "OPENCHANNELCAPACITY": "Zero significa ilimitado.", "CALLGROUP": "Define o callgroup do agente", - "PICKUPGROUP": "Define os grupos nos quais o agente pode atender chamadas" + "PICKUPGROUP": "Define os grupos nos quais o agente pode atender chamadas", + "USERNAME": "Apenas números, letras e caracteres específicos (._) são suportados" }, "NEW_PASSWORD": "Nova Senha", "CONFIRM_PASSWORD": "Confirmar Senha", @@ -181,6 +186,9 @@ "CHANGEPASSWORD_TELEPHONE": "Alterar a senha", "RINGINUSE": "Anel em uso", "TEAMADD_AGENT": "Adicionar Agente para a equipe", - "SHOWWEBCONTROL": "Mostrar Controlo Web" + "SHOWWEBCONTROL": "Mostrar Controlo Web", + "PAGE": "Página", + "ROWSPERPAGE": "Linhas por página", + "OF": "De" } } \ 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 68c4ccd..39051e9 100644 --- a/public/app/main/apps/staff/i18n/ru.json +++ b/public/app/main/apps/staff/i18n/ru.json @@ -56,7 +56,11 @@ "NOREPLYNUMBER_REQUIRED": "В ответ не требуется", "BUSYNUMBER_REQUIRED": "Занят номер требуется", "USERNAME_MUST_VALID_PATTERN": "Имя пользователя должно быть действительным {{regex}}", - "REMOTECONTROLPORT_REQUIRED": "Пульт дистанционного управления требуется порт" + "REMOTECONTROLPORT_REQUIRED": "Пульт дистанционного управления требуется порт", + "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Чат потенциала должно быть больше или равно", + "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "По электронной почте потенциала должно быть больше или равно", + "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Факс потенциала должно быть больше или равно", + "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Открытого канала потенциала должно быть больше или равно" }, "ACCOUNT": "Счета", "VOICE": "Голосовой связи", @@ -83,7 +87,8 @@ "SMSCAPACITY": "Ноль означает неограниченное количество.", "OPENCHANNELCAPACITY": "Ноль означает неограниченное количество.", "CALLGROUP": "Определяет оператора callgroup", - "PICKUPGROUP": "Определяет группы, в которой оператор может ответить на вызовы" + "PICKUPGROUP": "Определяет группы, в которой оператор может ответить на вызовы", + "USERNAME": "Только цифры, буквы и специальные символы (_) поддерживаются" }, "NEW_PASSWORD": "Новый пароль", "CONFIRM_PASSWORD": "Подтвердите пароль", @@ -181,6 +186,9 @@ "CHANGEPASSWORD_TELEPHONE": "Изменить пароль", "RINGINUSE": "Кольцо в использовании", "TEAMADD_AGENT": "Добавить оператора в группу", - "SHOWWEBCONTROL": "Показать Web Control" + "SHOWWEBCONTROL": "Показать Web Control", + "PAGE": "Страница", + "ROWSPERPAGE": "Строк на странице", + "OF": "В" } } \ 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 ab5b732..2525618 100644 --- a/public/app/main/apps/staff/i18n/sv.json +++ b/public/app/main/apps/staff/i18n/sv.json @@ -56,7 +56,11 @@ "NOREPLYNUMBER_REQUIRED": "Inga svar krävs", "BUSYNUMBER_REQUIRED": "Det upptagna numret krävs", "USERNAME_MUST_VALID_PATTERN": "Användarnamnet mÃ¥ste vara giltig {{regex}}", - "REMOTECONTROLPORT_REQUIRED": "Fjärrkontrollen Port krävs" + "REMOTECONTROLPORT_REQUIRED": "Fjärrkontrollen Port krävs", + "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Chatten kapacitet mÃ¥ste vara större än eller lika med", + "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Mail kapacitet mÃ¥ste vara större än eller lika med", + "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Fax kapacitet mÃ¥ste vara större än eller lika med", + "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den öppna kanalen mÃ¥ste vara större än eller lika med" }, "ACCOUNT": "Konto", "VOICE": "Röst", @@ -83,7 +87,8 @@ "SMSCAPACITY": "Noll betyder obegränsade.", "OPENCHANNELCAPACITY": "Noll betyder obegränsade.", "CALLGROUP": "Anger agentens callgroup", - "PICKUPGROUP": "Definierar grupper där agenten kan besvara samtal" + "PICKUPGROUP": "Definierar grupper där agenten kan besvara samtal", + "USERNAME": "Endast siffror, bokstäver och särskilda tecken (_) stöds" }, "NEW_PASSWORD": "Nytt lösenord", "CONFIRM_PASSWORD": "Bekräfta lösenord", @@ -181,6 +186,9 @@ "CHANGEPASSWORD_TELEPHONE": "Ändra lösenord", "RINGINUSE": "Ring i användning", "TEAMADD_AGENT": "Lägg till Agent Team", - "SHOWWEBCONTROL": "Visa Web Control" + "SHOWWEBCONTROL": "Visa Web Control", + "PAGE": "Sidan", + "ROWSPERPAGE": "Rader per sida", + "OF": "Av" } } \ 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 6a2fbcf..53d2631 100644 --- a/public/app/main/apps/staff/i18n/tr.json +++ b/public/app/main/apps/staff/i18n/tr.json @@ -56,7 +56,11 @@ "NOREPLYNUMBER_REQUIRED": "Hiçbir Yanıt Numarası gereklidir", "BUSYNUMBER_REQUIRED": "Meşgul Numarası gereklidir", "USERNAME_MUST_VALID_PATTERN": "Kullanıcı Adı geçerli olmalıdır {{regex}}", - "REMOTECONTROLPORT_REQUIRED": "Uzaktan Kumanda Bağlantı Noktası gereklidir" + "REMOTECONTROLPORT_REQUIRED": "Uzaktan Kumanda Bağlantı Noktası gereklidir", + "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Sohbet kapasitesine eşit veya daha büyük olmalıdır.", + "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Posta Kapasitesi eşit veya daha büyük olmalıdır.", + "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Faks kapasitesine eşit veya daha büyük olmalıdır.", + "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Açık Kanal Kapasitesi eşit veya daha büyük olmalıdır." }, "ACCOUNT": "Hesap", "VOICE": "Ses", @@ -83,7 +87,8 @@ "SMSCAPACITY": "Sıfır anlamına gelir sınırsız.", "OPENCHANNELCAPACITY": "Sıfır anlamına gelir sınırsız.", "CALLGROUP": "Tanımlar temsilcinin callgroup", - "PICKUPGROUP": "Tanımlar, gruplar, ajan aramaları yanıtlama" + "PICKUPGROUP": "Tanımlar, gruplar, ajan aramaları yanıtlama", + "USERNAME": "Sadece sayılar, harfler ve özel karakterler (._) desteklenir." }, "NEW_PASSWORD": "Yeni Parola", "CONFIRM_PASSWORD": "Parolayı Onayla", @@ -181,6 +186,9 @@ "CHANGEPASSWORD_TELEPHONE": "Parola Değiştir", "RINGINUSE": "Halka.", "TEAMADD_AGENT": "Add Temsilci Ekibi", - "SHOWWEBCONTROL": "Show Web Kontrolü" + "SHOWWEBCONTROL": "Show Web Kontrolü", + "PAGE": "Sayfa", + "ROWSPERPAGE": "Sayfadaki satırları", + "OF": "Ve" } } \ 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 4a9368d..7f8b5a8 100644 --- a/public/app/main/apps/staff/i18n/zh-CN.json +++ b/public/app/main/apps/staff/i18n/zh-CN.json @@ -56,7 +56,11 @@ "NOREPLYNUMBER_REQUIRED": "在没有答覆编号是必需的", "BUSYNUMBER_REQUIRED": "繁忙的编号是必需的", "USERNAME_MUST_VALID_PATTERN": "用户名必须为有效的{{regex}}", - "REMOTECONTROLPORT_REQUIRED": "远程控制端口是必需的" + "REMOTECONTROLPORT_REQUIRED": "远程控制端口是必需的", + "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "“文本交谈” 的容量必须大于或等于", + "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "邮件的容量必须大于或等于", + "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "传真的容量必须大于或等于", + "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "打开的通道的容量必须大于或等于" }, "ACCOUNT": "帐户", "VOICE": "语音", @@ -83,7 +87,8 @@ "SMSCAPACITY": "0 意味着无限的。", "OPENCHANNELCAPACITY": "0 意味着无限的。", "CALLGROUP": "定义代理的 callgroup", - "PICKUPGROUP": "定义组中的业务代表可以应答呼叫。" + "PICKUPGROUP": "定义组中的业务代表可以应答呼叫。", + "USERNAME": "只有数字、字母和特殊字符(_)的支持" }, "NEW_PASSWORD": "新的密码。", "CONFIRM_PASSWORD": "确认密码", @@ -181,6 +186,9 @@ "CHANGEPASSWORD_TELEPHONE": "更改密码", "RINGINUSE": "环在使用中", "TEAMADD_AGENT": "添加业务代表组", - "SHOWWEBCONTROL": "显示 Web 控件" + "SHOWWEBCONTROL": "显示 Web 控件", + "PAGE": "页面", + "ROWSPERPAGE": "每页的行数。", + "OF": "的" } } \ 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 d45b9fc..f450eef 100644 --- a/public/app/main/apps/staff/i18n/zh-TW.json +++ b/public/app/main/apps/staff/i18n/zh-TW.json @@ -56,7 +56,11 @@ "NOREPLYNUMBER_REQUIRED": "無回覆號碼」為必填欄位", "BUSYNUMBER_REQUIRED": "「忙線時轉撥來電」號碼是必填欄位", "USERNAME_MUST_VALID_PATTERN": "此使用者名稱必須是有效的 {{ regex }}", - "REMOTECONTROLPORT_REQUIRED": "遠端控制埠為必填欄位" + "REMOTECONTROLPORT_REQUIRED": "遠端控制埠為必填欄位", + "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "「文字交談」容量必須大於或等於", + "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "郵件容量必須大於或等於", + "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "傳真容量必須大於或等於", + "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "打開通道容量必須大於或等於" }, "ACCOUNT": "帳號", "VOICE": "語音通話", @@ -83,7 +87,8 @@ "SMSCAPACITY": "0 表示沒有限制。", "OPENCHANNELCAPACITY": "0 表示沒有限制。", "CALLGROUP": "定義值機人員的 callgroup", - "PICKUPGROUP": "定義群組中的值機人員可以接聽來電" + "PICKUPGROUP": "定義群組中的值機人員可以接聽來電", + "USERNAME": "只有數字、字母和特殊字元 ( _ ) 都受到支援" }, "NEW_PASSWORD": "新密碼", "CONFIRM_PASSWORD": "確認密碼", @@ -181,6 +186,9 @@ "CHANGEPASSWORD_TELEPHONE": "變更密碼", "RINGINUSE": "環使用中", "TEAMADD_AGENT": "新增值機員至群組", - "SHOWWEBCONTROL": "顯示 Web 控制" + "SHOWWEBCONTROL": "顯示 Web 控制", + "PAGE": "頁面", + "ROWSPERPAGE": "每頁行數", + "OF": "的" } } \ No newline at end of file diff --git a/public/app/main/apps/tools/i18n/da.json b/public/app/main/apps/tools/i18n/da.json index 63fb88e..2dc5471 100644 --- a/public/app/main/apps/tools/i18n/da.json +++ b/public/app/main/apps/tools/i18n/da.json @@ -55,7 +55,9 @@ "SEND_REMOTE_PARTY_ID_HEADER": "Status", "ENCRYPTION": "Definer hvis Remote-Party-ID skal sendes (som standard til Ingen).", "TRANSPORT": "Opsætter transporter. Rækkefølgen bestemmer den primære standard transport.", - "OTHERFIELDS": "Andre felter for at tilføje i trunks conf filer. Skal skrives ind i stjerne-format (nøgle=værdi) af de enkelte felter i en enkelt række." + "OTHERFIELDS": "Andre felter for at tilføje i trunks conf filer. Skal skrives ind i stjerne-format (nøgle=værdi) af de enkelte felter i en enkelt række.", + "EMAILADDRESS": "Du kan tilføje flere adresser med komma (f.eks. john.doe@xcally.com, Jane.miller@xcally.com)", + "NAME": "Kun tal og bogstaver og specielle tegn (.________) understøttes" }, "EDIT_TRUNK": "Rediger Trunk", "DELETE_TRUNK": "Slet Trunk", @@ -325,6 +327,9 @@ "DAY": "Dagen", "WEEK": "Uge", "YEAR": "År", - "ON": "PÃ¥" + "ON": "PÃ¥", + "PAI": "P-Asserted-Identity", + "PAGE": "Page", + "ROWSPERPAGE": "Rækker pr. side" } } \ No newline at end of file diff --git a/public/app/main/apps/tools/i18n/de.json b/public/app/main/apps/tools/i18n/de.json index 58912e9..3210371 100644 --- a/public/app/main/apps/tools/i18n/de.json +++ b/public/app/main/apps/tools/i18n/de.json @@ -55,7 +55,9 @@ "SEND_REMOTE_PARTY_ID_HEADER": "Status", "ENCRYPTION": "Festlegen, ob die Remote-Party-ID gesendet werden soll (standardmäßig auf Nein).", "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.", - "OTHERFIELDS": "Weitere Felder hinzufügen, in der Amtsleitungen conf-Dateien. In Sternchen format (key=value), jedes Feld auf einer Zeile." + "OTHERFIELDS": "Weitere Felder hinzufügen, in der Amtsleitungen conf-Dateien. In Sternchen format (key=value), jedes Feld auf einer Zeile.", + "EMAILADDRESS": "Sie können mehrere Adressen mit Kommata (z. b. John.doe@xcally.com, jane.miller@xcally.com)", + "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt." }, "EDIT_TRUNK": "Trunk bearbeiten", "DELETE_TRUNK": "Löschen Sie Trunk", @@ -325,6 +327,9 @@ "DAY": "Tag", "WEEK": "Woche", "YEAR": "Jahr", - "ON": "Auf" + "ON": "Auf", + "PAI": "P-Asserted-Identity", + "PAGE": "Seite", + "ROWSPERPAGE": "Zeilen pro Seite" } } \ No newline at end of file diff --git a/public/app/main/apps/tools/i18n/en.json b/public/app/main/apps/tools/i18n/en.json index d6bfd2c..8ac3795 100644 --- a/public/app/main/apps/tools/i18n/en.json +++ b/public/app/main/apps/tools/i18n/en.json @@ -321,7 +321,7 @@ "LAST": "Last", "LASTUNIT": "Unit", "MAILACCOUNT": "Mail Account", - "OF": "Of", + "OF": "of", "PAST_THE_HOUR": "Past the hour", "DAY": "Day", "WEEK": "Week", diff --git a/public/app/main/apps/tools/i18n/es.json b/public/app/main/apps/tools/i18n/es.json index 10d9a39..5c3bbaa 100644 --- a/public/app/main/apps/tools/i18n/es.json +++ b/public/app/main/apps/tools/i18n/es.json @@ -55,7 +55,9 @@ "SEND_REMOTE_PARTY_ID_HEADER": "El estado", "ENCRYPTION": "Definir si Remote-Party-ID debe ser enviado (por defecto no).", "TRANSPORT": "Establecer el valor predeterminado de los transportes. El orden determina el principal transporte predeterminado.", - "OTHERFIELDS": "Otros campos para añadir archivos conf en los troncos. Al estar escrito en formato de asterisk (clave=valor), cada campo en una sola fila." + "OTHERFIELDS": "Otros campos para añadir archivos conf en los troncos. Al estar escrito en formato de asterisk (clave=valor), cada campo en una sola fila.", + "EMAILADDRESS": "Puede agregar varias direcciones con comas (por ejemplo, Jane.miller@xcally.com) john.doe@xcally.com", + "NAME": "Sólo los números, letras y caracteres específicos (_) son compatibles." }, "EDIT_TRUNK": "Editar tronco", "DELETE_TRUNK": "Eliminar el tronco", @@ -325,6 +327,9 @@ "DAY": "Día", "WEEK": "Semana", "YEAR": "Año", - "ON": "En" + "ON": "En", + "PAI": "P-Asserted-Identity", + "PAGE": "Página", + "ROWSPERPAGE": "Filas por página." } } \ No newline at end of file diff --git a/public/app/main/apps/tools/i18n/fa.json b/public/app/main/apps/tools/i18n/fa.json index 62ac479..52fdd95 100644 --- a/public/app/main/apps/tools/i18n/fa.json +++ b/public/app/main/apps/tools/i18n/fa.json @@ -55,7 +55,9 @@ "SEND_REMOTE_PARTY_ID_HEADER": "وضعیت", "ENCRYPTION": "اگر تعريف شناسه Remote-Party فرستاده شود (نه) را به تنظیمات پیش فرض کارخانه ای برگردانید.", "TRANSPORT": "تنظیم پیش فرض را در خلسه است. نظام حمل و نقل پیش فرض اولیه را تعیین می کند.", - "OTHERFIELDS": "ساير رشته ها افزودن فایل conf در كتابی محفوظ شده است. نوشته مى شد با فرمت (کلید asterisk=مقدار) و هر رشته را در یك ردیف است." + "OTHERFIELDS": "ساير رشته ها افزودن فایل conf در كتابی محفوظ شده است. نوشته مى شد با فرمت (کلید asterisk=مقدار) و هر رشته را در یك ردیف است.", + "EMAILADDRESS": "شما می توانید با استفاده از آدرس های چندگانه (مثلاً Commas John.doe@xcally.com، Jane.miller@xcally.com)", + "NAME": "فقط شماره ها و حروف و نویسه های ویژه (_) پشتیبانی می شود." }, "EDIT_TRUNK": "ویرایش تنه", "DELETE_TRUNK": "تنه را حذف کنید", @@ -325,6 +327,9 @@ "DAY": "روز", "WEEK": "هفته", "YEAR": "سال", - "ON": "در" + "ON": "در", + "PAI": "Ù¾-Asserted-Identity", + "PAGE": "صفحه", + "ROWSPERPAGE": "رديف در صفحه" } } \ No newline at end of file diff --git a/public/app/main/apps/tools/i18n/fi.json b/public/app/main/apps/tools/i18n/fi.json index 1247875..069c729 100644 --- a/public/app/main/apps/tools/i18n/fi.json +++ b/public/app/main/apps/tools/i18n/fi.json @@ -55,7 +55,9 @@ "SEND_REMOTE_PARTY_ID_HEADER": "Tila", "ENCRYPTION": "Määritä Remote-Party-ID on lähetettävä (oletusarvo).", "TRANSPORT": "Aseta oletusarvoinen kuljetukset. Järjestys määrittää ensisijaisen oletus kuljetuksen ajaksi.", - "OTHERFIELDS": "Muihin kenttiin URL-arkut conf. On kirjoitettu tähti format (näppäin = arvo), jokainen kenttä yhdellä rivillä." + "OTHERFIELDS": "Muihin kenttiin URL-arkut conf. On kirjoitettu tähti format (näppäin = arvo), jokainen kenttä yhdellä rivillä.", + "EMAILADDRESS": "Voit lisätä useita osoitteisiin pilkkuja (esim. john.doe@xcally.com, jane.miller@xcally.com)", + "NAME": "Vain numeroita, kirjaimia ja erikoismerkkejä (._ tuetaan" }, "EDIT_TRUNK": "Muokkaa tavaratilaan", "DELETE_TRUNK": "Poista tavaratilaan", @@ -325,6 +327,9 @@ "DAY": "Päivä", "WEEK": "Viikko", "YEAR": "Vuosi", - "ON": "," + "ON": ",", + "PAI": "P-Asserted-Identity", + "PAGE": "Sivu", + "ROWSPERPAGE": "Riviä sivulle" } } \ No newline at end of file diff --git a/public/app/main/apps/tools/i18n/fr.json b/public/app/main/apps/tools/i18n/fr.json index 7c71f46..d8c7304 100644 --- a/public/app/main/apps/tools/i18n/fr.json +++ b/public/app/main/apps/tools/i18n/fr.json @@ -55,7 +55,9 @@ "SEND_REMOTE_PARTY_ID_HEADER": "Status", "ENCRYPTION": "Définir si tête Remote-Party-ID doit être envoyée (par défaut, aucun).", "TRANSPORT": "Définir la valeur par défaut de transports. L'ordre détermine le principal défaut des transports.", - "OTHERFIELDS": "D'autres champs à ajouter dans les troncs. Pour être écrit en format asterisk (clé =valeur), chaque champ d'une seule ligne." + "OTHERFIELDS": "D'autres champs à ajouter dans les troncs. Pour être écrit en format asterisk (clé =valeur), chaque champ d'une seule ligne.", + "EMAILADDRESS": "Vous pouvez ajouter plusieurs adresses par des virgules (p. ex., jane.miller@xcally.com) john.doe@xcally.com", + "NAME": "Seulement les chiffres, lettres et caractères spécifiques (._) sont pris en charge" }, "EDIT_TRUNK": "Tronc Modifier", "DELETE_TRUNK": "Supprimer Trunk", @@ -325,6 +327,9 @@ "DAY": "Jour", "WEEK": "Semaine", "YEAR": "Année", - "ON": "Sur" + "ON": "Sur", + "PAI": "P-Asserted-Identity", + "PAGE": "La page", + "ROWSPERPAGE": "Les lignes par page" } } \ No newline at end of file diff --git a/public/app/main/apps/tools/i18n/hi.json b/public/app/main/apps/tools/i18n/hi.json index 56009c5..5d9b71f 100644 --- a/public/app/main/apps/tools/i18n/hi.json +++ b/public/app/main/apps/tools/i18n/hi.json @@ -55,7 +55,9 @@ "SEND_REMOTE_PARTY_ID_HEADER": "की स्थिति", "ENCRYPTION": "यदि परिभाषित Remote-Party-ID भेजा जाना चाहिए। (डिफ़ॉल्ट नहीं है।", "TRANSPORT": "डिफ़ॉल्ट केपरिवहन सेट करें क्रम निर्धारण की प्राथमिक डिफ़ॉल्ट परिवहन।", - "OTHERFIELDS": "अन्य क्षेत्रों के तनों में जोड़ने के लिए, तदनुसार फ़ाइलें शामिल हैं. तारांकन (=कुंजी को लिखित में प्रत्येक क्षेत्र), मूल्य का स्वरूप एक पंक् ति है।" + "OTHERFIELDS": "अन्य क्षेत्रों के तनों में जोड़ने के लिए, तदनुसार फ़ाइलें शामिल हैं. तारांकन (=कुंजी को लिखित में प्रत्येक क्षेत्र), मूल्य का स्वरूप एक पंक् ति है।", + "EMAILADDRESS": "आप एकाधिक पते का उपयोग करते हुए जोड़ सकते हैं (उदाहरण के लिए, अल्पविराम john.doe@xcally.com jane.miller@xcally.com)", + "NAME": "केवल विशिष्ट वर्ण (।_) और नंबर्स, समर्थित" }, "EDIT_TRUNK": "सूंड संपादित करें", "DELETE_TRUNK": "सूंड हटाएं", @@ -325,6 +327,9 @@ "DAY": "दिन", "WEEK": "सप्ताह के", "YEAR": "वर्ष", - "ON": "पर" + "ON": "पर", + "PAI": "पी.-Asserted-Identity", + "PAGE": "पृष्ठ", + "ROWSPERPAGE": "पंक्तियां प्रति पृष्ठ" } } \ No newline at end of file diff --git a/public/app/main/apps/tools/i18n/it.json b/public/app/main/apps/tools/i18n/it.json index 84b7bf6..a532972 100644 --- a/public/app/main/apps/tools/i18n/it.json +++ b/public/app/main/apps/tools/i18n/it.json @@ -321,7 +321,7 @@ "LAST": "Gli ultimi", "LASTUNIT": "Unità", "MAILACCOUNT": "Account Email", - "OF": "Di", + "OF": "di", "PAST_THE_HOUR": "Passata l'ora", "DAY": "Giorno", "WEEK": "Settimana", diff --git a/public/app/main/apps/tools/i18n/ja.json b/public/app/main/apps/tools/i18n/ja.json index 4484ec9..29fc020 100644 --- a/public/app/main/apps/tools/i18n/ja.json +++ b/public/app/main/apps/tools/i18n/ja.json @@ -55,7 +55,9 @@ "SEND_REMOTE_PARTY_ID_HEADER": "ステータス", "ENCRYPTION": "Remote-party-id 送信する必要がある ( デフォルトは no ) にするかを定義します。", "TRANSPORT": "デフォルトの転送を設定します。 順序は、プライマリデフォルトのトランスポートを指定します。", - "OTHERFIELDS": "では、トランク内の他のフィールドに conf ファイルを追加します。 でアスタリスク形式(キー = 値 ) は、 1 つの行上の各フィールドに書き込まれます。" + "OTHERFIELDS": "では、トランク内の他のフィールドに conf ファイルを追加します。 でアスタリスク形式(キー = 値 ) は、 1 つの行上の各フィールドに書き込まれます。", + "EMAILADDRESS": "カンマを使用して ( 例えば、 john.doe@xcally.com jane.miller@xcally.com) 複数のアドレスを追加できます。", + "NAME": "数字、文字、およびのみ特定の文字 ( 。 ) はサポートされています" }, "EDIT_TRUNK": "トランクの編集", "DELETE_TRUNK": "トランクを削除", @@ -325,6 +327,9 @@ "DAY": "日", "WEEK": "週", "YEAR": "å¹´", - "ON": "上の" + "ON": "上の", + "PAI": "P-asserted-identity", + "PAGE": "ページ", + "ROWSPERPAGE": "ページあたりの行数" } } \ No newline at end of file diff --git a/public/app/main/apps/tools/i18n/ko.json b/public/app/main/apps/tools/i18n/ko.json index 1ed6be3..c55e6e5 100644 --- a/public/app/main/apps/tools/i18n/ko.json +++ b/public/app/main/apps/tools/i18n/ko.json @@ -55,7 +55,9 @@ "SEND_REMOTE_PARTY_ID_HEADER": "상태", "ENCRYPTION": "Remote-party-Id(기본값 없음) 하는지 여부를 정의합니다.", "TRANSPORT": "기본 전송 집합은. 주문 기본 전송 결정합니다.", - "OTHERFIELDS": "자가용의 트렁크가 다른 필드를.conf 파일을 추가합니다. 에서 별표( 키=값), 단일 행에 각 필드를 작성할 수 있습니다." + "OTHERFIELDS": "자가용의 트렁크가 다른 필드를.conf 파일을 추가합니다. 에서 별표( 키=값), 단일 행에 각 필드를 작성할 수 있습니다.", + "EMAILADDRESS": "콤마( 예: john.doe@xcally.com, jane.miller@xcally.com) 사용하여 여러 주소를 추가할 수 있습니다.", + "NAME": "숫자와 글자 및 특정 문자(._) 지원됩니다." }, "EDIT_TRUNK": "편집 트렁크", "DELETE_TRUNK": "트렁크 삭제", @@ -325,6 +327,9 @@ "DAY": "하루 종일", "WEEK": "이번 주", "YEAR": "년", - "ON": "일" + "ON": "일", + "PAI": "P-Asserted-Identity", + "PAGE": "페이지", + "ROWSPERPAGE": "페이지 당 행" } } \ No newline at end of file diff --git a/public/app/main/apps/tools/i18n/nl.json b/public/app/main/apps/tools/i18n/nl.json index a041e58..ce32a92 100644 --- a/public/app/main/apps/tools/i18n/nl.json +++ b/public/app/main/apps/tools/i18n/nl.json @@ -55,7 +55,9 @@ "SEND_REMOTE_PARTY_ID_HEADER": "Status", "ENCRYPTION": "Definieer als header Remote-Party-ID moet worden verzonden (standaard op nee).", "TRANSPORT": "Stel de standaard transporteert. De volgorde bepaalt de primaire standaard transport.", - "OTHERFIELDS": "Andere velden toe te voegen in de trunks conf bestanden. Wordt geschreven in asterisk format (key=value), elk veld op een enkele rij." + "OTHERFIELDS": "Andere velden toe te voegen in de trunks conf bestanden. Wordt geschreven in asterisk format (key=value), elk veld op een enkele rij.", + "EMAILADDRESS": "U kunt meerdere adressen met een komma (bijvoorbeeld John.doe@xcally.com, jane.miller@xcally.com)", + "NAME": "Alleen cijfers, letters en speciale tekens (_) worden ondersteund" }, "EDIT_TRUNK": "Edit transmissielijn", "DELETE_TRUNK": "Verwijderen", @@ -325,6 +327,9 @@ "DAY": "Dag", "WEEK": "Week", "YEAR": "Jaar", - "ON": "Op" + "ON": "Op", + "PAI": "P-Asserted-Identity", + "PAGE": "Pagina", + "ROWSPERPAGE": "Rijen per pagina" } } \ No newline at end of file diff --git a/public/app/main/apps/tools/i18n/no.json b/public/app/main/apps/tools/i18n/no.json index 3ec1ec6..3b268c2 100644 --- a/public/app/main/apps/tools/i18n/no.json +++ b/public/app/main/apps/tools/i18n/no.json @@ -55,7 +55,9 @@ "SEND_REMOTE_PARTY_ID_HEADER": "Status", "ENCRYPTION": "Definere om Remote-Party-ID skal sendes (standard til Ingen).", "TRANSPORT": "Angi standard transporterer. Rekkefølgen bestemmer den primære standard transport.", - "OTHERFIELDS": "Andre felter for Ã¥ legge til i samband konf filer. Å være skrevet i stjerne-format (key=verdi), hvert felt pÃ¥ en enkelt linje." + "OTHERFIELDS": "Andre felter for Ã¥ legge til i samband konf filer. Å være skrevet i stjerne-format (key=verdi), hvert felt pÃ¥ en enkelt linje.", + "EMAILADDRESS": "Du kan legge til flere adresser med komma (f.eks. john.doe@xcally.com, jane.miller@xcally.com)", + "NAME": "Bare tall, bokstaver og bestemte tegn (._) støttes" }, "EDIT_TRUNK": "Rediger Trunk", "DELETE_TRUNK": "Slette Trunk", @@ -325,6 +327,9 @@ "DAY": "Dag", "WEEK": "Uke", "YEAR": "År", - "ON": "PÃ¥" + "ON": "PÃ¥", + "PAI": "P-Asserted-Identity", + "PAGE": "Siden", + "ROWSPERPAGE": "Linjer per side" } } \ No newline at end of file diff --git a/public/app/main/apps/tools/i18n/pt-PT.json b/public/app/main/apps/tools/i18n/pt-PT.json index 19bc90d..f17c759 100644 --- a/public/app/main/apps/tools/i18n/pt-PT.json +++ b/public/app/main/apps/tools/i18n/pt-PT.json @@ -55,7 +55,9 @@ "SEND_REMOTE_PARTY_ID_HEADER": "Estado", "ENCRYPTION": "Definir se o cabeçalho Remote-Party-ID deve ser enviada (padrões para não).", "TRANSPORT": "Defina o padrão de transportes. A ordem determina o transporte primário padrão.", - "OTHERFIELDS": "Outros campos para adicionar nos troncos arquivos conf. Para ser escritos em formato de asterisco (key=valor), cada campo em uma única linha." + "OTHERFIELDS": "Outros campos para adicionar nos troncos arquivos conf. Para ser escritos em formato de asterisco (key=valor), cada campo em uma única linha.", + "EMAILADDRESS": "Você pode adicionar vários endereços com vírgulas (por exemplo, Jane.miller@xcally.com) john.doe@xcally.com", + "NAME": "Apenas números, letras e caracteres específicos (._) são suportados" }, "EDIT_TRUNK": "Editar tronco", "DELETE_TRUNK": "Excluir tronco", @@ -325,6 +327,9 @@ "DAY": "Dia", "WEEK": "Semana passada", "YEAR": "Ano", - "ON": "No" + "ON": "No", + "PAI": "P-Asserted-Identity", + "PAGE": "Página", + "ROWSPERPAGE": "Linhas por página" } } \ No newline at end of file diff --git a/public/app/main/apps/tools/i18n/ru.json b/public/app/main/apps/tools/i18n/ru.json index 14b18ff..0aadb8c 100644 --- a/public/app/main/apps/tools/i18n/ru.json +++ b/public/app/main/apps/tools/i18n/ru.json @@ -55,7 +55,9 @@ "SEND_REMOTE_PARTY_ID_HEADER": "Статус", "ENCRYPTION": "Определите Remote-Party-ID должны быть отправлены (по умолчанию отсутствует).", "TRANSPORT": "Установить значение по умолчанию для транспорта. Порядок определяет основной транспортом по умолчанию.", - "OTHERFIELDS": "Другие поля для добавления в соединительные линии conf файлы. Должны быть записаны в формате звездочка (клавиша=значение), каждое поле на одной строке." + "OTHERFIELDS": "Другие поля для добавления в соединительные линии conf файлы. Должны быть записаны в формате звездочка (клавиша=значение), каждое поле на одной строке.", + "EMAILADDRESS": "Вы можете добавить несколько адресов с помощью запятыми (например, John.doe@xcally.com, jane.miller@xcally.com)", + "NAME": "Только цифры, буквы и специальные символы (_) поддерживаются" }, "EDIT_TRUNK": "Редактировать СЛ", "DELETE_TRUNK": "Удалить СЛ", @@ -325,6 +327,9 @@ "DAY": "День", "WEEK": "Неделя", "YEAR": "Год", - "ON": "По вопросу о" + "ON": "По вопросу о", + "PAI": "P-Asserted-Identity", + "PAGE": "Страница", + "ROWSPERPAGE": "Строк на странице" } } \ No newline at end of file diff --git a/public/app/main/apps/tools/i18n/sv.json b/public/app/main/apps/tools/i18n/sv.json index 22ff265..92b84ba 100644 --- a/public/app/main/apps/tools/i18n/sv.json +++ b/public/app/main/apps/tools/i18n/sv.json @@ -55,7 +55,9 @@ "SEND_REMOTE_PARTY_ID_HEADER": "Status", "ENCRYPTION": "Definiera om Remote-Party-ID ska skickas (standard är ingen).", "TRANSPORT": "Ställ in standard transporter. Avgör det primära förvalda transporter.", - "OTHERFIELDS": "Andra omrÃ¥den att lägga i segment conf filer. Att vara skrivna i asterisk-format (key=värde), varje fält pÃ¥ en enda rad." + "OTHERFIELDS": "Andra omrÃ¥den att lägga i segment conf filer. Att vara skrivna i asterisk-format (key=värde), varje fält pÃ¥ en enda rad.", + "EMAILADDRESS": "Du kan lägga till flera adresser med kommatecken (t.ex. John.doe@xcally.com jane.miller@xcally.com),", + "NAME": "Endast siffror, bokstäver och särskilda tecken (_) stöds" }, "EDIT_TRUNK": "Redigera bagageutrymmet", "DELETE_TRUNK": "Ta bort bakluckan", @@ -325,6 +327,9 @@ "DAY": "Dag", "WEEK": "Vecka", "YEAR": "År", - "ON": "PÃ¥" + "ON": "PÃ¥", + "PAI": "P-Asserted-Identity", + "PAGE": "Sidan", + "ROWSPERPAGE": "Rader per sida" } } \ No newline at end of file diff --git a/public/app/main/apps/tools/i18n/tr.json b/public/app/main/apps/tools/i18n/tr.json index b6554d1..7659d80 100644 --- a/public/app/main/apps/tools/i18n/tr.json +++ b/public/app/main/apps/tools/i18n/tr.json @@ -55,7 +55,9 @@ "SEND_REMOTE_PARTY_ID_HEADER": "Durum", "ENCRYPTION": "Define eğer Remote-Party-ID gönderilmesi gerekir (varsayılan olarak).", "TRANSPORT": "Varsayılan geciktirir. Sipariş belirler, birincil varsayılan taşıma.", - "OTHERFIELDS": "Diğer alanlar eklemek için, santrallerin conf dosyaları. Olarak yazılı yıldız biçimi (anahtar=değer), her alanda bir tek sıra." + "OTHERFIELDS": "Diğer alanlar eklemek için, santrallerin conf dosyaları. Olarak yazılı yıldız biçimi (anahtar=değer), her alanda bir tek sıra.", + "EMAILADDRESS": "Eklemek birden fazla adreslerini virgülle (örneğin john.doe@xcally.com, Jane.miller@xcally.com)", + "NAME": "Sadece sayılar, harfler ve özel karakterler (._) desteklenir." }, "EDIT_TRUNK": "Düzenleme Santral", "DELETE_TRUNK": "Delete Santral", @@ -325,6 +327,9 @@ "DAY": "Gün", "WEEK": "Hafta", "YEAR": "Yıl", - "ON": "Açık" + "ON": "Açık", + "PAI": "P-Asserted-Identity", + "PAGE": "Sayfa", + "ROWSPERPAGE": "Sayfadaki satırları" } } \ No newline at end of file diff --git a/public/app/main/apps/tools/i18n/zh-CN.json b/public/app/main/apps/tools/i18n/zh-CN.json index 8ebc408..6e213da 100644 --- a/public/app/main/apps/tools/i18n/zh-CN.json +++ b/public/app/main/apps/tools/i18n/zh-CN.json @@ -55,7 +55,9 @@ "SEND_REMOTE_PARTY_ID_HEADER": "状态", "ENCRYPTION": "定义如果 Remote-Party-ID 应该是发送(默认值为 no)。", "TRANSPORT": "设置缺省的传输。 该顺序确定主要的默认的传输。", - "OTHERFIELDS": "其他字段以添加的中继线的配置文件。 写在星号格式(键=值), 每个字段的一行中。" + "OTHERFIELDS": "其他字段以添加的中继线的配置文件。 写在星号格式(键=值), 每个字段的一行中。", + "EMAILADDRESS": "您可以添加多个地址时使用逗号分隔(例如, john.doe@xcally.com jane.miller@xcally.com)", + "NAME": "只有数字、字母和特殊字符(_)的支持" }, "EDIT_TRUNK": "编辑中继线", "DELETE_TRUNK": "删除中继线", @@ -325,6 +327,9 @@ "DAY": "天", "WEEK": "一周内", "YEAR": "å¹´", - "ON": "上" + "ON": "上", + "PAI": "P-asserted-identity", + "PAGE": "页面", + "ROWSPERPAGE": "每页的行数。" } } \ No newline at end of file diff --git a/public/app/main/apps/tools/i18n/zh-TW.json b/public/app/main/apps/tools/i18n/zh-TW.json index b8204a1..6b32011 100644 --- a/public/app/main/apps/tools/i18n/zh-TW.json +++ b/public/app/main/apps/tools/i18n/zh-TW.json @@ -55,7 +55,9 @@ "SEND_REMOTE_PARTY_ID_HEADER": "狀態", "ENCRYPTION": "定義如果 Remote-Party ID 應該傳送 ( 預設為否 ) 。", "TRANSPORT": "設定預設的傳輸。 醫令會決定主要預設傳輸。", - "OTHERFIELDS": "其他欄位以新增中繼 conf 檔。 是以星號標示格式 ( 按鍵 = 值 ) 、每個欄位在單一列。" + "OTHERFIELDS": "其他欄位以新增中繼 conf 檔。 是以星號標示格式 ( 按鍵 = 值 ) 、每個欄位在單一列。", + "EMAILADDRESS": "您可以將多個地址使用逗號 ( 例如 john.doe@xcally.com 、 jane.miller@xcally.com)", + "NAME": "只有數字、字母和特殊字元 ( _ ) 都受到支援" }, "EDIT_TRUNK": "編輯中繼線", "DELETE_TRUNK": "刪除中繼線", @@ -325,6 +327,9 @@ "DAY": "工作日", "WEEK": "星期", "YEAR": "å¹´", - "ON": "關於" + "ON": "關於", + "PAI": "P 型 Asserted-Identity", + "PAGE": "頁面", + "ROWSPERPAGE": "每頁行數" } } \ No newline at end of file diff --git a/public/app/main/apps/voice/i18n/da.json b/public/app/main/apps/voice/i18n/da.json index 90185e8..fd11846 100644 --- a/public/app/main/apps/voice/i18n/da.json +++ b/public/app/main/apps/voice/i18n/da.json @@ -39,7 +39,22 @@ "PRIORITY_REQUIRED": "Indsatsen er pÃ¥krævet", "NAME_MUST_VALID_PATTERN": "Navnet skal være skrevet i et gyldigt format", "APPLICATION_REQUIRED": "Ansøgningen skal udfyldes", - "APPLICATION_NAME_REQUIRED": "Programnavnet er pÃ¥krævet" + "APPLICATION_NAME_REQUIRED": "Programnavnet er pÃ¥krævet", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Time-out skal være større end eller lig med", + "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max-længden skal være større end eller lig med", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Dette forsøg skal være større end eller lig med", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Det Afslutningstiden skal være større end eller lig med", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Vægten skal være større end eller lig med", + "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De Annoncere frekvens skal være større end eller lig med", + "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min Annoncere frekvens skal være større end eller lig med", + "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den periodiske annoncere frekvens skal være større end eller lig med", + "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Det Efterarbejde varighed skal være større end eller lig med", + "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den anden forsinkelse skal være større end eller lig med", + "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Positionen skal være større end eller lig med", + "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Klip tal skal være større end eller lig med", + "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max sekunder skal være større end eller lig med", + "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max meddelelser skal være større end eller lig med", + "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max meddelelser skal være mindre end eller lig med" }, "GENERAL": "Generel", "TIMEOUT": "Timeout", @@ -89,7 +104,8 @@ "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)", "SETQUEUEENTRYVARIABLES": "Hvis sat til ja, lige inden de ringer, er forbundet med en kø-nogle variabler bliver sat(se wiki)", "RECORDING": "Aktivering af optagelse af opkald", - "VOICEMAIL_CONTEXT": "PÃ¥ baggrund af den relative forlængelse." + "VOICEMAIL_CONTEXT": "PÃ¥ baggrund af den relative forlængelse.", + "NAME": "Kun tal og bogstaver og specielle tegn (.________) understøttes" }, "MUSICONHOLD": "Musik ved parkeret opkald", "ANNOUNCETOAGENT": "Annoncere til agent", @@ -367,6 +383,12 @@ "LOGOUT": "Log af", "TRUNK_STATUS": "Trunk Status", "WAITING_FOR_AGENT": "Ventende for agenter", - "ACCOUNTNAME": "Kontonavn" + "ACCOUNTNAME": "Kontonavn", + "GOTO_VOICEQUEUE": "GÃ¥ til Realtime Voice køer", + "GOTOREALTIME_VOICEQUEUE": "GÃ¥ til Realtime Voice køer", + "APPLICATIONS_LIST": "Programliste", + "PAGE": "Page", + "ROWSPERPAGE": "Rækker pr. side", + "OF": "Af" } } \ No newline at end of file diff --git a/public/app/main/apps/voice/i18n/de.json b/public/app/main/apps/voice/i18n/de.json index 072ea18..1405268 100644 --- a/public/app/main/apps/voice/i18n/de.json +++ b/public/app/main/apps/voice/i18n/de.json @@ -39,7 +39,22 @@ "PRIORITY_REQUIRED": "Die Priorität ist erforderlich", "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden", "APPLICATION_REQUIRED": "Die Anwendung ist erforderlich", - "APPLICATION_NAME_REQUIRED": "Der Name der Anwendung ist erforderlich" + "APPLICATION_NAME_REQUIRED": "Der Name der Anwendung ist erforderlich", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Timeout muss größer als oder gleich", + "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die max. Länge muss größer als oder gleich", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Wiederholung muss größer als oder gleich", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Nachlese Zeit muss größer als oder gleich", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Gewicht muss größer als oder gleich", + "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Häufigkeit verkünden muss größer als oder gleich", + "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Min Frequenz ankündigen muss größer als oder gleich", + "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die periodische Frequenz ankündigen muss größer als oder gleich", + "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Arbeit nach Anruf Dauer muss größer als oder gleich", + "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Verzögerung muss größer als oder gleich", + "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Position muss größer als oder gleich", + "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den Schnitt stellen muss größer als oder gleich", + "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Muss die Max Sekunden größer als oder gleich", + "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Max Meldungen muss größer als oder gleich", + "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Max Meldungen muss kleiner als oder gleich" }, "GENERAL": "Allgemein", "TIMEOUT": "Timeout", @@ -89,7 +104,8 @@ "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)", "SETQUEUEENTRYVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange, die einige Variablen werden(siehe wiki)", "RECORDING": "Aktivieren der Aufzeichnung", - "VOICEMAIL_CONTEXT": "Im Rahmen der relativen Erweiterung." + "VOICEMAIL_CONTEXT": "Im Rahmen der relativen Erweiterung.", + "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt." }, "MUSICONHOLD": "Musik auf Halten", "ANNOUNCETOAGENT": "Geben Sie Agent", @@ -367,6 +383,12 @@ "LOGOUT": "An-/Abmelden", "TRUNK_STATUS": "Trunk Status", "WAITING_FOR_AGENT": "Warten auf Agenten", - "ACCOUNTNAME": "Konto Name" + "ACCOUNTNAME": "Konto Name", + "GOTO_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen", + "GOTOREALTIME_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen", + "APPLICATIONS_LIST": "Liste der Anwendungen", + "PAGE": "Seite", + "ROWSPERPAGE": "Zeilen pro Seite", + "OF": "Von" } } \ No newline at end of file diff --git a/public/app/main/apps/voice/i18n/en.json b/public/app/main/apps/voice/i18n/en.json index 81c7016..a83932f 100644 --- a/public/app/main/apps/voice/i18n/en.json +++ b/public/app/main/apps/voice/i18n/en.json @@ -47,7 +47,22 @@ "EXTENSION_REQUIRED": "The Extension is required", "PRIORITY_REQUIRED": "The Priority is required", "NAME_MUST_VALID_PATTERN": "The Name must be written in a valid format", - "APPLICATION_REQUIRED": "The Application is required" + "APPLICATION_REQUIRED": "The Application is required", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Timeout must be greater than or equal to", + "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Max Length must be greater than or equal to", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Retry must be greater than or equal to", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Wrapup Time must be greater than or equal to", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Weight must be greater than or equal to", + "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Announce Frequency must be greater than or equal to", + "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Min Announce Frequency must be greater than or equal to", + "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Periodic Announce Frequency must be greater than or equal to", + "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The After Call Work Duration must be greater than or equal to", + "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Member Delay must be greater than or equal to", + "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Position must be greater than or equal to", + "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Cut Digits must be greater than or equal to", + "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Max Seconds must be greater than or equal to", + "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The Max Messages must be greater than or equal to", + "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The Max Messages must be less than or equal to" }, "GENERAL": "General", "TIMEOUT": "Timeout", @@ -178,7 +193,7 @@ "MESSAGES": "Messages", "SORT": "Sort", "ADD_MUSICONHOLD": "Add Music On Hold", - "MUSICONHOLDS": "Musics On Hold", + "MUSICONHOLDS": "Music On Hold", "EDIT_MUSICONHOLD": "Edit Music On Hold", "DELETE_MUSICONHOLD": "Delete Music On Hold", "DIRECTORY": "Directory", @@ -374,6 +389,6 @@ "ACCOUNTNAME": "Account Name", "PAGE": "Page", "ROWSPERPAGE": "Rows per page", - "OF": "Of" + "OF": "of" } } \ No newline at end of file diff --git a/public/app/main/apps/voice/i18n/es.json b/public/app/main/apps/voice/i18n/es.json index a418990..e2ef2fd 100644 --- a/public/app/main/apps/voice/i18n/es.json +++ b/public/app/main/apps/voice/i18n/es.json @@ -39,7 +39,22 @@ "PRIORITY_REQUIRED": "La prioridad es necesaria", "NAME_MUST_VALID_PATTERN": "El nombre debe estar escrito en un formato válido", "APPLICATION_REQUIRED": "La aplicación es necesaria", - "APPLICATION_NAME_REQUIRED": "Se requiere el nombre de la aplicación." + "APPLICATION_NAME_REQUIRED": "Se requiere el nombre de la aplicación.", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El tiempo de espera debe ser mayor o igual a", + "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La longitud máxima debe ser mayor o igual a", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El reintento debe ser mayor o igual a", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El tiempo de cierre debe ser mayor o igual a", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El peso debe ser mayor o igual a", + "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Al anunciar la frecuencia debe ser mayor o igual a", + "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La Min anunciar la frecuencia debe ser mayor o igual a", + "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Anunciar periódicamente la frecuencia debe ser mayor o igual a", + "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El trabajo después de la llamada La duración debe ser mayor o igual a", + "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Los Estados retardo debe ser mayor o igual a", + "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La posición debe ser mayor o igual a", + "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El corte dígitos debe ser mayor o igual a", + "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El Max segundos debe ser mayor o igual a", + "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El número máximo de mensajes debe ser mayor o igual a", + "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El número máximo de mensajes debe ser menor o igual a" }, "GENERAL": "General", "TIMEOUT": "Timeout", @@ -89,7 +104,8 @@ "SETQUEUEVARIABLES": "Si se establece en Sí, justo antes de que el cliente se enlaza con un miembro de la cola y justo antes de que el llamador dejando la cola algunas variables se establecerá(véase wiki)", "SETQUEUEENTRYVARIABLES": "Si se establece en Sí, justo antes de que el cliente se enlaza con una cola estados algunas variables se establecerá(véase wiki)", "RECORDING": "Habilitar la grabación de llamada", - "VOICEMAIL_CONTEXT": "El contexto de la extensión relativa." + "VOICEMAIL_CONTEXT": "El contexto de la extensión relativa.", + "NAME": "Sólo los números, letras y caracteres específicos (_) son compatibles." }, "MUSICONHOLD": "Música en espera", "ANNOUNCETOAGENT": "Anunciar al agente", @@ -367,6 +383,12 @@ "LOGOUT": "Cerrar sesión", "TRUNK_STATUS": "Estado troncal", "WAITING_FOR_AGENT": "Esperando para agentes", - "ACCOUNTNAME": "Nombre de cuenta" + "ACCOUNTNAME": "Nombre de cuenta", + "GOTO_VOICEQUEUE": "Ir a las colas de voz en tiempo real", + "GOTOREALTIME_VOICEQUEUE": "Ir a las colas de voz en tiempo real", + "APPLICATIONS_LIST": "Lista de aplicaciones", + "PAGE": "Página", + "ROWSPERPAGE": "Filas por página.", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/voice/i18n/fa.json b/public/app/main/apps/voice/i18n/fa.json index 6e41d91..3b50895 100644 --- a/public/app/main/apps/voice/i18n/fa.json +++ b/public/app/main/apps/voice/i18n/fa.json @@ -39,7 +39,22 @@ "PRIORITY_REQUIRED": "اولويت لازم است.", "NAME_MUST_VALID_PATTERN": "نام باید با فرمت معتبر نوشته شده است", "APPLICATION_REQUIRED": "برنامه کاربردی مورد نیاز است.", - "APPLICATION_NAME_REQUIRED": "نام برنامه کاربردی مورد نیاز است." + "APPLICATION_NAME_REQUIRED": "نام برنامه کاربردی مورد نیاز است.", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "در پایان زمان باید بیشتر یا مساوی با", + "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "حداکثر طول آن باید بیشتر یا مساوی با", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "دوباره سعی کنید، باید بیشتر یا مساوی با", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "در آن زمان Wrapup باید بیشتر یا مساوی با", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "وزن باید بیشتر یا مساوی با", + "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "از فرکانس اعلام باید بیشتر یا مساوی با", + "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "از حداقل فرکانس اعلام باید بیشتر یا مساوی با", + "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "از اعلام تعداد دفعات متناوب باید بیشتر یا مساوی با", + "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "پس از تماس، مدت زمان کار باید بیشتر یا مساوی با", + "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "عضو تاخير باید بیشتر یا مساوی با", + "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "موقعیت را باید بیشتر یا مساوی با", + "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "قطع اين عدد باید بیشتر یا مساوی با", + "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "حداکثر چند ثانیه باید بیشتر یا مساوی با", + "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "به حداکثر پیام ها باید بیشتر یا مساوی با", + "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "به حداکثر پیام ها باید کمتر یا مساوی با" }, "GENERAL": "سردار", "TIMEOUT": "پایان زمان مجاز", @@ -89,7 +104,8 @@ "SETQUEUEVARIABLES": "اگر روی بله، درست قبل از تماس گیرنده در صف، با بركت بودن عضو و فقط قبل از تماس گیرنده را در صف خروج از برخی متغیرها تنظیم می شود(wiki)", "SETQUEUEENTRYVARIABLES": "اگر روی بله، درست قبل از تماس گیرنده با بركت بودن صف عضو برخی از متغیرها تنظیم می شود(wiki)", "RECORDING": "قابلیت ضبط صدا", - "VOICEMAIL_CONTEXT": "متن گسترش نسبي است." + "VOICEMAIL_CONTEXT": "متن گسترش نسبي است.", + "NAME": "فقط شماره ها و حروف و نویسه های ویژه (_) پشتیبانی می شود." }, "MUSICONHOLD": "موسيقي را نگه دارید", "ANNOUNCETOAGENT": "عامل را اعلام می کند", @@ -367,6 +383,12 @@ "LOGOUT": "LOGOUT", "TRUNK_STATUS": "وضعیت تنه", "WAITING_FOR_AGENT": "در انتظار عاملان", - "ACCOUNTNAME": "نام اشتراک" + "ACCOUNTNAME": "نام اشتراک", + "GOTO_VOICEQUEUE": "به صفهای طولانی Realtime صدا", + "GOTOREALTIME_VOICEQUEUE": "به صفهای طولانی Realtime صدا", + "APPLICATIONS_LIST": "لیست برنامه های کاربردی", + "PAGE": "صفحه", + "ROWSPERPAGE": "رديف در صفحه", + "OF": "از" } } \ No newline at end of file diff --git a/public/app/main/apps/voice/i18n/fi.json b/public/app/main/apps/voice/i18n/fi.json index 57cc21f..cbb507f 100644 --- a/public/app/main/apps/voice/i18n/fi.json +++ b/public/app/main/apps/voice/i18n/fi.json @@ -39,7 +39,22 @@ "PRIORITY_REQUIRED": "Etusijalla on pakollinen", "NAME_MUST_VALID_PATTERN": "Nimi on kirjoitettava kelvollisessa muodossa", "APPLICATION_REQUIRED": "Sovellus ei tarvita", - "APPLICATION_NAME_REQUIRED": "Sovelluksen nimi on pakollinen" + "APPLICATION_NAME_REQUIRED": "Sovelluksen nimi on pakollinen", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Timeout on oltava suurempi tai yhtä suuri kuin", + "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max pituuden on oltava suurempi tai yhtä suuri kuin", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Retry on oltava suurempi tai yhtä suuri kuin", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Lähettämistietojen noutaminen on aika on oltava suurempi tai yhtä suuri kuin", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Painon on oltava suurempi tai yhtä suuri kuin", + "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Announce taajuuden on oltava suurempi tai yhtä suuri kuin", + "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min ilmoittaa taajuuden on oltava suurempi tai yhtä suuri kuin", + "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Säännöllisten ilmoittaa taajuuden on oltava suurempi tai yhtä suuri kuin", + "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kun Jälkikäsittelyaika keston on oltava suurempi tai yhtä suuri kuin", + "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Jäsenvaltioiden viive on oltava suurempi tai yhtä suuri kuin", + "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Aseman on oltava suurempi tai yhtä suuri kuin", + "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Leikkaa numeroa on oltava suurempi tai yhtä suuri kuin", + "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max-s on oltava suurempi tai yhtä suuri kuin", + "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max-viestien on oltava suurempi tai yhtä suuri kuin", + "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max-viestien on oltava pienempi tai yhtä suuri kuin" }, "GENERAL": "Yleistä", "TIMEOUT": "Aikakatkaisu", @@ -89,7 +104,8 @@ "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)", "SETQUEUEENTRYVARIABLES": "Jos arvoksi määritetään Kyllä, juuri ennen kuin soittaja ei yhdistetä jonoon asettaneen muuttujia tulee(katso wiki)", "RECORDING": "Jotta puheluiden nauhoitus", - "VOICEMAIL_CONTEXT": "Osana suhteellinen jatke." + "VOICEMAIL_CONTEXT": "Osana suhteellinen jatke.", + "NAME": "Vain numeroita, kirjaimia ja erikoismerkkejä (._ tuetaan" }, "MUSICONHOLD": "Musiikkia puhelun ollessa pidossa", "ANNOUNCETOAGENT": "Ilmoittaa Agent", @@ -367,6 +383,12 @@ "LOGOUT": "Kirjaudu ulos", "TRUNK_STATUS": "Takaluukun tila", "WAITING_FOR_AGENT": "Odota aineet", - "ACCOUNTNAME": "Tilin nimi" + "ACCOUNTNAME": "Tilin nimi", + "GOTO_VOICEQUEUE": "Siirry reaaliaikainen ääni jonot", + "GOTOREALTIME_VOICEQUEUE": "Siirry reaaliaikainen ääni jonot", + "APPLICATIONS_LIST": "Sovellusten luettelossa", + "PAGE": "Sivu", + "ROWSPERPAGE": "Riviä sivulle", + "OF": "," } } \ No newline at end of file diff --git a/public/app/main/apps/voice/i18n/fr.json b/public/app/main/apps/voice/i18n/fr.json index 559f79c..61abd30 100644 --- a/public/app/main/apps/voice/i18n/fr.json +++ b/public/app/main/apps/voice/i18n/fr.json @@ -39,7 +39,22 @@ "PRIORITY_REQUIRED": "La priorité est requise", "NAME_MUST_VALID_PATTERN": "Le nom doit être écrit dans un format valide", "APPLICATION_REQUIRED": "L'Application est requise", - "APPLICATION_NAME_REQUIRED": "Le nom de l'application n'est nécessaire" + "APPLICATION_NAME_REQUIRED": "Le nom de l'application n'est nécessaire", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Le délai doit être supérieure ou égale à", + "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La longueur max doit être supérieure ou égale à", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La nouvelle tentative doit être supérieure ou égale à", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Le temps de post-appel doit être supérieure ou égale à", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Le poids doit être supérieure ou égale à", + "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Annoncer la fréquence doit être supérieure ou égale à", + "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La Min annoncer fréquence doit être supérieure ou égale à", + "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "L'annonce périodique fréquence doit être supérieure ou égale à", + "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La durée de travail après appel doit être supérieure ou égale à", + "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Les États retard doit être supérieure ou égale à", + "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La position doit être supérieure ou égale à", + "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Le Cut chiffres doit être supérieure ou égale à", + "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Le Max secondes doit être supérieure ou égale à", + "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Le Max Messages doit être supérieure ou égale à", + "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Le Max Messages doit être inférieure ou égale à" }, "GENERAL": "Général", "TIMEOUT": "Timeout", @@ -89,7 +104,8 @@ "SETQUEUEVARIABLES": "Si défini à Oui, juste avant l'appelant via une passerelle avec une file d'états et à l'appelant juste avant de quitter la file d'certaines variables sera définie(voir image)", "SETQUEUEENTRYVARIABLES": "Si défini à Oui, juste avant l'appelant via une passerelle avec une file d'états certaines variables seront set(voir image)", "RECORDING": "Activer l'enregistrement de l'appel", - "VOICEMAIL_CONTEXT": "Le contexte de l'extension." + "VOICEMAIL_CONTEXT": "Le contexte de l'extension.", + "NAME": "Seulement les chiffres, lettres et caractères spécifiques (._) sont pris en charge" }, "MUSICONHOLD": "La musique d'attente", "ANNOUNCETOAGENT": "Annoncer à l'Agent", @@ -367,6 +383,12 @@ "LOGOUT": "Login/Logout", "TRUNK_STATUS": "L'état de tronc", "WAITING_FOR_AGENT": "Pour les agents en attente", - "ACCOUNTNAME": "Nom de compte" + "ACCOUNTNAME": "Nom de compte", + "GOTO_VOICEQUEUE": "Rendez-vous en temps réel pour les files d'attente de la voix", + "GOTOREALTIME_VOICEQUEUE": "Rendez-vous en temps réel pour les files d'attente de la voix", + "APPLICATIONS_LIST": "Liste des applications", + "PAGE": "La page", + "ROWSPERPAGE": "Les lignes par page", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/voice/i18n/hi.json b/public/app/main/apps/voice/i18n/hi.json index 035d351..e7ec655 100644 --- a/public/app/main/apps/voice/i18n/hi.json +++ b/public/app/main/apps/voice/i18n/hi.json @@ -39,7 +39,22 @@ "PRIORITY_REQUIRED": "प्राथमिकता की आवश्यकता है।", "NAME_MUST_VALID_PATTERN": "एक मान्य स्वरूप का नाम लिखा होना", "APPLICATION_REQUIRED": "अनुप्रयोग की आवश्यकता है।", - "APPLICATION_NAME_REQUIRED": "अनुप्रयोग नाम की आवश्यकता है।" + "APPLICATION_NAME_REQUIRED": "अनुप्रयोग नाम की आवश्यकता है।", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "टाइमआउट के समान या से अधिक होनी चाहिए.", + "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "की अधिकतम लंबाई समान होनी चाहिए अथवा अधिक", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "का पुनः प्रयास करें या के बराबर से अधिक होनी चाहिए.", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "इस समय से अधिक होना चाहिए या के बराबर Wrapup", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "भार बराबर या अधिक होना चाहिए।", + "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "इस घोषणा से अधिक होनी चाहिए अथवा समान आवृति", + "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "इस घोषणा से अधिक होनी चाहिए अथवा समान आवृति मिन", + "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "आवधिक घोषणा की आवृत्ति से अधिक होना चाहिए या के बराबर", + "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "कॉल करने के बाद के कार्य की अवधि से अधिक होना चाहिए या के बराबर", + "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "सदस्य को देरी से अधिक होना चाहिए या के बराबर", + "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "इस स्थिति से अधिक होना चाहिए या के बराबर", + "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "काटें वर्णों से अधिक होना चाहिए या के बराबर", + "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "के बराबर अधिकतम सेकंड से अधिक होनी चाहिए अथवा", + "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "संदेश से अधिक होना चाहिए या के बराबर अधिकतम की", + "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "संदेशों को कम से कम किया जाना चाहिए या के बराबर अधिकतम" }, "GENERAL": "सामान्य", "TIMEOUT": "समयबाह्य", @@ -89,7 +104,8 @@ "SETQUEUEVARIABLES": "यदि हां, तो पहले से सेट करने के लिए किया जा रहा है और सदस्य एक कतार कॉलर खाई को छोडने की कतार में कुछ फेर से पूर्व कॉलर स्थापित किए जाएंगे।(देखिए) wiki", "SETQUEUEENTRYVARIABLES": "यदि हां, तो पूर्व निर्धारित की जा रही एक कतार में कुछ सदस्य कॉलर खाई फेर किया जाएगा।(देखिए) wiki", "RECORDING": "रिकॉर्डिंग रोकने के लिए कॉल कर सके।", - "VOICEMAIL_CONTEXT": "के संदर्भ संबंधी विस्तार है।" + "VOICEMAIL_CONTEXT": "के संदर्भ संबंधी विस्तार है।", + "NAME": "केवल विशिष्ट वर्ण (।_) और नंबर्स, समर्थित" }, "MUSICONHOLD": "संगीत पर रखें.", "ANNOUNCETOAGENT": "घोषणा के एजेंट", @@ -367,6 +383,12 @@ "LOGOUT": "इसपर", "TRUNK_STATUS": "सूंड का दर्जा", "WAITING_FOR_AGENT": "एजेंटों के लिए प्रतीक्षारत", - "ACCOUNTNAME": "खाता नाम" + "ACCOUNTNAME": "खाता नाम", + "GOTO_VOICEQUEUE": "लिएभूकम्पनीय वैधशालाओं की आवाज को कतार", + "GOTOREALTIME_VOICEQUEUE": "लिएभूकम्पनीय वैधशालाओं की आवाज को कतार", + "APPLICATIONS_LIST": "अनुप्रयोग सूची", + "PAGE": "पृष्ठ", + "ROWSPERPAGE": "पंक्तियां प्रति पृष्ठ", + "OF": "की" } } \ No newline at end of file diff --git a/public/app/main/apps/voice/i18n/it.json b/public/app/main/apps/voice/i18n/it.json index f0845cc..7b45533 100644 --- a/public/app/main/apps/voice/i18n/it.json +++ b/public/app/main/apps/voice/i18n/it.json @@ -42,7 +42,22 @@ "PRIORITY_REQUIRED": "La Priorità è richiesta", "NAME_MUST_VALID_PATTERN": "Il nome deve essere in un formato valido", "APPLICATION_REQUIRED": "L'Applicazione è richeista", - "APPLICATION_NAME_REQUIRED": "Il nome dell'applicazione è richiesto" + "APPLICATION_NAME_REQUIRED": "Il nome dell'applicazione è richiesto", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il Timeout deve essere superiore o uguale a", + "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La Lunghezza Massima deve essere superiore o uguale a", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il numero di tentativi deve essere superiore o uguale a", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il Wrapup Time deve essere superiore o uguale a", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il Peso deve essere superiore o uguale a", + "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La Frequenza dell' annuncio deve essere superiore o uguale a", + "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La Frequenza minima di Annuncio deve essere superiore o uguale a", + "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La Frequenza di Annuncio Periodico deve essere superiore o uguale a", + "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La durata di After Call Work deve essere superiore o uguale a", + "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il Ritardo Membro deve essere superiore o uguale a", + "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La Posizione deve essere superiore o uguale a", + "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore di Cut Digits deve essere superiore o uguale a", + "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore di Max Secondi deve essere superiore o uguale a", + "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore di Max Messaggi deve essere superiore o uguale a", + "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore di Max Messaggi deve essere inferiore o uguale a" }, "GENERAL": "Generale", "TIMEOUT": "Timeout", @@ -371,6 +386,9 @@ "ACCOUNTNAME": "Nome account", "PAGE": "Pagina", "ROWSPERPAGE": "Righe per pagina", - "OF": "Di" + "OF": "di", + "GOTO_VOICEQUEUE": "Andare alla voce in tempo reale le code", + "GOTOREALTIME_VOICEQUEUE": "Andare alla voce in tempo reale le code", + "APPLICATIONS_LIST": "Elenco applicazioni" } } \ No newline at end of file diff --git a/public/app/main/apps/voice/i18n/ja.json b/public/app/main/apps/voice/i18n/ja.json index aed16c2..1d84a57 100644 --- a/public/app/main/apps/voice/i18n/ja.json +++ b/public/app/main/apps/voice/i18n/ja.json @@ -39,7 +39,22 @@ "PRIORITY_REQUIRED": "優先順位は必要です", "NAME_MUST_VALID_PATTERN": "名前は、有効な形式で記述する必要があります", "APPLICATION_REQUIRED": "は、アプリケーションが必要です", - "APPLICATION_NAME_REQUIRED": "アプリケーションの名前が必要です" + "APPLICATION_NAME_REQUIRED": "アプリケーションの名前が必要です", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "タイムアウトの値より大きいかまたは等しい必要があり", + "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "最大の長さは以上である必要があります", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "再試行の値より大きいかまたは等しい必要があり", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "解決時間は以上である必要があります", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "重量は以上である必要があります", + "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "の発表頻度は以上である必要があります", + "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "最小周波数発表は以上である必要があります", + "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "定期的に発表する周波数は以上である必要があります", + "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "コールワーク時間が経過した後では以上である必要があります", + "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "メンバーは、遅延は以上である必要があります", + "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "位置は以上である必要があります", + "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "カットの桁は以上である必要があります", + "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "は、最大秒数は以上である必要があります", + "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max メッセージは以上である必要があります", + "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max メッセージは以下である必要があります" }, "GENERAL": "一般的な", "TIMEOUT": "タイムアウト", @@ -89,7 +104,8 @@ "SETQUEUEVARIABLES": "[ はい ] に設定されている場合は、キューのメンバーを使用してブリッジされている発信者を前に、発信者をキューするいくつかの変数が設定され( wiki を参照してください ) を離れる前に、", "SETQUEUEENTRYVARIABLES": "はいに設定した場合には、発信者にはキューのメンバーを使用してブリッジされていたいくつかの変数が設定され( wiki を参照してください ) の前に", "RECORDING": "コールの録音を有効にする", - "VOICEMAIL_CONTEXT": "相対的な拡張子のコンテキストを指定します。" + "VOICEMAIL_CONTEXT": "相対的な拡張子のコンテキストを指定します。", + "NAME": "数字、文字、およびのみ特定の文字 ( 。 ) はサポートされています" }, "MUSICONHOLD": "保留中の音楽", "ANNOUNCETOAGENT": "エージェントを発表", @@ -367,6 +383,12 @@ "LOGOUT": "ログアウト", "TRUNK_STATUS": "トランクステータス", "WAITING_FOR_AGENT": "エージェントを待機しています", - "ACCOUNTNAME": "アカウント名" + "ACCOUNTNAME": "アカウント名", + "GOTO_VOICEQUEUE": "リアルタイムの音声キューに移動", + "GOTOREALTIME_VOICEQUEUE": "リアルタイムの音声キューに移動", + "APPLICATIONS_LIST": "アプリケーションのリスト", + "PAGE": "ページ", + "ROWSPERPAGE": "ページあたりの行数", + "OF": "の" } } \ No newline at end of file diff --git a/public/app/main/apps/voice/i18n/ko.json b/public/app/main/apps/voice/i18n/ko.json index 578ab31..98bdd22 100644 --- a/public/app/main/apps/voice/i18n/ko.json +++ b/public/app/main/apps/voice/i18n/ko.json @@ -39,7 +39,22 @@ "PRIORITY_REQUIRED": "우선 필요합니다.", "NAME_MUST_VALID_PATTERN": "이름이 유효한 형식으로 작성되어 있어야 합니다", "APPLICATION_REQUIRED": "응용 프로그램이 필요합니다.", - "APPLICATION_NAME_REQUIRED": "응용 프로그램 이름이 필요합니다." + "APPLICATION_NAME_REQUIRED": "응용 프로그램 이름이 필요합니다.", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Timeout 같거나 커야 합니다.", + "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "최대 길이보다 같거나 커야 합니다.", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "재시도 같거나 커야 합니다.", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "이 요약 시간 이상이어야 합니다.", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "무게가 같거나 커야 합니다.", + "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "안내되지 주파수 같거나 커야 합니다.", + "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min 발표할 주파수 같거나 커야 합니다.", + "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "주기적 발표할 주파수 같거나 커야 합니다.", + "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "통화 작업 시간 이후 같거나 커야 합니다.", + "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "멤버 지연 같거나 커야 합니다.", + "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "위치보다 크거나 같아야 합니다.", + "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "절단 자리 이상이어야 합니다.", + "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max 초 이상이어야 합니다.", + "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "최대 메시지 보다 크거나 같음 합니다.", + "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "최대 메시지 같거나 작아야 합니다." }, "GENERAL": "일반", "TIMEOUT": "시간 초과", @@ -89,7 +104,8 @@ "SETQUEUEVARIABLES": "Yes로 설정된 경우 대기열 구성원을 브리징되어 있는 발신자 전에 단순히 발신자가 대기열에서 몇 가지 변수를 설정할 수 있습니다.(Wiki 참조) 떠나기 전에", "SETQUEUEENTRYVARIABLES": "Yes로 설정된 경우 대기열에 멤버와 연결된 몇 가지 변수를 설정합니다(Wiki 참조) 중인 발신자 전에", "RECORDING": "통화 녹음 활성화", - "VOICEMAIL_CONTEXT": "상대 내선의 컨텍스트입니다." + "VOICEMAIL_CONTEXT": "상대 내선의 컨텍스트입니다.", + "NAME": "숫자와 글자 및 특정 문자(._) 지원됩니다." }, "MUSICONHOLD": "음악 대기", "ANNOUNCETOAGENT": "상담원 알림", @@ -367,6 +383,12 @@ "LOGOUT": "로그아웃", "TRUNK_STATUS": "트렁크 상태", "WAITING_FOR_AGENT": "상담원 대기", - "ACCOUNTNAME": "계정 이름" + "ACCOUNTNAME": "계정 이름", + "GOTO_VOICEQUEUE": "실시간 음성 대기열에 이동", + "GOTOREALTIME_VOICEQUEUE": "실시간 음성 대기열에 이동", + "APPLICATIONS_LIST": "응용 프로그램 목록", + "PAGE": "페이지", + "ROWSPERPAGE": "페이지 당 행", + "OF": "중" } } \ No newline at end of file diff --git a/public/app/main/apps/voice/i18n/nl.json b/public/app/main/apps/voice/i18n/nl.json index d6bb051..802fec9 100644 --- a/public/app/main/apps/voice/i18n/nl.json +++ b/public/app/main/apps/voice/i18n/nl.json @@ -39,7 +39,22 @@ "PRIORITY_REQUIRED": "De prioriteit is vereist.", "NAME_MUST_VALID_PATTERN": "De naam moet worden geschreven in een geldige indeling", "APPLICATION_REQUIRED": "De toepassing vereist", - "APPLICATION_NAME_REQUIRED": "De toepassingsnaam is vereist" + "APPLICATION_NAME_REQUIRED": "De toepassingsnaam is vereist", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De time-out moet groter zijn dan of gelijk aan", + "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De Max lengte moet groter zijn dan of gelijk aan", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De strategie \"retry\" moet groter zijn dan of gelijk aan", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De afrondingstijd moet groter zijn dan of gelijk aan", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Het gewicht moet groter zijn dan of gelijk aan", + "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De Announce frequentie moet groter zijn dan of gelijk aan", + "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De Min kondigen frequentie moet groter zijn dan of gelijk aan", + "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De periodieke aankondiging frequentie moet groter zijn dan of gelijk aan", + "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De modus Nawerk Duur moet groter zijn dan of gelijk aan", + "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De vertraging moet groter zijn dan of gelijk aan", + "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De positie moet groter dan of gelijk aan", + "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De cijfers moet groter zijn dan of gelijk aan", + "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Het Max aantal seconden moet groter dan of gelijk aan", + "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De Max berichten moet groter zijn dan of gelijk aan", + "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De Max berichten moet kleiner dan of gelijk aan" }, "GENERAL": "Algemeen", "TIMEOUT": "Timeout", @@ -89,7 +104,8 @@ "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)", "SETQUEUEENTRYVARIABLES": "Als deze optie is ingesteld op ja, net voordat de beller worden overbrugd met een wachtrij lid sommige variabelen worden ingesteld (zie wiki)", "RECORDING": "Om de call recording", - "VOICEMAIL_CONTEXT": "Het licht van de relatieve verlenging." + "VOICEMAIL_CONTEXT": "Het licht van de relatieve verlenging.", + "NAME": "Alleen cijfers, letters en speciale tekens (_) worden ondersteund" }, "MUSICONHOLD": "Wachtmuziek", "ANNOUNCETOAGENT": "Kondig Agent", @@ -367,6 +383,12 @@ "LOGOUT": "Afmelden", "TRUNK_STATUS": "Trunk Status", "WAITING_FOR_AGENT": "Wachten voor agenten", - "ACCOUNTNAME": "Accountnaam" + "ACCOUNTNAME": "Accountnaam", + "GOTO_VOICEQUEUE": "Ga naar Realtime spraak wachtrijen", + "GOTOREALTIME_VOICEQUEUE": "Ga naar Realtime spraak wachtrijen", + "APPLICATIONS_LIST": "Toepassingenlijst", + "PAGE": "Pagina", + "ROWSPERPAGE": "Rijen per pagina", + "OF": "Van" } } \ No newline at end of file diff --git a/public/app/main/apps/voice/i18n/no.json b/public/app/main/apps/voice/i18n/no.json index 08a8f6d..6d531ca 100644 --- a/public/app/main/apps/voice/i18n/no.json +++ b/public/app/main/apps/voice/i18n/no.json @@ -39,7 +39,22 @@ "PRIORITY_REQUIRED": "Prioriteten er nødvendig", "NAME_MUST_VALID_PATTERN": "Navnet mÃ¥ være skrevet i et gyldig format", "APPLICATION_REQUIRED": "Programmet er nødvendig", - "APPLICATION_NAME_REQUIRED": "Navnet pÃ¥ programmet er nødvendig" + "APPLICATION_NAME_REQUIRED": "Navnet pÃ¥ programmet er nødvendig", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den stille mÃ¥ være større enn eller lik", + "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max lengde mÃ¥ være større enn eller lik", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Prøv pÃ¥ mÃ¥ være større enn eller lik", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Det Wrapup tid mÃ¥ være større enn eller lik", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Vekten mÃ¥ være større enn eller lik", + "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De annonserer frekvens mÃ¥ være større enn eller lik", + "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min annonsere frekvens mÃ¥ være større enn eller lik", + "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den periodiske annonsere frekvens mÃ¥ være større enn eller lik", + "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Det Etterarbeid varighet mÃ¥ være større enn eller lik", + "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Medlemmet mÃ¥ være større enn eller lik", + "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Posisjonen mÃ¥ være større enn eller lik", + "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Klipp ut tallene mÃ¥ være større enn eller lik", + "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max sekunder mÃ¥ være større enn eller lik", + "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max meldinger mÃ¥ være større enn eller lik", + "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max meldinger mÃ¥ være mindre enn eller lik" }, "GENERAL": "Generelt", "TIMEOUT": "Tidsavbrudd", @@ -89,7 +104,8 @@ "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)", "SETQUEUEENTRYVARIABLES": "Hvis satt til ja, like før til innringeren blir forbundet med en kø medlem noen variabler blir satt(se wiki)", "RECORDING": "Aktiverer anropet opptak", - "VOICEMAIL_CONTEXT": "Sammenhengen i relativ forlengelse." + "VOICEMAIL_CONTEXT": "Sammenhengen i relativ forlengelse.", + "NAME": "Bare tall, bokstaver og bestemte tegn (._) støttes" }, "MUSICONHOLD": "Musikk pÃ¥ vent", "ANNOUNCETOAGENT": "Annonsere til agent", @@ -367,6 +383,12 @@ "LOGOUT": "Logg av", "TRUNK_STATUS": "Trunk status", "WAITING_FOR_AGENT": "Venter for agenter", - "ACCOUNTNAME": "Kontonavn" + "ACCOUNTNAME": "Kontonavn", + "GOTO_VOICEQUEUE": "GÃ¥ til Realtime Voice køer", + "GOTOREALTIME_VOICEQUEUE": "GÃ¥ til Realtime Voice køer", + "APPLICATIONS_LIST": "Listen over bruksomrÃ¥der", + "PAGE": "Siden", + "ROWSPERPAGE": "Linjer per side", + "OF": "Av" } } \ No newline at end of file diff --git a/public/app/main/apps/voice/i18n/pt-PT.json b/public/app/main/apps/voice/i18n/pt-PT.json index c66551c..029566b 100644 --- a/public/app/main/apps/voice/i18n/pt-PT.json +++ b/public/app/main/apps/voice/i18n/pt-PT.json @@ -39,7 +39,22 @@ "PRIORITY_REQUIRED": "A prioridade é necessária", "NAME_MUST_VALID_PATTERN": "O nome deve ser escrito em um formato válido", "APPLICATION_REQUIRED": "O aplicativo é obrigatório", - "APPLICATION_NAME_REQUIRED": "O nome do aplicativo é obrigatório" + "APPLICATION_NAME_REQUIRED": "O nome do aplicativo é obrigatório", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O tempo limite deve ser maior do que ou igual a", + "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O comprimento máximo deve ser maior do que ou igual a", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "A repetição deve ser maior do que ou igual a", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O tempo de finalização deve ser maior do que ou igual a", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O peso deve ser maior do que ou igual a", + "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "A anunciar a freqüência deve ser maior do que ou igual a", + "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "A Min anunciar frequência deve ser maior do que ou igual a", + "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "A freqüência de anunciar periódica deve ser maior do que ou igual a", + "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O trabalho após a chamada A duração deve ser maior do que ou igual a", + "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Os atraso deve ser maior do que ou igual a", + "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "A posição deve ser maior do que ou igual a", + "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O Corte dígitos deve ser maior do que ou igual a", + "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O Máximo em segundos deve ser maior do que ou igual a", + "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O número máximo de mensagens deve ser maior do que ou igual a", + "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O número máximo de mensagens deve ser menor que ou igual a" }, "GENERAL": "Geral", "TIMEOUT": "Timeout", @@ -89,7 +104,8 @@ "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)", "SETQUEUEENTRYVARIABLES": "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)", "RECORDING": "Ativar a gravação de chamadas", - "VOICEMAIL_CONTEXT": "O contexto da extensão relativa." + "VOICEMAIL_CONTEXT": "O contexto da extensão relativa.", + "NAME": "Apenas números, letras e caracteres específicos (._) são suportados" }, "MUSICONHOLD": "Música em espera", "ANNOUNCETOAGENT": "Anunciar para agente", @@ -367,6 +383,12 @@ "LOGOUT": "LOGOUT", "TRUNK_STATUS": "Status do tronco", "WAITING_FOR_AGENT": "Aguardando para agentes", - "ACCOUNTNAME": "Nome da conta" + "ACCOUNTNAME": "Nome da conta", + "GOTO_VOICEQUEUE": "Vá para filas de voz em tempo real", + "GOTOREALTIME_VOICEQUEUE": "Vá para filas de voz em tempo real", + "APPLICATIONS_LIST": "Lista de aplicativos", + "PAGE": "Página", + "ROWSPERPAGE": "Linhas por página", + "OF": "De" } } \ No newline at end of file diff --git a/public/app/main/apps/voice/i18n/ru.json b/public/app/main/apps/voice/i18n/ru.json index e55c083..8262bf5 100644 --- a/public/app/main/apps/voice/i18n/ru.json +++ b/public/app/main/apps/voice/i18n/ru.json @@ -39,7 +39,22 @@ "PRIORITY_REQUIRED": "Приоритет не требуется", "NAME_MUST_VALID_PATTERN": "Имя должно быть записано в действительный формат", "APPLICATION_REQUIRED": "Приложения не требуется", - "APPLICATION_NAME_REQUIRED": "Имя приложения не требуется" + "APPLICATION_NAME_REQUIRED": "Имя приложения не требуется", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Тайм-аута должно быть больше или равно", + "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Максимальная длина должна быть больше или равно", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Повтор должно быть больше или равно", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "На время завершения должно быть больше или равно", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Вес должен быть больше или равно", + "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Объявить об периодичности должно быть больше или равно", + "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Мин объявить о периодичности должно быть больше или равно", + "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Периодические объявить о периодичности должно быть больше или равно", + "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "После вызова, продолжительность работы должно быть больше или равно", + "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Государства-задержки должно быть больше или равно", + "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Положение должно быть больше или равно", + "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Разрез цифры должны быть больше или равно", + "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max секунд должно быть больше или равно", + "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max сообщений должно быть больше или равно", + "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max сообщений должно быть меньше или равно" }, "GENERAL": "Генеральной", "TIMEOUT": "Превышение лимита времени", @@ -89,7 +104,8 @@ "SETQUEUEVARIABLES": "Если установлено значение Да, просто до абонента, параллельной линии с очередью член и непосредственно до абонента оставив очереди некоторых переменных будет set(см. wiki)", "SETQUEUEENTRYVARIABLES": "Если установлено значение Да, просто до абонента, параллельной линии с очередью членов некоторых переменных будет set(см. wiki)", "RECORDING": "Включение записи вызова", - "VOICEMAIL_CONTEXT": "В контексте относительного добавочный номер." + "VOICEMAIL_CONTEXT": "В контексте относительного добавочный номер.", + "NAME": "Только цифры, буквы и специальные символы (_) поддерживаются" }, "MUSICONHOLD": "Музыка на удержании", "ANNOUNCETOAGENT": "Сообщить оператору", @@ -367,6 +383,12 @@ "LOGOUT": "Выход из системы", "TRUNK_STATUS": "Состояния СЛ", "WAITING_FOR_AGENT": "Ожидание для операторов", - "ACCOUNTNAME": "Имя учетной записи" + "ACCOUNTNAME": "Имя учетной записи", + "GOTO_VOICEQUEUE": "Перейдите к в режиме реального времени голосовой очередей", + "GOTOREALTIME_VOICEQUEUE": "Перейдите к в режиме реального времени голосовой очередей", + "APPLICATIONS_LIST": "Список приложений", + "PAGE": "Страница", + "ROWSPERPAGE": "Строк на странице", + "OF": "В" } } \ No newline at end of file diff --git a/public/app/main/apps/voice/i18n/sv.json b/public/app/main/apps/voice/i18n/sv.json index 30e3719..294d835 100644 --- a/public/app/main/apps/voice/i18n/sv.json +++ b/public/app/main/apps/voice/i18n/sv.json @@ -39,7 +39,22 @@ "PRIORITY_REQUIRED": "Den prioritet som krävs", "NAME_MUST_VALID_PATTERN": "Namnet mÃ¥ste skrivas i ett giltigt format", "APPLICATION_REQUIRED": "Ansökan krävs", - "APPLICATION_NAME_REQUIRED": "Ansökan Namn är obligatoriskt" + "APPLICATION_NAME_REQUIRED": "Ansökan Namn är obligatoriskt", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Timeout mÃ¥ste vara större än eller lika med", + "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max längd mÃ¥ste vara större än eller lika med", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Detta försök mÃ¥ste vara större än eller lika med", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Det Avslutningstiden mÃ¥ste vara större än eller lika med", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Vikten mÃ¥ste vara större än eller lika med", + "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den tillkännager frekvensen mÃ¥ste vara större än eller lika med", + "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min tillkännager frekvensen mÃ¥ste vara större än eller lika med", + "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den periodiska tillkännager frekvensen mÃ¥ste vara större än eller lika med", + "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Det arbete efter samtal varaktigheten mÃ¥ste vara större än eller lika med", + "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Medlemsstaterna fördröjning mÃ¥ste vara större än eller lika med", + "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Positionen mÃ¥ste vara större än eller lika med", + "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Snittet siffror mÃ¥ste vara större än eller lika med", + "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max sekunder mÃ¥ste vara större än eller lika med", + "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max-meddelanden mÃ¥ste vara större än eller lika med", + "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max-meddelanden mÃ¥ste vara mindre än eller lika med" }, "GENERAL": "Allmänt", "TIMEOUT": "Tidsgräns", @@ -89,7 +104,8 @@ "SETQUEUEVARIABLES": "Om ja, strax före den som ringer att överbryggas med en kö och strax före den som ringer att lämna kön vissa variabler kommer att ställa (se wiki)", "SETQUEUEENTRYVARIABLES": "Om ja, strax före den som ringer att överbryggas med en kö medlem vissa variabler kommer att ställa (se wiki)", "RECORDING": "Aktivera samtalsinspelning", - "VOICEMAIL_CONTEXT": "Den relativa förlängning." + "VOICEMAIL_CONTEXT": "Den relativa förlängning.", + "NAME": "Endast siffror, bokstäver och särskilda tecken (_) stöds" }, "MUSICONHOLD": "Musik i vänteläge", "ANNOUNCETOAGENT": "Meddela till agent", @@ -367,6 +383,12 @@ "LOGOUT": "Utloggning", "TRUNK_STATUS": "Däcktrycksstatus", "WAITING_FOR_AGENT": "Väntar för agenter", - "ACCOUNTNAME": "Kontonamn" + "ACCOUNTNAME": "Kontonamn", + "GOTO_VOICEQUEUE": "GÃ¥ till Realtime röst köer", + "GOTOREALTIME_VOICEQUEUE": "GÃ¥ till Realtime röst köer", + "APPLICATIONS_LIST": "Tillämpningslistan", + "PAGE": "Sidan", + "ROWSPERPAGE": "Rader per sida", + "OF": "Av" } } \ No newline at end of file diff --git a/public/app/main/apps/voice/i18n/tr.json b/public/app/main/apps/voice/i18n/tr.json index c28af1b..04d36b0 100644 --- a/public/app/main/apps/voice/i18n/tr.json +++ b/public/app/main/apps/voice/i18n/tr.json @@ -39,7 +39,22 @@ "PRIORITY_REQUIRED": "Öncelikli olarak gerekli", "NAME_MUST_VALID_PATTERN": "Ad yazılmış olması gerekir. geçerli bir format", "APPLICATION_REQUIRED": "Uygulama gerekiyor.", - "APPLICATION_NAME_REQUIRED": "Uygulama Adı gerekiyor." + "APPLICATION_NAME_REQUIRED": "Uygulama Adı gerekiyor.", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zaman Aşımı eşit veya daha büyük olmalıdır.", + "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Maksimum Uzunluğu eşit veya daha büyük olmalıdır.", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Retry eşit veya daha büyük olmalıdır.", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Bu Toparlama Süresi eşit veya daha büyük olmalıdır.", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Ağırlık eşit veya daha büyük olmalıdır.", + "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Haber, Frekans eşit veya daha büyük olmalıdır.", + "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min Duyurmak Frekansı eşit veya daha büyük olmalıdır.", + "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Periyodik Duyurmak Frekansı eşit veya daha büyük olmalıdır.", + "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Sonra iş Arama Süresi eşit veya daha büyük olmalıdır.", + "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Üye Gecikme eşit veya daha büyük olmalıdır.", + "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Konum eşit veya daha büyük olmalıdır.", + "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kesme Rakam eşit veya daha büyük olmalıdır.", + "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max Saniye eşit veya daha büyük olmalıdır.", + "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max Mesajlar eşit veya daha büyük olmalıdır.", + "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max Mesajlar'ye eşit veya daha düşük olmalıdır." }, "GENERAL": "Genel", "TIMEOUT": "Zaman Aşımı", @@ -89,7 +104,8 @@ "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).", "SETQUEUEENTRYVARIABLES": "Eğer evet, hemen öncesinde arayan, köprülenmiş bir kuyruk üye bazı değişkenler,(bakınız wiki).", "RECORDING": "Etkin çağrı kaydı", - "VOICEMAIL_CONTEXT": "Bu bağlamda, bağıl uzantısı." + "VOICEMAIL_CONTEXT": "Bu bağlamda, bağıl uzantısı.", + "NAME": "Sadece sayılar, harfler ve özel karakterler (._) desteklenir." }, "MUSICONHOLD": "Bekletme Müziği", "ANNOUNCETOAGENT": "Duyurmak Agent", @@ -367,6 +383,12 @@ "LOGOUT": "Oturum kapatma", "TRUNK_STATUS": "Bagaj Durumu", "WAITING_FOR_AGENT": "Bekle Ajanlar", - "ACCOUNTNAME": "Hesap Adı" + "ACCOUNTNAME": "Hesap Adı", + "GOTO_VOICEQUEUE": "Gi̇t Gerçek Zamanlı Ses Kuyrukları", + "GOTOREALTIME_VOICEQUEUE": "Gi̇t Gerçek Zamanlı Ses Kuyrukları", + "APPLICATIONS_LIST": "Uygulamalar Listesi", + "PAGE": "Sayfa", + "ROWSPERPAGE": "Sayfadaki satırları", + "OF": "Ve" } } \ No newline at end of file diff --git a/public/app/main/apps/voice/i18n/zh-CN.json b/public/app/main/apps/voice/i18n/zh-CN.json index 7b7bae8..54ade30 100644 --- a/public/app/main/apps/voice/i18n/zh-CN.json +++ b/public/app/main/apps/voice/i18n/zh-CN.json @@ -39,7 +39,22 @@ "PRIORITY_REQUIRED": "优先级是必需的", "NAME_MUST_VALID_PATTERN": "该名称必须是书面的格式无效", "APPLICATION_REQUIRED": "应用程序是必需的", - "APPLICATION_NAME_REQUIRED": "应用程序名称是必需的" + "APPLICATION_NAME_REQUIRED": "应用程序名称是必需的", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "超时值必须大于或等于", + "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "最大的长度必须大于或等于", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "“重试” 必须大于或等于", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "后续处理时间必须大于或等于", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "重量必须大于或等于", + "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "在公布的频率必须大于或等于", + "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min 发表频率必须大于或等于", + "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "定期公布频率必须大于或等于", + "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "呼叫后工作的持续时间必须大于或等于", + "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "各会员国延迟必须大于或等于", + "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "该位置必须大于或等于", + "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "裁切的数字必须大于或等于", + "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "的最大秒数必须大于或等于", + "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "最大消息的大小必须大于或等于", + "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "最大的消息必须小于或等于" }, "GENERAL": "总的", "TIMEOUT": "超时", @@ -89,7 +104,8 @@ "SETQUEUEVARIABLES": "如果设置为 “是”, 只在主叫方被桥接的队列成员之前, 主叫方离开队列中的某些变量将被设置(参见维基百科)", "SETQUEUEENTRYVARIABLES": "如果设置为 “是”, 只在主叫方被桥接的队列成员的某些变量将被设置(参见维基百科)", "RECORDING": "启用 “呼叫记录", - "VOICEMAIL_CONTEXT": "这方面的相关的扩展名。" + "VOICEMAIL_CONTEXT": "这方面的相关的扩展名。", + "NAME": "只有数字、字母和特殊字符(_)的支持" }, "MUSICONHOLD": "音乐保留", "ANNOUNCETOAGENT": "宣布到座席", @@ -367,6 +383,12 @@ "LOGOUT": "注销", "TRUNK_STATUS": "中继线状态", "WAITING_FOR_AGENT": "等待座席", - "ACCOUNTNAME": "帐户名称" + "ACCOUNTNAME": "帐户名称", + "GOTO_VOICEQUEUE": "转至实时语音队列", + "GOTOREALTIME_VOICEQUEUE": "转至实时语音队列", + "APPLICATIONS_LIST": "应用程序列表。", + "PAGE": "页面", + "ROWSPERPAGE": "每页的行数。", + "OF": "的" } } \ No newline at end of file diff --git a/public/app/main/apps/voice/i18n/zh-TW.json b/public/app/main/apps/voice/i18n/zh-TW.json index 933ba79..6124f1d 100644 --- a/public/app/main/apps/voice/i18n/zh-TW.json +++ b/public/app/main/apps/voice/i18n/zh-TW.json @@ -39,7 +39,22 @@ "PRIORITY_REQUIRED": "「優先順序為必填欄位", "NAME_MUST_VALID_PATTERN": "名稱必須以有效的格式", "APPLICATION_REQUIRED": "應用程式是必填欄位", - "APPLICATION_NAME_REQUIRED": "應用程式名稱」為必填欄位" + "APPLICATION_NAME_REQUIRED": "應用程式名稱」為必填欄位", + "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "超時必須大於或等於", + "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "最大長度必須大於或等於", + "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Retry 必須大於或等於", + "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "後續處理時間必須大於或等於", + "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "重量必須大於或等於", + "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "《宣佈頻率必須是大於或等於", + "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min 發佈頻率必須是大於或等於", + "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "定期公佈頻率必須是大於或等於", + "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "呼叫後工作時間必須大於或等於", + "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "會員延遲必須是大於或等於", + "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "該位置必須大於或等於", + "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "剪下的數字必須大於或等於", + "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "“最大秒數必須大於或等於", + "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "最大訊息必須大於或等於", + "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "最大訊息長度必須小於或等於" }, "GENERAL": "通用", "TIMEOUT": "逾時", @@ -89,7 +104,8 @@ "SETQUEUEVARIABLES": "如果設定為「是」 , 只要事先來電者被以橋接模式的佇列成員和前呼叫者離開佇列部分變數將會設定 ( 請參閱 wiki )", "SETQUEUEENTRYVARIABLES": "如果設定為「是」 , 只要事先來電者被以橋接模式的佇列會員部分變數將會設定 ( 請參閱 wiki )", "RECORDING": "啟用通話記錄", - "VOICEMAIL_CONTEXT": "上下文相關的相對的副檔名。" + "VOICEMAIL_CONTEXT": "上下文相關的相對的副檔名。", + "NAME": "只有數字、字母和特殊字元 ( _ ) 都受到支援" }, "MUSICONHOLD": "音樂保留通話", "ANNOUNCETOAGENT": "發佈至值機員", @@ -367,6 +383,12 @@ "LOGOUT": "登出", "TRUNK_STATUS": "中繼線狀態", "WAITING_FOR_AGENT": "等待值機員", - "ACCOUNTNAME": "帳號名稱" + "ACCOUNTNAME": "帳號名稱", + "GOTO_VOICEQUEUE": "轉到實時語音的佇列", + "GOTOREALTIME_VOICEQUEUE": "轉到實時語音的佇列", + "APPLICATIONS_LIST": "應用程式清單", + "PAGE": "頁面", + "ROWSPERPAGE": "每頁行數", + "OF": "的" } } \ No newline at end of file diff --git a/public/app/quick-panel/i18n/da.json b/public/app/quick-panel/i18n/da.json index 2057881..22009fd 100644 --- a/public/app/quick-panel/i18n/da.json +++ b/public/app/quick-panel/i18n/da.json @@ -44,6 +44,9 @@ "LICENSE": "Licens", "NEW_TOKEN": "Nye brik", "OLD_TOKEN": "Gamle Token", - "SEND_EMAIL_TO": "Send email til" + "SEND_EMAIL_TO": "Send email til", + "TOKEN": "Token", + "EXPIRATION_REASON_MESSAGE": "Din licens er udløbet eller din maskine unik id er blevet opdateret pga. en ændring i deres system. Kontakte xCALLY Motion supportteam sender bÃ¥de dit gamle og dit nye uuid.", + "GRAY_PERIOD_EXPIRATION": "GrÃ¥ periode udløb" } } \ No newline at end of file diff --git a/public/app/quick-panel/i18n/de.json b/public/app/quick-panel/i18n/de.json index 9527ab4..8c5ba80 100644 --- a/public/app/quick-panel/i18n/de.json +++ b/public/app/quick-panel/i18n/de.json @@ -44,6 +44,9 @@ "LICENSE": "Lizenz", "NEW_TOKEN": "Neue Token", "OLD_TOKEN": "Alte Token", - "SEND_EMAIL_TO": "E-Mail senden an" + "SEND_EMAIL_TO": "E-Mail senden an", + "TOKEN": "Token", + "EXPIRATION_REASON_MESSAGE": "Ihre Lizenz ist abgelaufen oder Ihre Maschine eindeutige Id wurde aufgrund einer Änderung an Ihrem System aktualisiert. Die xCALLY Motion Support Team Ihre alte und Ihre neue uuid senden Kontakt.", + "GRAY_PERIOD_EXPIRATION": "Grau Zeitraum Ablauf" } } \ No newline at end of file diff --git a/public/app/quick-panel/i18n/es.json b/public/app/quick-panel/i18n/es.json index ceb2f04..425d0e0 100644 --- a/public/app/quick-panel/i18n/es.json +++ b/public/app/quick-panel/i18n/es.json @@ -44,6 +44,9 @@ "LICENSE": "Licencia", "NEW_TOKEN": "Nuevo Token", "OLD_TOKEN": "Token viejo", - "SEND_EMAIL_TO": "Enviar correo electrónico a" + "SEND_EMAIL_TO": "Enviar correo electrónico a", + "TOKEN": "Token", + "EXPIRATION_REASON_MESSAGE": "Su licencia ha caducado o su identificador único de la máquina se ha actualizado debido a un cambio en el sistema. Póngase en contacto con el equipo de soporte de movimiento xCALLY enviar tanto el antiguo y el nuevo UUID.", + "GRAY_PERIOD_EXPIRATION": "Vencimiento del período gris" } } \ No newline at end of file diff --git a/public/app/quick-panel/i18n/fa.json b/public/app/quick-panel/i18n/fa.json index b31e9ac..bdf7b3d 100644 --- a/public/app/quick-panel/i18n/fa.json +++ b/public/app/quick-panel/i18n/fa.json @@ -44,6 +44,9 @@ "LICENSE": "این مجوز", "NEW_TOKEN": "نشانه جدید", "OLD_TOKEN": "نشانه پير", - "SEND_EMAIL_TO": "فرستادن به ایمیل" + "SEND_EMAIL_TO": "فرستادن به ایمیل", + "TOKEN": "نشانه", + "EXPIRATION_REASON_MESSAGE": "مجوز شما منقضی شده است يا شناسه منحصر به فرد دستگاه شما به روز شده است به علت تغییر سیستم شما. تماس با گروه پشتیبانی ارسال xCALLY حركت هر دو قديم و جديد شما uuid.", + "GRAY_PERIOD_EXPIRATION": "مدت زمان انقضا خاکستری" } } \ No newline at end of file diff --git a/public/app/quick-panel/i18n/fi.json b/public/app/quick-panel/i18n/fi.json index b2028aa..ccb2cbd 100644 --- a/public/app/quick-panel/i18n/fi.json +++ b/public/app/quick-panel/i18n/fi.json @@ -44,6 +44,9 @@ "LICENSE": "Lisenssi", "NEW_TOKEN": "Uusi etätunnistin", "OLD_TOKEN": "Vanha etätunnistin", - "SEND_EMAIL_TO": "Lähettää sähköpostia" + "SEND_EMAIL_TO": "Lähettää sähköpostia", + "TOKEN": "Etätunnistin", + "EXPIRATION_REASON_MESSAGE": "Lisenssi on vanhentunut tai laitteen yksilöivä tunnus on päivitetty muutos järjestelmään. Ota xCALLY Motion -tukiryhmään lähettämällä vanhat ja uudet uuid.", + "GRAY_PERIOD_EXPIRATION": "Harmaa kausi päättyy" } } \ No newline at end of file diff --git a/public/app/quick-panel/i18n/fr.json b/public/app/quick-panel/i18n/fr.json index 2f2eac0..b521df2 100644 --- a/public/app/quick-panel/i18n/fr.json +++ b/public/app/quick-panel/i18n/fr.json @@ -44,6 +44,9 @@ "LICENSE": "La licence", "NEW_TOKEN": "Nouveau jeton", "OLD_TOKEN": "Jeton ancien", - "SEND_EMAIL_TO": "Envoyez un courriel à" + "SEND_EMAIL_TO": "Envoyez un courriel à", + "TOKEN": "Coup", + "EXPIRATION_REASON_MESSAGE": "Votre licence a expiré ou votre machine id unique a été mise à jour en raison d'un changement à votre système. Contacter l'équipe de soutien à la motion xCALLY l'envoi à la fois votre ancienne et votre nouvel UUID.", + "GRAY_PERIOD_EXPIRATION": "Période de fin de gris" } } \ No newline at end of file diff --git a/public/app/quick-panel/i18n/hi.json b/public/app/quick-panel/i18n/hi.json index 2a92f53..f4f9f96 100644 --- a/public/app/quick-panel/i18n/hi.json +++ b/public/app/quick-panel/i18n/hi.json @@ -44,6 +44,9 @@ "LICENSE": "लाइसेंस", "NEW_TOKEN": "नया टोकन", "OLD_TOKEN": "प्राचीन सांकेतिक", - "SEND_EMAIL_TO": "को ईमेल भेजें" + "SEND_EMAIL_TO": "को ईमेल भेजें", + "TOKEN": "टोकन", + "EXPIRATION_REASON_MESSAGE": "आपका लाइसेंस समाप्त हो चुकी है या आपके मशीन अद्वितीय id अद्यतन किया गया है. अपने सिस्टम में परिवर्तन के कारण संपर्क का प्रस्ताव भेजने का समर्थन करता है और आप अपने पुराने दोनों xCALLY टीम के नए uuid है।", + "GRAY_PERIOD_EXPIRATION": "ग्रे अवधि समाप्ति" } } \ No newline at end of file diff --git a/public/app/quick-panel/i18n/it.json b/public/app/quick-panel/i18n/it.json index 36a1bba..193becf 100644 --- a/public/app/quick-panel/i18n/it.json +++ b/public/app/quick-panel/i18n/it.json @@ -47,6 +47,7 @@ "SEND_EMAIL_TO": "Invia Email a", "TOKEN": "Token", "EXPIRATION_REASON_MESSAGE": "La tua licenza è scaduta o l' ID unico della tua macchina è stato aggiornato per via di una modifica del sistema. Contatta il team xCALLY Motion Support inviando il tuo nuvo e il tuo vecchio uuid.", - "EXPIRATION_GRAY_PERIOD": "Scadenza Gray Period" + "EXPIRATION_GRAY_PERIOD": "Scadenza Gray Period", + "GRAY_PERIOD_EXPIRATION": "Grigio a scadenza periodo" } } \ No newline at end of file diff --git a/public/app/quick-panel/i18n/ja.json b/public/app/quick-panel/i18n/ja.json index de5f74e..2e9b939 100644 --- a/public/app/quick-panel/i18n/ja.json +++ b/public/app/quick-panel/i18n/ja.json @@ -44,6 +44,9 @@ "LICENSE": "ライセンス", "NEW_TOKEN": "新しいトークン", "OLD_TOKEN": "古いトークン", - "SEND_EMAIL_TO": "に電子メールを送信します" + "SEND_EMAIL_TO": "に電子メールを送信します", + "TOKEN": "トークン", + "EXPIRATION_REASON_MESSAGE": "ライセンスの有効期限が切れているか、システムに変更が発生したため、マシンの一意の ID が更新されました。 のモーション xCALLY 古い、新しい UUID の両方を送信するサポートチームにお問い合わせください。", + "GRAY_PERIOD_EXPIRATION": "グレーの期間の有効期限" } } \ No newline at end of file diff --git a/public/app/quick-panel/i18n/ko.json b/public/app/quick-panel/i18n/ko.json index 043b50a..21892fc 100644 --- a/public/app/quick-panel/i18n/ko.json +++ b/public/app/quick-panel/i18n/ko.json @@ -44,6 +44,9 @@ "LICENSE": "라이센스", "NEW_TOKEN": "새 토큰", "OLD_TOKEN": "오래된 토큰", - "SEND_EMAIL_TO": "전자 메일을 보내십시오." + "SEND_EMAIL_TO": "전자 메일을 보내십시오.", + "TOKEN": "토큰", + "EXPIRATION_REASON_MESSAGE": "라이센스가 만료됨 또는 기계 고유 ID 시스템을 바뀌는 관계로 업데이트되었습니다. Xcally 모션 기존 컴퓨터와 새 UUID 될때 지원 팀에 문의하십시오.", + "GRAY_PERIOD_EXPIRATION": "회색 기간 만료" } } \ No newline at end of file diff --git a/public/app/quick-panel/i18n/nl.json b/public/app/quick-panel/i18n/nl.json index c4c4c07..e496a31 100644 --- a/public/app/quick-panel/i18n/nl.json +++ b/public/app/quick-panel/i18n/nl.json @@ -44,6 +44,9 @@ "LICENSE": "Licentie", "NEW_TOKEN": "Nieuwe Token", "OLD_TOKEN": "Oude Token", - "SEND_EMAIL_TO": "Stuur een email naar" + "SEND_EMAIL_TO": "Stuur een email naar", + "TOKEN": "Token", + "EXPIRATION_REASON_MESSAGE": "Uw licentie is verlopen of de machine unieke id is bijgewerkt in verband met een inkomenswijziging van uw systeem. Contact de xCALLY Motion ondersteuningsteam sturen zowel uw oude en uw nieuwe uuid.", + "GRAY_PERIOD_EXPIRATION": "Grijze periode verstrijken" } } \ No newline at end of file diff --git a/public/app/quick-panel/i18n/no.json b/public/app/quick-panel/i18n/no.json index 6c78a6f..4168bcd 100644 --- a/public/app/quick-panel/i18n/no.json +++ b/public/app/quick-panel/i18n/no.json @@ -44,6 +44,9 @@ "LICENSE": "Lisens", "NEW_TOKEN": "Ny brikke", "OLD_TOKEN": "Gamle brikke", - "SEND_EMAIL_TO": "Send e-post til" + "SEND_EMAIL_TO": "Send e-post til", + "TOKEN": "Brikke", + "EXPIRATION_REASON_MESSAGE": "Lisensen din er utløpt eller maskinen din unike id har blitt oppdatert pÃ¥ grunn av en endring i systemet ditt. Kontakt xCALLY motion support team sender bÃ¥de den gamle og den nye uuid.", + "GRAY_PERIOD_EXPIRATION": "GrÃ¥ perioden utløper." } } \ No newline at end of file diff --git a/public/app/quick-panel/i18n/pt-PT.json b/public/app/quick-panel/i18n/pt-PT.json index fcc25ec..1025ab2 100644 --- a/public/app/quick-panel/i18n/pt-PT.json +++ b/public/app/quick-panel/i18n/pt-PT.json @@ -44,6 +44,9 @@ "LICENSE": "Licença", "NEW_TOKEN": "Novo Token", "OLD_TOKEN": "Token de antigo", - "SEND_EMAIL_TO": "Enviar Email Para" + "SEND_EMAIL_TO": "Enviar Email Para", + "TOKEN": "Token", + "EXPIRATION_REASON_MESSAGE": "A sua licença expirou ou a sua máquina id exclusivo foi atualizado devido a uma alteração em seu sistema. Entre em contato com a equipe de suporte de movimento xCALLY enviar tanto o seu antigo e o novo UUID.", + "GRAY_PERIOD_EXPIRATION": "Expiração do Período cinzento" } } \ No newline at end of file diff --git a/public/app/quick-panel/i18n/ru.json b/public/app/quick-panel/i18n/ru.json index 91eb70e..f12e6dc 100644 --- a/public/app/quick-panel/i18n/ru.json +++ b/public/app/quick-panel/i18n/ru.json @@ -44,6 +44,9 @@ "LICENSE": "Лицензии", "NEW_TOKEN": "Новый маркер", "OLD_TOKEN": "Старый маркер", - "SEND_EMAIL_TO": "Отправьте сообщение электронной почты на адрес" + "SEND_EMAIL_TO": "Отправьте сообщение электронной почты на адрес", + "TOKEN": "Маркер", + "EXPIRATION_REASON_MESSAGE": "Срок лицензии истек или вашей машины уникальный идентификатор был обновлен в соответствии с изменением в вашей системе. Обратитесь в xCALLY Motion группы поддержки отправки ваш старый и новый идентификатор UUID.", + "GRAY_PERIOD_EXPIRATION": "Серый Период истечения срока действия" } } \ No newline at end of file diff --git a/public/app/quick-panel/i18n/sv.json b/public/app/quick-panel/i18n/sv.json index a05f2ec..1b38aa3 100644 --- a/public/app/quick-panel/i18n/sv.json +++ b/public/app/quick-panel/i18n/sv.json @@ -44,6 +44,9 @@ "LICENSE": "Licens", "NEW_TOKEN": "Nytt token", "OLD_TOKEN": "Gamla token", - "SEND_EMAIL_TO": "Skicka e-post till" + "SEND_EMAIL_TO": "Skicka e-post till", + "TOKEN": "Token", + "EXPIRATION_REASON_MESSAGE": "Din licens har gÃ¥tt ut eller din maskin unika id har uppdaterats pÃ¥ grund av en ändring i ditt system. Kontakta xCALLY Motion supportteam skicka bÃ¥de din gamla och din nya uuid.", + "GRAY_PERIOD_EXPIRATION": "GrÃ¥ Periodförfallodagen" } } \ No newline at end of file diff --git a/public/app/quick-panel/i18n/tr.json b/public/app/quick-panel/i18n/tr.json index c8c99c6..15af840 100644 --- a/public/app/quick-panel/i18n/tr.json +++ b/public/app/quick-panel/i18n/tr.json @@ -44,6 +44,9 @@ "LICENSE": "Lisans", "NEW_TOKEN": "Yeni Kart", "OLD_TOKEN": "Eski Kart", - "SEND_EMAIL_TO": "E-Posta Gönder" + "SEND_EMAIL_TO": "E-Posta Gönder", + "TOKEN": "Işaretleyici", + "EXPIRATION_REASON_MESSAGE": "Lisans süresi dolmuş veya makine benzersiz id güncellendi bir değişiklik nedeniyle. Kişi, xCALLY Hareket Destek ekibi gönderme hem eski ve yeni uuid.", + "GRAY_PERIOD_EXPIRATION": "Gri Nokta Süre Sonu" } } \ No newline at end of file diff --git a/public/app/quick-panel/i18n/zh-CN.json b/public/app/quick-panel/i18n/zh-CN.json index 36873a5..7311487 100644 --- a/public/app/quick-panel/i18n/zh-CN.json +++ b/public/app/quick-panel/i18n/zh-CN.json @@ -44,6 +44,9 @@ "LICENSE": "许可证", "NEW_TOKEN": "新的令牌", "OLD_TOKEN": "旧令牌", - "SEND_EMAIL_TO": "发送电子邮件至" + "SEND_EMAIL_TO": "发送电子邮件至", + "TOKEN": "令牌", + "EXPIRATION_REASON_MESSAGE": "您的许可证已过期或您的机器的独特的身份证已被更新的更改到您的系统。 联系 xCALLY 动议的支持团队发送您的旧的和新的 uuid。", + "GRAY_PERIOD_EXPIRATION": "灰色的期间内到期" } } \ No newline at end of file diff --git a/public/app/quick-panel/i18n/zh-TW.json b/public/app/quick-panel/i18n/zh-TW.json index 56c47d8..a283739 100644 --- a/public/app/quick-panel/i18n/zh-TW.json +++ b/public/app/quick-panel/i18n/zh-TW.json @@ -44,6 +44,9 @@ "LICENSE": "授權", "NEW_TOKEN": "新權杖", "OLD_TOKEN": "舊權杖", - "SEND_EMAIL_TO": "傳送電子郵件至" + "SEND_EMAIL_TO": "傳送電子郵件至", + "TOKEN": "權杖", + "EXPIRATION_REASON_MESSAGE": "您的許可證已過期或您的機器的獨特 ID 已被更新由於更改到您的系統中。 請連絡您的支援團隊發送 xCALLY 議案舊和新的 uuid 。", + "GRAY_PERIOD_EXPIRATION": "灰色期到期" } } \ No newline at end of file diff --git a/public/app/toolbar/i18n/da.json b/public/app/toolbar/i18n/da.json index 7a2d205..d0dc3c3 100644 --- a/public/app/toolbar/i18n/da.json +++ b/public/app/toolbar/i18n/da.json @@ -32,6 +32,12 @@ "NEW_PASSWORD": "Ny adgangskode", "OLD_PASSWORD": "Gammel adgangskode", "SAVE": "Gem", - "TRIAL_VERSION": "Prøveversion" + "TRIAL_VERSION": "Prøveversion", + "SOMEONE_LOGGED_YOU_OUT": "Nogen logget dig ud, vil du blive logget?", + "STAY_LOGGED": "Bo logget", + "WARNING": "Advarsel", + "PAUSE": "Pause", + "RESUME": "Genoptag", + "NO_PAUSES_AVAILABLE": "Ingen pauser til rÃ¥dighed" } } \ No newline at end of file diff --git a/public/app/toolbar/i18n/de.json b/public/app/toolbar/i18n/de.json index c58a952..f84fdf9 100644 --- a/public/app/toolbar/i18n/de.json +++ b/public/app/toolbar/i18n/de.json @@ -32,6 +32,12 @@ "NEW_PASSWORD": "Neues Passwort", "OLD_PASSWORD": "Altes Passwort", "SAVE": "Speichern", - "TRIAL_VERSION": "Testversion" + "TRIAL_VERSION": "Testversion", + "SOMEONE_LOGGED_YOU_OUT": "Jemand eingeloggt haben, möchten Sie angemeldet bleiben?", + "STAY_LOGGED": "Angemeldet bleiben", + "WARNING": "Warnung", + "PAUSE": "Pause", + "RESUME": "Lebenslauf", + "NO_PAUSES_AVAILABLE": "Keine Pausen zur Verfügung" } } \ No newline at end of file diff --git a/public/app/toolbar/i18n/es.json b/public/app/toolbar/i18n/es.json index 9aafa58..f57e6db 100644 --- a/public/app/toolbar/i18n/es.json +++ b/public/app/toolbar/i18n/es.json @@ -32,6 +32,12 @@ "NEW_PASSWORD": "Nueva contraseña", "OLD_PASSWORD": "Contraseña antigua.", "SAVE": "Guardar", - "TRIAL_VERSION": "Versión de prueba" + "TRIAL_VERSION": "Versión de prueba", + "SOMEONE_LOGGED_YOU_OUT": "Alguien registrado fuera, ¿desea permanecer conectado?", + "STAY_LOGGED": "Permanecer conectado", + "WARNING": "Advertencia", + "PAUSE": "Pausa", + "RESUME": "Reanudar", + "NO_PAUSES_AVAILABLE": "Sin pausas disponibles" } } \ No newline at end of file diff --git a/public/app/toolbar/i18n/fa.json b/public/app/toolbar/i18n/fa.json index 59c3456..4d5c2a9 100644 --- a/public/app/toolbar/i18n/fa.json +++ b/public/app/toolbar/i18n/fa.json @@ -32,6 +32,12 @@ "NEW_PASSWORD": "اسم رمز جدید", "OLD_PASSWORD": "اسم رمز", "SAVE": "ذخیره", - "TRIAL_VERSION": "نسخه آزمایشی" + "TRIAL_VERSION": "نسخه آزمایشی", + "SOMEONE_LOGGED_YOU_OUT": "کسی که وارد سیستم شما را می خواهید به اقامت در خارج می شود؟", + "STAY_LOGGED": "اقامت در خارج می شود", + "WARNING": "هشدار", + "PAUSE": "مکث", + "RESUME": "ازسرگیری", + "NO_PAUSES_AVAILABLE": "نه در دسترس موقتاً متوقف" } } \ No newline at end of file diff --git a/public/app/toolbar/i18n/fi.json b/public/app/toolbar/i18n/fi.json index dc63367..2fafd10 100644 --- a/public/app/toolbar/i18n/fi.json +++ b/public/app/toolbar/i18n/fi.json @@ -32,6 +32,12 @@ "NEW_PASSWORD": "Uusi salasana", "OLD_PASSWORD": "Vanha salasana", "SAVE": "Tallenna", - "TRIAL_VERSION": "Kokeiluversio" + "TRIAL_VERSION": "Kokeiluversio", + "SOMEONE_LOGGED_YOU_OUT": "Joku kirjataan sinut ulos, haluatko pysyä kirjautuneena?", + "STAY_LOGGED": "Pysy kirjautuneena", + "WARNING": "Varoitus", + "PAUSE": "Tauko", + "RESUME": "Palautus", + "NO_PAUSES_AVAILABLE": "Ei käytettävissä keskeyttää" } } \ No newline at end of file diff --git a/public/app/toolbar/i18n/fr.json b/public/app/toolbar/i18n/fr.json index 784b107..8423313 100644 --- a/public/app/toolbar/i18n/fr.json +++ b/public/app/toolbar/i18n/fr.json @@ -32,6 +32,12 @@ "NEW_PASSWORD": "Nouveau mot de passe", "OLD_PASSWORD": "L'ancien mot de passe", "SAVE": "Sauvegarder", - "TRIAL_VERSION": "Version d'essai" + "TRIAL_VERSION": "Version d'essai", + "SOMEONE_LOGGED_YOU_OUT": "Quelqu'un vous déconnectait, voulez-vous rester connecté ?", + "STAY_LOGGED": "Rester connecté", + "WARNING": "Attention", + "PAUSE": "Mettre en pause", + "RESUME": "Reprendre", + "NO_PAUSES_AVAILABLE": "Pas de pauses disponible" } } \ No newline at end of file diff --git a/public/app/toolbar/i18n/hi.json b/public/app/toolbar/i18n/hi.json index 291b080..d339252 100644 --- a/public/app/toolbar/i18n/hi.json +++ b/public/app/toolbar/i18n/hi.json @@ -32,6 +32,12 @@ "NEW_PASSWORD": "नया पासवर्ड", "OLD_PASSWORD": "पुराना पासवर्ड", "SAVE": "सहेजें", - "TRIAL_VERSION": "परीक्षण संस्करण" + "TRIAL_VERSION": "परीक्षण संस्करण", + "SOMEONE_LOGGED_YOU_OUT": "आपके लॉग आउट रहना चाहते हैं, क्या आप कोई लॉग-इन करें?", + "STAY_LOGGED": "लॉग इन पर रोक", + "WARNING": "चेतावनी", + "PAUSE": "विराम", + "RESUME": "सारांश", + "NO_PAUSES_AVAILABLE": "चलाना रोकता उपलब्ध नहीं" } } \ No newline at end of file diff --git a/public/app/toolbar/i18n/it.json b/public/app/toolbar/i18n/it.json index 8441384..d336e18 100644 --- a/public/app/toolbar/i18n/it.json +++ b/public/app/toolbar/i18n/it.json @@ -35,6 +35,9 @@ "TRIAL_VERSION": "Versione di prova", "PAUSE": "Pause", "RESUME": "Riprendi", - "NO_PAUSES_AVAILABLE": "Nessuna pausa disponibile" + "NO_PAUSES_AVAILABLE": "Nessuna pausa disponibile", + "SOMEONE_LOGGED_YOU_OUT": "Qualcuno accede fuori, vuoi rimanere connesso?", + "STAY_LOGGED": "Restare connessi", + "WARNING": "Avvertenza" } } \ No newline at end of file diff --git a/public/app/toolbar/i18n/ja.json b/public/app/toolbar/i18n/ja.json index 7a9eda9..c27673e 100644 --- a/public/app/toolbar/i18n/ja.json +++ b/public/app/toolbar/i18n/ja.json @@ -32,6 +32,12 @@ "NEW_PASSWORD": "新しいパスワード", "OLD_PASSWORD": "古いパスワード", "SAVE": "保存", - "TRIAL_VERSION": "トライアルバージョン" + "TRIAL_VERSION": "トライアルバージョン", + "SOMEONE_LOGGED_YOU_OUT": "誰かをログアウトして、ログインしてのご利用をご希望ですか?", + "STAY_LOGGED": "ログインしたままに", + "WARNING": "警告", + "PAUSE": "一時停止", + "RESUME": "再開", + "NO_PAUSES_AVAILABLE": "一時停止できません" } } \ No newline at end of file diff --git a/public/app/toolbar/i18n/ko.json b/public/app/toolbar/i18n/ko.json index 0d90e29..48c2a86 100644 --- a/public/app/toolbar/i18n/ko.json +++ b/public/app/toolbar/i18n/ko.json @@ -32,6 +32,12 @@ "NEW_PASSWORD": "새 암호", "OLD_PASSWORD": "이전 암호", "SAVE": "저장", - "TRIAL_VERSION": "평가판 버전" + "TRIAL_VERSION": "평가판 버전", + "SOMEONE_LOGGED_YOU_OUT": "누군가 시스템에 로그온할 수 있는 로그 싶니?", + "STAY_LOGGED": "로그인 유지", + "WARNING": "경고", + "PAUSE": "일시 중지", + "RESUME": "재시작", + "NO_PAUSES_AVAILABLE": "없음 일시 중지합니다." } } \ No newline at end of file diff --git a/public/app/toolbar/i18n/nl.json b/public/app/toolbar/i18n/nl.json index 969d375..e3b6b36 100644 --- a/public/app/toolbar/i18n/nl.json +++ b/public/app/toolbar/i18n/nl.json @@ -32,6 +32,12 @@ "NEW_PASSWORD": "Nieuw wachtwoord", "OLD_PASSWORD": "Oud wachtwoord", "SAVE": "Opslaan", - "TRIAL_VERSION": "Evaluatieversie" + "TRIAL_VERSION": "Evaluatieversie", + "SOMEONE_LOGGED_YOU_OUT": "Iemand aangemeld gaat u wilt u ingelogd blijven?", + "STAY_LOGGED": "Blijf ingelogd", + "WARNING": "Waarschuwing", + "PAUSE": "Pauze", + "RESUME": "Hervatten", + "NO_PAUSES_AVAILABLE": "Geen pauzes beschikbaar" } } \ No newline at end of file diff --git a/public/app/toolbar/i18n/no.json b/public/app/toolbar/i18n/no.json index 43b16a0..90ef0e7 100644 --- a/public/app/toolbar/i18n/no.json +++ b/public/app/toolbar/i18n/no.json @@ -32,6 +32,12 @@ "NEW_PASSWORD": "Nytt passord", "OLD_PASSWORD": "Gammelt passord", "SAVE": "Lagre", - "TRIAL_VERSION": "Prøveversjon" + "TRIAL_VERSION": "Prøveversjon", + "SOMEONE_LOGGED_YOU_OUT": "Noen logget deg ut, ønsker du Ã¥ bo logget?", + "STAY_LOGGED": "Deres logget", + "WARNING": "Advarsel", + "PAUSE": "Pause", + "RESUME": "Gjenoppta", + "NO_PAUSES_AVAILABLE": "Ingen pauser tilgjengelig" } } \ No newline at end of file diff --git a/public/app/toolbar/i18n/pt-PT.json b/public/app/toolbar/i18n/pt-PT.json index 26e98a2..2cd797f 100644 --- a/public/app/toolbar/i18n/pt-PT.json +++ b/public/app/toolbar/i18n/pt-PT.json @@ -32,6 +32,12 @@ "NEW_PASSWORD": "Nova Senha", "OLD_PASSWORD": "Senha antiga", "SAVE": "Salvar", - "TRIAL_VERSION": "Versão de teste" + "TRIAL_VERSION": "Versão de teste", + "SOMEONE_LOGGED_YOU_OUT": "Alguém conectado você deseja permanecer conectado?", + "STAY_LOGGED": "Permanecer conectado", + "WARNING": "Aviso", + "PAUSE": "Pausa", + "RESUME": "Retomar", + "NO_PAUSES_AVAILABLE": "Sem pausas disponível" } } \ No newline at end of file diff --git a/public/app/toolbar/i18n/ru.json b/public/app/toolbar/i18n/ru.json index cbfb9e4..c2ad7d9 100644 --- a/public/app/toolbar/i18n/ru.json +++ b/public/app/toolbar/i18n/ru.json @@ -32,6 +32,12 @@ "NEW_PASSWORD": "Новый пароль", "OLD_PASSWORD": "Старый пароль", "SAVE": "Сохранить", - "TRIAL_VERSION": "Пробная версия" + "TRIAL_VERSION": "Пробная версия", + "SOMEONE_LOGGED_YOU_OUT": "Кто-то вошел вас, вы хотите оставаться зарегистрирован?", + "STAY_LOGGED": "Пребывание вошел", + "WARNING": "Предупреждение", + "PAUSE": "Пауза", + "RESUME": "Возобновить", + "NO_PAUSES_AVAILABLE": "Нет доступных приостанавливается" } } \ No newline at end of file diff --git a/public/app/toolbar/i18n/sv.json b/public/app/toolbar/i18n/sv.json index 67dde62..ed3f12c 100644 --- a/public/app/toolbar/i18n/sv.json +++ b/public/app/toolbar/i18n/sv.json @@ -32,6 +32,12 @@ "NEW_PASSWORD": "Nytt lösenord", "OLD_PASSWORD": "Gammalt lösenord", "SAVE": "Spara", - "TRIAL_VERSION": "Provversion" + "TRIAL_VERSION": "Provversion", + "SOMEONE_LOGGED_YOU_OUT": "NÃ¥gon har loggat ut dig, vill du bo inloggad?", + "STAY_LOGGED": "Stanna inloggad", + "WARNING": "Varning", + "PAUSE": "Pausa", + "RESUME": "Återuppta", + "NO_PAUSES_AVAILABLE": "Inga pauser tillgängliga" } } \ No newline at end of file diff --git a/public/app/toolbar/i18n/tr.json b/public/app/toolbar/i18n/tr.json index 41b23b9..db5e3d9 100644 --- a/public/app/toolbar/i18n/tr.json +++ b/public/app/toolbar/i18n/tr.json @@ -32,6 +32,12 @@ "NEW_PASSWORD": "Yeni Parola", "OLD_PASSWORD": "Eski Parola", "SAVE": "Kaydet", - "TRIAL_VERSION": "Deneme Sürümü" + "TRIAL_VERSION": "Deneme Sürümü", + "SOMEONE_LOGGED_YOU_OUT": "Birileri size kaydedilir, kalmak istiyor musunuz oturum?", + "STAY_LOGGED": "Oturum kalın", + "WARNING": "Uyarı", + "PAUSE": "Duraklatma", + "RESUME": "Sürdür", + "NO_PAUSES_AVAILABLE": "Yok mevcut duraklatır" } } \ No newline at end of file diff --git a/public/app/toolbar/i18n/zh-CN.json b/public/app/toolbar/i18n/zh-CN.json index cf700b6..60d262c 100644 --- a/public/app/toolbar/i18n/zh-CN.json +++ b/public/app/toolbar/i18n/zh-CN.json @@ -32,6 +32,12 @@ "NEW_PASSWORD": "新的密码。", "OLD_PASSWORD": "旧的密码", "SAVE": "保存", - "TRIAL_VERSION": "试用版本。" + "TRIAL_VERSION": "试用版本。", + "SOMEONE_LOGGED_YOU_OUT": "有人登录您, 您想要保持登录状态吗?", + "STAY_LOGGED": "保持登录状态。", + "WARNING": "警告", + "PAUSE": "暂停", + "RESUME": "恢复", + "NO_PAUSES_AVAILABLE": "没有可用的暂停" } } \ No newline at end of file diff --git a/public/app/toolbar/i18n/zh-TW.json b/public/app/toolbar/i18n/zh-TW.json index 6e17eb9..0c5a9e1 100644 --- a/public/app/toolbar/i18n/zh-TW.json +++ b/public/app/toolbar/i18n/zh-TW.json @@ -32,6 +32,12 @@ "NEW_PASSWORD": "新密碼", "OLD_PASSWORD": "舊密碼", "SAVE": "儲存", - "TRIAL_VERSION": "免費試用版" + "TRIAL_VERSION": "免費試用版", + "SOMEONE_LOGGED_YOU_OUT": "有人登出、你是否要保持登錄 ?", + "STAY_LOGGED": "保持登錄", + "WARNING": "警告", + "PAUSE": "暫停", + "RESUME": "恢復", + "NO_PAUSES_AVAILABLE": "無可用的暫停時間" } } \ No newline at end of file diff --git a/public/assets/images/avatars/customer.png b/public/assets/images/avatars/customer.png new file mode 100644 index 0000000000000000000000000000000000000000..a83b87ceaf24ec45bb6d9e0ec20ceed9c9ee077f GIT binary patch literal 3439 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/avatars/robot.png b/public/assets/images/avatars/robot.png new file mode 100644 index 0000000000000000000000000000000000000000..98f057e47fd46a1a0e6db2c049698cae49d5b9bb GIT binary patch literal 3252 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/business/chatWebsites.jpg b/public/assets/images/business/chatWebsites.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c8fc9a44cce3b3bcd8912122597cb2706ab87a1b GIT binary patch literal 9537 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 YzGHLwJ|W-dYIMIYC;5LC0l4=+0NLq~^Z)<= literal 0 HcmV?d00001 diff --git a/public/assets/images/business/deskAccounts.jpg b/public/assets/images/business/deskAccounts.jpg new file mode 100644 index 0000000000000000000000000000000000000000..916081ee0c12c6e3eb1b9661687e70b862b4ec87 GIT binary patch literal 4699 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 OP5Y71Kadpv)4u?7z}5Qz literal 0 HcmV?d00001 diff --git a/public/assets/images/ng-emoji-picker/IconsetSmiles.png b/public/assets/images/ng-emoji-picker/IconsetSmiles.png new file mode 100644 index 0000000000000000000000000000000000000000..4fb10645a37c32678ce1c3f17338d3b6bec94163 GIT binary patch literal 6975 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 XQG`iqo+RlD7(h!y4^pmX_42;}Z4eef literal 0 HcmV?d00001 diff --git a/public/assets/images/ng-emoji-picker/IconsetSmiles_1x.png b/public/assets/images/ng-emoji-picker/IconsetSmiles_1x.png new file mode 100644 index 0000000000000000000000000000000000000000..9679265dbb861609a159389cad337849012d1d1a GIT binary patch literal 3283 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/ng-emoji-picker/IconsetW.png b/public/assets/images/ng-emoji-picker/IconsetW.png new file mode 100644 index 0000000000000000000000000000000000000000..39e592bf8023589b57a4b766ed7ec2a24bdfa23f GIT binary patch literal 26483 zcma&M1yo$yvM!91pg|Mdf;H~J9fE5I8n=c<8+Ru_fB?av2_B&F;K2g~2<~o4a1ZYA zI{Tcx@A=1l_uZed7+t-3&RTO-%~|qQMQN%l;$o3wAt52*D!rD|MttfbAw6Y!f`On$ z$*$)RA7t+G`tCYVYj-bmS1^*a71RPutK?{I1J(wcTlu*3gT;`LQ0Z-T_1*Q=R7EVI zj-2Ly#&CK&IwNKyA&E(PJDXeDgWYK@z&5r{;`B!?9rU!eR^s$}0&3i9&az;L?Q36G zu#T^~uBETNrLYyfqy(*)w+MoPBiP-X*4xp+$xXytoc=GqA_)4=Z7zD+zlONmi_`yW zQTl3{w6aiFFs%S5ABQD34-c)NASVyMfS@1`J1s9a4=)!t;u7TG;TI7Q6yX)3{r4X| z;%Tl{)*{++3jcl<;+r@<#NFLlgp13|%Zt;Cj}z)@!^I;kEc}NDFE0mT1c#fCle@V$ zhm#w_-yGz?ZkDdL&hEBQC)z(8%`KoF?&9=_mHz7$9G(AR>*V%tF(CxTgL=4HA{1xM@aIv^BC@Vvb9bn# zE)?qUw-hxYPz`fMu7j7+~0HMpq3tvU?=y#=UV;OT)F>o z?w_sT=!|%>9N5*?6Ktj63U#FY>y<@p|L3(x|Bw9sJ=f}gUW?5CIF}2t7_L8x{SQU| zeG9RB{*eD{Tf~=tHa^%1vD;k{+q$V#)f5TIa!W~0TGxAFKMVUKaZi13nV;wLG2pYX zUyJ~F6tbMw6D;;n1>&BV;CE;wKkYR6vFxPWEGr?Za_>UPO<(o`*TRGdwTKyF*mKe7 zqs?@QU(yk3q0K+pKXhMpv$o4^Z1gMIn$}r94Y-S*&)C@tQqL+CF%B@`Q`3=ZO2R`! z!pcR$LS_j@VL{79*Ho$$g4-JO?u~pDt_3M6DM4>)Loq0+w$EPxvf#=6@^&TV1vTLp zwIL>DdwY9ncvK?p8b!B5=U){DuQB+LM7$1{+TAG&c19m`VTDa1-A1o(vn0HK|LBp& zbzf=qS;p!963@Y_*itp)ai1z3hEV|kz}{yJuX-Sb4%RHeYM=nB1PD5Troa9+=#onS~WRi2p5BqW9+>OMsBm_YZU(*i@P# z$F_A<)#{bW1ANa-{f}E6E<|lcK1!dtqNhmX^_?NzYp%(l>Kbgy;>D~g(K2tkKBA>I zdPSmsq4>xy;4B4B@gIIO?4?Pj$eq)#7$c`SuU$NU=bjvQVAP`Wlvr~fR@IR8qI+M3 z`!RKt09#r-)`WENQmrCL&wejw?{su;EXhn_eGC>qD5RRY6uAs-NbVzUtri1)e4G2E#hoXU!O1OV)l zJYt{xs6FFd(jJ~2KVil!8aSO>!qCyQxqEmyxXR&&jI+hX|MK9M`P@QA+J=X>@k+#= z(!#}XUvJ-wbin8vOVJP|{&tf!UK~fI!BvNAI9Y7yp=v#TlPce!1hmMp-qj%Wa=7oq z{)-g!0lHVdWM;SCE{PHLA7tN_&^Q*e_e%^=-nsED%mlxTw3duOKGC1X0IX%qpc*GR zyi!V?9Esvf@l^7h9I?IHt*J;~=h3%UqQ5BhPpSG0tUzZ?^{V~$x`rAATXYpo#o7p& zkY1!H@Y1>Js^BzrRI6E-;cwjVX1}lm60!hWh#Z)kc*0|xT`{NmVe=aead(vqYYj&6 zJ%Qz=1`zv9po2=o-PaJ*Yw~gW#lDWy&uq86G3yP9pzQ{$zS2^Bj>dM|g*sccQWA*2 z_?KZqa0fF9ni*R@iy_X9eMvwV)nWr@{8CUonc*?qkv#lTpCYZ1LM5-eu;h!NpfsKf-c;Ixm6A43c#c)B?JX=Av=a|mo}^MXWb)aJY`b6f?fq`1r~cj^+?cW6NBv=6KLt&B z`T3!d;TE|^-md=7iIT_Y(aDqXH7m!CbYVB^Z?eyrx&}`~-dMY4s&j_KcaoDXF~kEM zb6tPU$Sn5VXQfi{L&gkzeWtDDy%gya>d|t&2!rM`(|&>-P1^vCJ1=i}*oUkWGweCO zD}Ku^rK7o1X~4)UGgM7ZHC5*lr)*!4TU^7tE0W`ndT5_wB&-h=xfRc97)7=}$tiQB zF?~JAg(LUPgc{!F(#+F;B5r&AoT}X-xUt{v{>xoUR@iFbIBwBo`}N$_i?E4m4gFo? zhIoY!j1Rp1a2whz7Sqf5tX?P2Q;}AuM1`13Vfvox65|aH=58X&{aGi4mn|nsv1$}{ z`n_W=v7Z_pjYt=jZ%fLns)Ca5e$2e&_UY=LY>0n8`7m0qZ|@vD5QTR%mNU!|xndKOcG{>+|g3mhydkV8aummb|+n`BC0r`jXDDlsUm z$)~9Ak0Mq$cEOXgJ=yPXN6H<gLqsW>AK@M6%%+C8IIIhd9 zB4;(5y7x^yKLyjII3&)|e@Za=r+g%Q;7l3aPZQW2%~_2iFSQgNqwCvTHfrb|e>5*C z^+|U!_|YPXvC*G0TrhK&n*YVNQ}E?CM}a0ZJ2zCy<~4v(>gKM$*D}h|)y6*7fNk=( znT1SdI!)nTiJ17lpJ(%=WRxb#1&r+xImh*Rny4IaQD&>T1po2?!7~5p4gQk`z~u_V zb^;%xtrL954bu(6$K)pN^16sA-dev=RQWcMB6K-dFd)q0l2EzT20fp4x8x5QVh@5_ zbMoT`+?*JWvK$V6Z#y&|AD*he{l4JJH!e*y4KrV<*`J~A5g7kD#0qWXlXK?r|Ru?xAQY6T9$iMP?f>Xv+CwFNYQtYITsEuR{=|QJ{VNZ#A3p^wv-*yOC>I zfzyoLWAPf8vmp<-ht`!Y?ppTgBI-1e?^~O$in^g*r8`v@oAZk0KNg?lvhw5W*d)sb zO=cBbN=*cL@HcooC~vTir8vAE3*n3r&3jc4_?yf(RP7m)jQ z6yA6}#OFUqL%x`1J4mD4M=aWqi!08?ROPP`*G=SG=__+NnCMyZc4mGomif*5qa9Wr zsd(1Gmc59;6xN~o{$>StcHEOlSFzwY##h&}J`PS{N`4cE8WX&Ir;&EQ0LxR4+Q*BH z+MD{&f92d*ave(Y*)(SD5xi?HNN&ejKSr z-sLIS_9I==H2viH&2v%>z~?6&MGRLH{5XZPb(hBh3pjvb>jpkQ{_@8q@PDTP!~>53 zqn$r72g2?=f5E=@9EdhLHc`hM{IPJc{@uN=Rk9^@`Lf(X1WUMF)YyMq zWGyx<#TAZMmp)1M*Xh2?(-OD6;9TZjapo@EorUi0!X)`GvSwZd!PgoRDP!*SfsPv# z>uF_tL!YiUR$40*5qg^vP|c8>GS85AHLP@fmHJ}?U%d6MEZM6`KtMUtmNy8_TGx`Q zv7OBu1aTl!`*s=$+mu;RDD|L>WBhn63qDsD4T79s9rmP2o|VD6Q~GIko!JGXkruvc zr0l|YuVty?3MU_L=#K2y!PI3I@CW_A)L zJm3v3&f^b~$p}O5L&e6>G~D}Rt#6Dr2rl-fKBSk)$#zp_@mViV(024waf%ImM!x3T z(_zJ`0|B3K`yZhlYhZ8CqF&X2qX=&Q&0=o}_9;(4I~T#NiO$L)6xOSPtMPhomz0Q6 z#ZcXu@-&jre0P2CBp)^&ck$z+q%IK~+;lhngqQTQ;LtQ~yiSMn{MBSwf@Ctj?vu=J zp>MHDBHQ9>KR-$)tKTUC5@G^)c0}QU4 z@=w0Ywg0ZJ?hQ$ntV0|%vrYUIA}aC?{Bx0Ux*6U*F|Vl)(;xjy=t|3=q72{%P2ur8 ztp`oxNsZwxxyV+Ho~U8<8OoDLQZqoDt=-n5jW8zX@Uxs?gaIjyM!1KfXh%MiVaHRA z`oH}{MC8aMnE+p^BtP>cnGbK+TKV<|H5)O_dxU=|M)(H-gb}p+`Ft#+y^P`)-z_+n zkGW#oYWtV|!Z_>H1oJSBvV@y{sU3B8CaEez)wOK@0+cm6la$=u(b-VVDMZj2^_ZfA zcaWwu1KW8mE$l|sNZTYxGfDqJvt~iPuKHU=6mIWNIdg1~C3_I0zwx%Tj43<(F0b^- zwJgbVM0)U7hJf%1&;HQ=auk2lrJ>59o?kU2uGgyz3k&b`e@M_vl#Til#1wl6!S`-H z4RW?PDA2`mX+Gb{_Swt;_zF*AjH`)0-LEhCO1c5mXc$OLOvIPF={F#oBVtf^|Akx% z|7$sII#fh|Lw!Mygz8cIIvaYmtGGdYThpIQN}~CEa7h;ElWYh~-4kP!EAXdJs{HaR zI_Eiu=JWKNXT%zy7uf+9^D4OA-YXUr)&T(lEm{Q%0jV0f%AT1u;r)rE4#Sv*N`oBj zfh-;|D>Yp&%T`nIhTcM`vX|`JY7bQ(s-v-3JYog41?pC2+lwnJ58tacDo%eqGFP6m z=OB!_AK#~n~@Psbow+hC$t7MRqIl|2z z`mvJA?c1q}h@6XA2)I=C9^)&@JPO0?s}-^&)C8V9LDN+E-0j=Hku=EF;jbw&lj#6z zuwY{!bAnHyi<>XowgNcH_(_i`ar6%DpHau)2uuw@5)&rgh@bA$ z9`qb>_sc^CpmxqARcR1e-x8a*g?62hz$uyV>S9N^yhMC3f5%D{p02&cV;Oz;O}_7p zEIEJ$$f99RmMTH7Jj3Ffd|{hsy?DJcQ0rk(#?vm(o-B<%xYIwK{Il2b6a z|G0Sd(ZorOwC1!%RSStRrtX4l^^$!5b6nfx(>;=K{CY@Q3zrF` zG2rLF$vkobe{MMwBCG^vbW1|F;2E0c6Dee3DLN!{O~mzIbT|?*;yxkr5Y2+kZX&72 zxtfAqQLj$dHQ`yvCw7>(Ub=M(-OvCDBDUf9c8tDDZ`{+y#!Oh}(q(9!Ss20HTZm$q ztS3GX*xSo|^OR4p_GQ}|fyGqK(`7bfe&o~a6vsV=>N^k5G9x>?O@B2A5B3yJZFotP z#M$iYf13@(!IzS@>AkNTODPSD8+Kk99O5lT;Td?^$6w21Pd#OFyeR>%wZxy*1jhFd zitfo&)#&e4CQh_DmN|*o+em}}<{bw}nb@p5VV_qhXT+?Vdgkye%Ivjm!)>und)&>K zbj906LGbI~9^?0GG-dGM3s_A}A~`IkT%xwlef7I)qn>s%H2;<3g=?HMg2p7&m7pBsHVBI&T}EFJWWwznyA?=-YXel zSqRi<^dP9LFUF!-*>1fr?Ew zakn5lR1Va)!+9vX+%Fx7TYp=$Jtc#^$grD|PZb?2>A@G%=nooTvPaL==x21k@bpIgPW~(09?T z0ekf!8g@O^VE(omY0MR3FOjBLf0iob&FrMr!@{R)YI|3$zW$dZJNnS()NCh80Zru1 zceehv|CkxT<7UOO4IWK2Ab~$ok~7Nr?H4T^=uv(6pcg&9?hV z>{roX<*mMBopz(Nv|33)pQoPQaS6US*`Ks&s|FDXmmG;X#)QnlOuwvhv6g0)pB@gs zfTM|aI(6#Pwr~Z8t_7-_p{LgDuAgjE`ei&#QnjRgFc*H;ycL$T>BLL>Y_c69_^GVW zAtVcB#H8D|2Xji=2t1E3629LmmljRVg1q+;ZMWpjqutXz0VubG-isox3NcgX7_}^= z_b>DFji*Ojpy~~{k_?I=_8V(DSoo?6@R;;T-4L=R0F?SmdaoX<56&UK#^lE4+d}D( zoy9SoH}~~|nmIkqS}?)Y^9WR$P^yqD%bay5yvBzlu7rZGBh_0G@1W$*vNuUH@Zryd zwHIU#I3y3eD6c0aNMr8bzp03Z_3}$bCVi)g2ACS5{IM-a|1v3m(SO+)Wa9s#^K=3F z^yNOMn;twkmLAd-O0z8!gD_2fNS^uT-V4o*ZtabVW(4RGkVVB~GeXH{x)>3T!cy8w zI4w3N1>7bCwJ3yP;2IEZ1FEowWGJ!yA!GiKJb$o6i^AuB4BNOPRlf0t{tY7`ZFvsXNUNDEFXLtLg{cb2g+Yl`@dFD>Lw1y(G1u^bs3LjjpEo z5Y4W&ujkf$Ww15{ zkCQwXt%O8?cInGmqb{)B^g#|~Hom@A|%NOj8ocWn8wYnCVSp&I>uktxT=}_22BtcpoWJS0u=k zgb$!~_p*&_m?4APQZro-$Lf-0R0l`Jc@-zR(?=@ftfP@}PiyfHxT0Ubi~K99{PbeX z-#tCdmHqW}gs$W7yno>6zk|&`(DdK*zXDH??q@?Hw!qsr&&|`rht=}!fA$CHIj8%G zVCY_d*7YeXWp=;xXjbZ3Px&4Y`Gy)OvGhl&DF~%DD@;p@GR!p{C5M25Ekp2eVfY-$ zRYNwjPe}g(!kg8Q$1-$QoNUsqO=V*$4SCv`U01=gjsEuK=Hxk8<`R{eH(0y&fhIgY z=!hTC5H|QHT8-ABC|zCC@)0Ox$!iBb3tio%RUH<;%;NlTJ5na1Ze(grZhf-k1)J%x zm@xbvuq7W!RTo3_)m=G&>3cw$ws;Zyk^1JA@TD<3p5goDqG-R>W|_$$I&1c{q=s1X zOtrIS-Pt-aXq=>Y>g{1-1|LHXG)_!r)n_Dt8K?G(>*_fo8?P98-Jc}GcT4lGqQ`A@ z++K3mbVb%U4_IWa{&>e1D9nB4)<9U_Ih#Wp!4>zby6*}ML@>XViUPR9s^JNz6z@=?{L6k#Sym1xf zQoeUIjvrop_T`(}pfiEXtc;hJR5UsDXq5x@GKz;Sl(+or?O}iUe*o>6*k9T1Mh(qo62u|;$zijxKE8YQnF}vk$~%6yfL1E zaM^Rc2AJhG=)F{u?)7^GU3uK8LM;O#G`R0GvzpN%cRApcl+HO{7!ptq$GTXzq6u|M z9Uu+Nr-Ai9VVTs@*}l!o2-T{;Dbw8GqgEG@=J3t+pQq0x_&`z$HhdCy#kjN=mB;+w zFuA|-uYZmNsX>U(_f`9oRZv} zIxOl5IMmhM9}udm`0m)dAV003hX;Jj-K2mgN+g>}ScH)=K1=dESn!w~%agTt{LK(a zpTINzIv0s+2lVno&pqd|Bc=cEPK~ia&X|-7HiO(Q zUdE69%Lb*pq7%zVjr( zQ$K5BsK7;%O1E`wBI{Pw@!;!qLr}^tJLa*K?RVJUBcXlMRPT~^>Go7t5?@jd8hV|G zUKC*1{<`VM6VTYRMa2!A=wRRk_gUcW_o&{7gYEFLYheCQR1i(>&+V>!+_>NAE%Gs> z8WTBspY+`sNDgu3Y$YoyIGW|LJr9?Jy|>5mv?6KP@1*p~^~cMLiZ;=2+=3lNX_}E# ziZGvSa;S61pll~HstoMy?wSzChV?^})6z^|=aR9QqU>Z^=uEGZJ1LQ5UV3XCGd(-|xE+ekIhS3mz~wL11TF%9>44BYb^H|PokMfKt>{C+8F2_p+}|vBeuv^% zm?SQg!!0|H&p5chj^rj95GWCACm0nxc$q-xVM{tbs6D9I0BoP>2mg*00P4B%5;u?><{bZ;a6li?7Zq9@&Drzn zGaDL!=Z90NCNVxW@R%9wCYd9=oA*9$+9Uu3Spc-Eki# z;X6ik?hTyetcLi-L=vt%8uOQ>tzqB^o_5Px-faI{B;Y|ksovLTWIy!F*m5n&z#ho* z#v6=7jHFWbjI^_&qF+KvD=IcTL=5A$roM^%$v~_@pm|V%LhQoMxLRvc@PJcDa5k_G z;c=^QH`N^6lbes^ zoynE7GngBGi65I4NZGO!7F%Rd&U<81j`P%GpCXI0A*%+CdPU*XRlw@nnF~+A+ax4m5!kxm~Jbv zu~+ua9PMo2H6A&(3m`kR%ZBmKoLt7_q1i?D)9!O8b$YsCPWAYHway~qz+E1hn3%Xm zr1ag+Z_>piXj0HF44BjFvRpj9%p9HfN!6SAvdryig9jvXsWuKzi=fJ+_Ib1 zv_R5=cRWM`QO?_Fb_t6ptRlY-j`s^;@!O#CB~$s4O}gVu3QIxv&<6M734L>y=o%Hm z_Y)YaQnxk~pNeaeegD#pXgmo4ccA$vkuc#4>)f-1CqrkGcXxL$6a&}6%eLxkZY>*y z(XpjylX}>N7@Nd{tN5R=JU@l@7rdM{yTM8}b8m1zE8CYHunMs*o-5HA`vea*0Mm4G zi}_^1wQ}d}Usb&*^Peb-$6y3W8IY z{>p??FISN`7OVBwwz*Tsn~+KWm=sPI*w>VFBQ`9`2y8j$Z*;uGs0xfO$OrV}zd^L3 z{WTgXk_wgnK40?H@CaTCId0BDD*LwbVgz|;8=B>W`ZqqYmB4aJWj@RLVAt<Krv{z&Qb3o|`VI}fLr7)5R4|$SFG&IL!;!F}Is&Df4m><+yIk2Lx5E~| zS&QaAEHjf@4SKxCzk8*%f_YTN;ty%hBgL|orYQ86=6E?2+IZ3wVE{=-$6P2>Nt-Z| z1|l=5WR$#O&T`lGGoH=q7aGdXh)yagEVal`j!T{hFC|yq2rgRF0lqCs##ierwnnXm z6!SHMN=s8q#59@VrQN#C16wNTos``FEz0>T*8L|2MikzrQ8N+cS_sCIcG0IFZ zMvlH}ET>Jpl9z!z)I;CsbY-@-DaA!ZICb>g(E837P>K%=cb< zw>332L={H@YME(0n>PI1kFP(49o*uYpXCi!KzH}{*c^_04Aj&x7MGn~^d31#s(UT+ zvdLm5tGi|#+&l02m0lR`Y((%24eB^o7J1mSbNIit>;7$Zi-$f2;Wu!+gHQ2-s^%ASI^=sZOX=PsV{x`S!RZG$F%#xcb zCY8NR1thC4cP{(fvni>mr0bwF^h_ENzl(h~TVbb9Fk%0;#5jBEP6LE%XawHqHuQQj zGBP^CSLZW-;1`2MUg`f3SvY**N;hbX@!}^MfMY+hX5%Qa;J#f!vWta$_kped9Y?Da z2kwBCNZc_9&+&*h$0sdvqYGbGMm#eP{Nb#MAinG%H$bg;_i+i)sxj+>W=bi=QQ@gl z+R$c8A-2{2Jm6cx#WxILoW{h+#4}@obEPzc$SkDY;ZayaLUL-M{S&=L*8RUvzb+Xa zCLcR7kosQ`BLS=K%VtzyI_IH5S?W8xAS{>Hdjon%n#+>?ZLk?I^QI*bLDk z6vPR@PT>ZvrqQ~hOg0?km!8mo9!9YKN-APd5lKa*=7HB72z)>C)Vk8>wSqv^7@uMd za$(a@HFK) z*=r$Nks`W5;4FFcdx( z&2!pL928w~2sbdYvuI90K;A<)$Ke(jjbfz!ejqqyM;O^!v* zY=G%k8p2KjG)1KUfK2{^Z2u*%|B~HliLl$IQBS-D>KG;DVt?LpX9GXswN-|x<~euw z6u%?P-|szwrVq~09863kL>eX-BEQ-9m!wWFMP&*GVDs@y0Yk{Jasiz?+xQz z47?)kP6CQ4sV?2F$OQpJE7;Ge2|XRfAeC$dhfY+3p{^yS{|$ViLpnF~pXPfm4>W$f zodxvW1s;L-!-g}CQi?#~j&x5Q9#kwX!v4B#sct|rhd0tK$jjf$@;kRF0jN1S!Eo!Y*}@Q&7is(!mBztl|AF`X3nGujND-xLsN|__#HSIPL75UFk||xa{BG% z0m)x7#a%U)3^*1&o0z|-HYYcDRIC)Y(aJN&;Pk)zz1?0sF=%kh^95x0fxXtOqE!zr z{dUJM<6$CFUH`3bzU+AYi8=BAT4vN0|LmA%JXZ3J+c2Z( zRmiG6Y)-$*e$i0!_CzEl1mKZyIQVnRgAX^L{F!yo_|-AV(}Vmrjw$!GkR!3n-BP2j zCwEIlZ`;4Dw-U+8WvUv!NG3(1+l+z>|9l6kazfKAIp`i?u%9x?l^o<-^1#h|F|!-4 z_q-ITE;n}K!h9>9DV+<9tn+Pl+9VoU_AX#MO;X~~Vd0YP%mx%UQkY8Pb)2Qk^? zdRM73Vh^GimmtNZxk{aR(#X8wp2^b}}X_ZB?+3Skb+8mk- zmpqSkuemsza_dQXBvjr^*VpilJ8VC3(R_@d@Nb81XlvX4*LdE1X-#r=OoR zEO6> zRk7Xe?JMtZ0-ys12g~b`L&bs^>wrhm4Gh?YnBg`D-k<}GIf|W$tI}JOg)h`Y1d7@o z65qPD_GF-L?lp`H-vh!awr79sty5jK`L#hER#)~fNHB6aY}(pYMzToNd#-#V-vwUF z+o@D7Gw0_x5;`sZ4ES~dd?~?Sa?$#V;hdLilmTAfPs$TrqNThLwbbIBH+R}gf2qE? zxn@)^lJ3XHb1c2VEk+!Tdv<_mB>J;1b%zQPz}9KeBo^V ziT`V9KC+$Nf)2mfUP{eyNo91(&`onMG^S`kC<=D^WpnfBInkrTdDpLLdDLVE=_x#o zQA^w}O&? z9_6RSHZ4%!OW{-T*lTsts2g+VS}E1ToJ^7mh8=m|2Q-#(bF*&0-Vq(`=$#G99=v(E z9Vu+_2BUnm104ljHYPN z_IuZjO!uCpewP7@1gK5U!e${?RglK9f+@F21*qE{K#2vx^5V?~Pk+2BGb9^keu`eG zD^@pMu9pgv$xO7Urb>XE)yR1LKt<-qn0~d6r$fY+q|bai%ps%2ikU2W$2h*tedFe5 z*-@f4(8J!6j{M|5o%Rg_N&3TXyymG}7Yc981~LR*=Kl=+4@&z_R)_I|Tsx z;QqnNrss83d-{BpqbJA$%#@)hQz(-|&!>!>$56G0`z8kY7yCW}w_fO8?{g&8XDXwY zwsvvL;!i=-^Dqpar01aGd&Kv&~&Lojui%G(;t#bCPTa%yR%$kqEXPMiy3d#U@7Hq{RM%F#Kn+;s0Cg1WGdk zs8mOD)S=E=kz6`GRi}`Xqu#yWDdoGXu`_0Qcn0cbFN}Wq(x5H{9gn{6Rv{)a2Y@!p zXviyiq_JXv)ZA)14{IH|VI}4GV3k-6%2#Hwn5AEs(wY?d_htqJmEV{>eOJU@+NIl` zVww$~SU}EcGU~LWhCAta4O6N9vieFT8wya5|%27B0m2mC~$3vG4KvPnu$b6rrZ083{&UA3CX+xCL{ZGbKb2o{se*_ztF(s2u`FG>ckJ(|;X6N1@ z^TB}+S?+l^=zQN}6K&vuT{!NI{n)x4<{0fXFdRENvxt1lBa~?tw4t&0$ws+1czn9D zqc1fB!pNGdTTyjQ%_DeUS%mD04jCZ>51p(;vRB6kb0B_D5){Y`rL&)xQ;3C=PTc>x zGoJwS7m#BEA?D1+@n?c+wM16A%5(LRH6=^>KNWtUXXT zkg?L&{8$)+Pw(U*X}gcdd%Tq<&0jxiOc z5qA6e-4BY}R#hkc1r-7X2{A?S2Q7^5QdP}CT7whXZj~ibD-w-Fi;$c&)sBZdJIUai z3CCZlEuV&rjFHmIXJD)kt_R&!?{VbWf`-Gmyq+~T$awl;0d&%5)gE`y<1rcr;sgC% z+_dyMVC}-v2~HLqS--F2mz_H)Lds6khCY&w@9tW&qUn6Yz=BO?J za3T0X;K}c?oRV)`X3dcwJkFi;-h(Aycuhc1=1DdRQ( z6h?)G?)Gh-S-9)&v^2h_t0V9in1~sGIW^_#rMc6!KmO1%|J5q%D=OhMdEp!6aI(F1 znwwGCOg0Q%Hhh*L??`?^Ry`az*;Bxfet`iYhfc-7?5CElV@0YWw4pEg0;M2`0jB#5 zYhUznn8tHi-)uON>Wp+L^0Z(f>gh!EMRmvM&e90c)ZplDx={KQ{_?~3bDI+MDPoI) zv<+CYg50VOIfl2kG&r4vDsChR+=~|&=6kQXY_tJx3h>b40k0TZ^c}Xv=HeY52Rxd) zYAUAhC8HX&H%5f`!ZgkVI<4TQfs@Y1ZW`j1$hwkdz0ImJh9CL*(gsy%XT{D2RMtP- z_!)0~mW4$dVq|l+yFqF(ayl+Xiht!Y6}EqUIXyFLrzq~?)5f3Ru5+5DWNSsX7CO z6XleVwp>naQZd;M>s5G4CY{o-(j@g*5ZQOQefOh}`Fe1qXt-x*oiB2dF+ZHfg|8F9d>nnwl{jY?umkE485E+ z{>*Q;Ydmk^Kevn_(&pCIh4U%gfbpoPCH`UP{C(1#v3vZg^8=Bsq1y{>jCh~z6l5(m zBYFGNyL{{Ux*xjP45rr*rc0j)42X$(3w zd$&JzckS0rpJv$J1dJ`N?>~dRdh?_+;|t!S+6 zlMbgZGR`OfzU<>SF{3x>#?NDiwgYbPCz@B<5e7#v?v8;cALdOq^mz!C)e0=O55Hy_764F}`dY!~&$tI6_E zZ#GwFyxzSCE#^Im#aXmHUVOY(ie!$!n|2k+^zOeo-zfC^Htf#-F)V&dxh+retgJa_ zA{ zyzgn?CH8EUscC~-Rl2++laSGLeGC4s-wf#B0%JrbjeUL!f%-k)o6)4He#Q-=67?*v za0GA`NDB8$$QV9d-3rzx`fu4<14 zUpK|H+V|dhVYl{d3-9LY3?VfqVl2ot?A%6YIwj*&L5u?{WzIr26M4QWcse&%NS<;xbbIal4)aBeyRJ(V+4Z3Ei0bqJ5OZ0gqzw z=ey$tYk02e9rpT3#OUNPbJjk5vk zMo_aJj$G_%RARM?u|1Lu>`$0DW#4VR{Y9U4_EBtmMH!{yVQGsX zI<0fkd2t48^egqNvs-+4a&JAM zw^G8nyu2L=#ogulwI~ zqrNdNuz6P|l(GxMRV!IjhnL-|(}-taiU8Oi3Uv9K`fW+{n%8 zJ)qgM-04TP>sLBSOCP?6!OX7KOq9eJpBmAP`iUO6 zvm+dL2_gp8)@w_qgIb?y`Y6=SzZ5)9#iWSw^W6C`E8%LgmPb;2|HHJ|`gaz2y%m{W zy=~)9P(yWqU4P9^_ML5Y|UZj1}~a`?)%% zKHjD}XkuaWa)uOlfh`r9MAxUW^b4nw96G?>VV!C1- z#PLkaMUn0hl>-pMaC zkM=ZZoj%O`tWeTZcX&V5XQT^v)28QeJl{RXNmk@(+Ya_E^1<*A+RFDeX8&Pmixt2* zuyMUXEfwXY``ZCe2cnoT+>jS0#!Kx*kh#-A1>=?kV{;0~*V9~zNk2pTZQ?^&bQDz8Vcc!ZPK(GwjaQF(_hCDfGkX2J7K%$!G5_NjhekF{_NniGC1 zosNJ3HQCEmOMa)_QxeAJFN?$r88fH60;f+Uje|*%(nk&B+~S?K3(9E^eqjLekJkKz zE+xydXUI|=vhtC3(fI86Z6yziq;q^+iSS#09|XeJNe^3G=FH{yWSedl%wP@~CgwFS z9s*aD+td6o<)8AKfa_-+xPv}ArGT$s+^b?gROn+g67iZ!cY<7VjPHitz% zl^xQU5hxXcnJ6tTvX=!c=AZnj)}Av$m62isXyzLeOOLb~fJuV7Z%lnx=gbYpb$vqX zXRwl5L~+e{_j|cP!*i?6c#;Cuqjt;k$Y-gxT>cIRb&I!g1dgkFZ|0Wp1%~H1_@eOI zitKN-B{aSfj~B?`^JD0Ueo*Seo7}m*?Zv%axnGOO>V5F&ptH-@DGj*hA)ZbNReF<# z!z7&vy*IfT7FVLscY9RBEuz`d<<6~kX+S5{vur?we1(|VRW(76ixiQ#H9}Tr6Z{|? zv!L#>D91eX0d4`EmI17ovg&g`@}x`8+m%g2qOasOm@(oF zJd?5vkXml7M^;t&9M%Cv6P2KbTK$~z##P%`QH`Yv_(2^m**yd$(rbjglpS! z&$?Bt`eQbZ;|a&>g=%px(M1-L(N#U4AK-mGYseY{`rw;4XC6HB77o2;ZrLcosil>& z0T=u1x`JGtD-_{Svo59*f*Yh)>riXu9a&b3Y@RMK{)tY*Jk*2=mcJm~&x&BqWqD5B9b zth)XEV%ZjD_MyKX9j_am{?)H%WYNfzZ<_!sE0E>#`!R3sZ(@8GmS}SAikX!3uPaSL zEeineM^iAGSG5HW`Y{4j%Ha0j#;H;0|Hp+DT^CGgX@7nBJoNNA5=7etKsTbhm^eV7i3nNlyW#j&-r^h zv_Uf99A&AddTOb{@FzuIj&Jx9??UEJiqQ;^-(*j-k&Mj*8g3!_#}+Y`l;hPf>LOPa z&whmA;{|PHc?B*NYviONhc8Uxvh=;uVE;zofhgnL|LTdU$`OLD#2Yj?fXKOX#mv{9 zG3Op&&)1|SCnw`kzWRKLXx4FEs|q|XOF}_Qmd#}rMi!S3FR&lamp@&Eb_8tq#!@`m zd<{lc#6a6+^~@a(x0oG|mwdQtINchh`O_s}QO*g>|OSxR+S8W0U3a zrV(HA?st(Qwa=%_Uz-1?w(pE;a#`D^BVCFhMXIz&6Qmkajj0I4(}RQoO6K#j-616Htmnp z<7~7x4x(NbGYegpdl@>`5^x!f8>9EEtN&hR62R`rE!pstA6S$S4e{#uk^nFFrYHxy;%*RX(~ISbK%1pGNWL*X6DE zjV@d@Sb5mA4W<2~DP{kIaYOma1Z4E}m#u2055dyKVL4bY|hgpeLgAyG8CyFeTRf@?^5s`~sUwarv`bsrbj#g6Q@2 zmXIq@nxd*ItmxQ!sor|UMV39Lg$_TR;#o$aO4;G&t@2OUgMhPTj+fWusx#E#cFxoU z!#FOR_1=K=!l&nL!Nh=x;(>{T5k`O+h`8QuZO{ydAX{I$JYTr<(_LJ68FOvD8?*^# zjh>jCoWw1a)~)wA?30b+D`*u~9i&)AfXUoZVj!PW{D6Z=(zrBi6dL-mVXS!uTR+UO zv-y}4=UPY2I3$0t-yAFAAVrQ=4zjS(raZeW695tgEHwMQ%n7(SE@pN4xcH4A7Anr3 z`xyO|DEYiqzFjJ4jHb+}a_I&(DQ2?FgsJmmyBzwW)4HW8v&^kDCzjq^JyYJx1*qZZ z6iV|LjUh?)V28U9V7aLcL@WHix|3Ol0Tl?}s!r6;ULfd!E*A>~<;f?RY*p`w`igb- zOE@)NxY|dJGWjOHZ&iKnHeSNb4#HC2`67BQKP5||VoFb2*dQ__Jf$NxEBc*(=wYog zAop~IWO%dN@~2Y}iuZ-U`={}C@R;Z|;`Arb}*6;rB= z4~G)pSyWR5aHpAe*%gk4TPJG2o;-F%^fV!S#(V*yg)^LXNlN={i(I!s%3a^OP~2*c zsQWNWQEf8ww^bTRFNAoQ1ViY37K8m?4(g!qpGjoKt^kT87nnMWCUnUK`dd&b3R~KX z^*Zr`UMo<=ybeNZc#QQdH-Dc-vrlt6T*4I`c~f?YT&S6(GiV>v4!!#ToJ+QQAUNna zX3SMVxnm}~*^44pQOb^Nl{U@d(?S$x@7=4e0U5j_cOk+@f?-LD3n6Hg;K6qvgBG_i zu=L5g`n)ihEosNy3B9UssQbJ!B9}kt-vX4s$(c5UcIJ(R!eV7Q8R#Z=j}iLjs0rW3 z!2g4H9PT|x9z^cHJV_z?$zm1yvLl>oG@8X;1i{EsD6Z^=4<=62#2+9j28h84Gsr-2 z3jo=j8_41|5F?Ta31|ng*oz}^K?8OqJqT_|a-ULik`V82U#_{7HW{`QfMq1;G1@_D z3<4NMx|0aHit)=SyX#+T<*Vzfv9)E{SgU-7ABZ;S5A2ch9Iz{fP7;8tVw$=HdQ~)ZV4zHim0#ZBLT^k$KMeg2A)p;gV zD_MptOBVjpW>?!YGVR4!JZ{KdNHnG)rQr9ewbr?gPAti5`}q7L!wkE_w;xP|{Rz~s zA^CVNlXv1{M+cvVqGcbYk$D`BOf$)Azq7dyX`V^%Q(`0rMku~DOv_4gk0~}iloT6N z9J6E?ManM|7aAHNTrhXrw{h7H&fH?;34+~HPFP|%k0yJ)qQ4Uumz-bVREvK-Rpf_z zFb9-b!hL*BtAa->Ew)sq`U_vYm_Ed{dG`L*Am5-3LD1T8t4y2w^n7PU>$VL?jvbkV zostePs8*MD8#ma9RL8qS@)Ne3QY+$ML`3={q)2ZS80|zOrr-S_hGkV|rq`9EUm<)m zG0-b`qpfN3H#p9t~82q`rZ&6-Y}tqp?*s68UJi=0st3S>cGb zxCB6U`S-nxPp0k8Vh2D2hwuH;UM7WU!tPHK0Xq!OU1%9lLJY&l4^y^GliT7b1E)nl z)*Mt&TNL6|k8X{rw`#XcXIAAcwDa@>uDXXeOjvH;ebf*dgx$%y$GY9~ymRG%ou_sG zN==xW_1ueR+!lok*r7V(ZQBhK!n;zF?Fwd9*Tb{_CIW%nKY5=! zV#t=}QTm+W7^9WTVK3jieKb@^aVq;m~{snLi zb--hd8Ng>y)BOiW5gw?wMfp3W85hWez_8zn`46NGN41!aJqOY(&l|%X0-7O6$}*2i zn7eA)A=3oF+(cV(tfDD?YTk7SdfJH8+<92##{*K{u=X0&%EIJ9i&G{9?siNic8N%# z=j(nU);s&a^*ug1#@(QYKsQJ<;oO1SF zHCYMm)D4S|BM3G5yJ83PYUBCkt9x{T$3c<0ChntdAUQo_i>&}`&3U6UN|C-VA+cbw zQm1}#@JJLnivgYwrKWt|Q!_#NuSx-8FeORZ`6Hhvqz`@rp!Gz5r{As5F)$MrmY_%J zI;Gkz&e@)xc%EELT9Wp;DKEHPr=Hif33jp{c`V_Oo;s}<5N7e@>O?}~_}jytXD!`_ z*G#@WGwy17_7Bk6V`gw9!me#KBC+6!AZw8=wRw5+g=f+JI}^;>xBU2RVN1{FMyZx@ z2o4vY$M|qyfB?d?_Y0r773yZ%C16bU8jR$_Cy}AKce}j|pC7+c=`RXkbC_Ha58p3Gt@Jn+c}$Vzem9WTWs6iy zuVn#qF))gZ{0?ViG58Hn_BZj~-)_W1jXUD zwKLbC27Key6Ul@=8CG@aUEIINKZHsXZdYP0=H(sQyTlCJ8K#kj(7BcZd@{B<7F)i>Jajv?sNr*lAxXTHlBbJj$ zl~7`S(_X%)qWtc-Z5f=-^D%)($VUBU-)H+=Oy24UG=|Q;fNC{nqqSPOEYV*Q@#45v z&+Ks;lkCraZOJcs2bnXaQv1rxt8l3_Kje0GeTX6*CA}zG9tTAoz9U5r7F;cm9q))b4eRBq<9M$MH6(ruzf4B9Mc$epA zI*@2ZMg$|0txcxQG_&3JSjXy7GvqX5ncVq?FTUmB?v+u8bj=uyf$xuaVJEeT=lF2& zs3IlX8tv-zO{%y|l7^q7UkTx2B~Hyw$pa%N-l2ke2aj#)o>^olDT@XAhHh9l@g%i= z5+D|GJabR&s0|?lLHb~<{h4eQa`;}sttg!j#=CbSIEGm~GDPK1+DHJF;z+BqHfp(g z2X+gChSq9P`4MuI9&2eUjyhV|s?bH^mS1*F$EN9Fn~7DH$a@>>=CV;yiUWcV2?x_9 z<<7?P{hBj0Mh+&cI!eK)(ogrdH&$eLIx;7AWwVUdKoeUd(0A4D@ikn-j3)(Z6+A@; zg@mIGrQ~9J)X6%lgy@P+i)ofv%|%#QPtweDBhTL`q>5iuPUZ&i@WzbTz$xh~r! z<<7QI(KKKC?V7czdE~5@i_ucZxCIqJz#dmth&K|I8cXPZO7CWyVj&f-27q|~WqCLZ|`_|Tg2cksy zm4*rXg8&`-DAlq##E=s{EshL3(gv9HJ*QG0@s}DhDBj@`jSbgt zMU&YU0D%D0`%fHSP#nHCi{WhBw^`o+HqGT`Kif;kZAv}nLUTrl&G9KWdb3fbrla3m z&dNThPcUqv_sXbVDV;v7ST%&zWi*? zQ|$F6J(NA{8WW&O_7}&0Rn8R)?|LX`$>>oRCFJm7d*x-i$-eSc%M%F3c|6B5HfcD+ z#8er+U*|ab6M=W9zkROfKLAv&fPb7JaL2901EZhDdvodvvYblt&604Pl;v5TrJ?u* zzNOUkOI6HWfCp$(0(}|A^yIoot{%T0vx?0Xcn9y4o)0X;roNE-!pYjd{fL;`ACsKJ zd#M1oTUqFGL|A7jEPua5zHts(?|QTWMMD8)$m(~{l1Qc8lSz=GFd&zxs)k5b6LKSl z!=pLA4*-ZM`XpL%D5vG&!e`d{m|Ia23nNQfWaq2%B7-mJ`2ZO#-iDS>V#scqOl*MI zuaU0GR$iV)_l<(s3#)hs2E>O=)M3RmLkZD6L+F+`1hz6q5p+b$XYvII5H+#ze`G@k zU$%kICAJkFlgyRyPVpmQJW7`d)%y~{uRFdtbEnztL-U*zAU*eOWZ`?(0iZ;Vk(dPbU}^YvDwvU zj_cJh1aL62RDwKe2W73ZdQZ~%dtJb)XI7>v1wy@Y3bAMWbmUt=S-^=)qDOPCxEA#b znuNAAWxTsnPlXlo&-|h>K8Y~a89OG_w~tZs+lRN89oT2PTrsj5D~iAI9OyE*Y5{Ty_~REWYg%@jxVKVGZ*ECy#Z zI{d|H9NK;Q6L9otT$Lk?<9lKt?gme_xd6YuU9=m^J4ql@y9NeK9!jcYW? zs%!0#6pG6Z;3r_NCDdJfXIPz3UsP8C{Fat~}cNxg5N?V&5wM z3c;}2N{I?pV(R)qT@?p}S3`mx`AI~6(PfFFB(d*&MDmj|#syHrepolNXyjH1GbQNF zcdg6r3qXaxy??(zFG_yn^48Mi>qGLL+h7Tl)xnMR0PAjfv#s)83-i;&J3tq}5HzRR z@OX&cjFlz4mSMBkS6e>V0x>&sq3o%p^Zc2BHN&OFame>1{|b??1#QV$VR-qYd`$iE zD7}!sx7F1^?7LuOYaup4F%W=nj_}{ z#q=%V`Q)%V^b?T)WN2P5$;JY=;s(MrZey)+--gsE(15rtqM1kcwQjWpcn5k)0EM-f zLcUUnSA0qB%Yv59=@BSCzMn1Q+m&>kBV!;V^Wrc4FDF5gmE9YNrpBeBJ04CaSGtjr8Bg((I;d1qYBHT75HVyLyhw6*9! z8o0Xm7l_(a^OlqkMc+>t_H1c+-kRf7*+~NWJQ+FQ&VF-p-N9ku0f&h&3PJ`C`eF0R zO&vCIMc4kLX6-Z$#Fym|zk7V-2rHG{`<8ZpNR=#E1us=AA|RSF!3?0=`kvp$gG2Cq zgSm_5lG3UhmOoWz{Pi@5$loVh82ue+F z*dm*fFnmmO%0Z37VyLr6-Jhg1`l(WzWSykk$RBdy@^c(gf6jZ=Eptlqo&sY=1>^VB z`9;uyP0Zk)f}QQ+)2Yk(?*vI)I`pLPyOl6ki}YBLp$!_@D{EB^P#%vG)RJkF>+5mx ztYRbKb8d5%`PCnO>D$EnHI#DS`_{yS79=z#A_-|Cms|#idNl*GZ3N!~ zW5-+I7yCZwKr>!e<#)R0DZa4JPxs`EX)I7x5^Rm+u+pV>@4x7UZ+G` z1}xm_0TRH0^eNpJNiPWxP3YxKK5x~CD?e?Ke3A3RvrFPkxr1*umh#`|{Qt&*3I`JF zdZ8WrOeU;$?*^<_?b?M>AQ`X`t37fFN_R9ke@oyfjtobR;?pbi$7*i>NJb?C1i;cO zG>_;D9WQ{vQD+F|p4$NeZR!`pl;^fMQ8yx7TZz)mSeyu-_6p4a@b^snujfWQOIAuQ z#kKfw71xy!PCCzb-IY7Qo}3rPkE?jl!;xXd6<{BS)5MaUxWFmIapFqUp|}#`ulA>V z5hG#@I9qa)ar$oz9LH*R$#JDpKoG74IOGfgYQl-7!IxjI&>RThIrQW7GFekR1ptwute5Baw=%&3P9?QGxcz6G6Qfuso<At{V_u@T`U zNE>zV@EHO@06_2wm2)1esgd4s`j5_$Kp=oWd%U|Sq=C@h#R6M;RVQ{g8UQ>9>|hgF z*mHj~seYz&6>osfR#l5X>0 z55wSQAtx~kD)%bFeqXd1`AuyDF4q!E3O{})M#%bU@>exCAss-gbW5}S>6=kXVS3V$ zVnX{2pe*spwwN-wz-kB>5r$u^sWt>u1`AIo2g>mvfndso+heF;a_~5wn+2j6Mt1Wx z5Zv;BNd~F%@fDi@QYBqBG4SNgCNSjAwFpEU@W!)Yz8FCo$;eUWx!hW!;aL@o>A;)X zvW8(&1Mc7wB2aiQ*$2bo=fDS{VE~%H#YA6$*Ewo_W4}VCQ)HY_{Snl_hW2mdCubvqTE4EX^y#osGsytnSjS( zkxDu2%EC+h*PD~te4X!|`SgiCFn>uN__>Ql$xk%qAb_*cgz~Ts>$gh)ry6}JJH-(4 z>0U!{gij#2-^$0I{j5%Qdg4g^ta8;g`e)w23?t95C=&L1*%_*o!lBa?-ggH*7tKI1 zEE*OOp=c*V=O}nuzHRWGc9-;VY8Z>a@s~NMda~{=Pv9{cd**HKKegZcR{6t+bC&OZ zOQYUd%OrJu`0eHDXIv8qqQ0zCXT@x$ZVT5utT?==y?cAnA0Ou)#!~N>(o6!(-S_qXm}|hoc{BXLmw1 z0fg5!BivHoNB7-4`7%jFjtuQfRczKRh}wR|ar2zbuovo}GCQ}}<1c|Wp0s}GK1-j2 zsq#FJ=u@SQcW=^o?nsC~MhvYgH_`e^in8SIP=K^68g%C1Ly>1(*P%r);e=KmDB6~t zCc=saW;jnpnciARrEy?FUuWE45^zv)MhngF{L!L@c>q{Lz4bB52?)G(?~Hwfmpgk_ z45VDvjn;$AA+UaK8*&*vEoiy;#DyDNW<6Zo=km$Y`p2n1JPTB)azO)VI>YnAKR>CKPdS_sI52p<`K@6_y8cDF zj2uH{N9#*>>L63Ld>8!y+JI?ot$VXq>Q-9biO2Lo(T0Oju2`)#K>`Ut1VUHOSeNr? zbsBv-UL@*%LZ0out3eyT?`CT0s_40t8djT-b)Xu#T=`}%iszKWcI28Kt$@k91*VCQ zmwhxB%MUIV&bJqi5mq*i-y=S99EV2^sT=QjdGyEwu{ob;l-|E{&95@5o!yBf=%t~+ zq%`@l*If$2mGqD4;o|_x4XiLb+P%NS)5qKBp-nb9=Q+tVU&IXVxI_qg0@HIj6HAUf z6D(zfos=`}@RCJW2MVC&p)3Lz)^)D}xG(Kc_gWO$5m^BLJt9Knr=&qtzg6~nSJ0f& z6-g1vTaJiN->4rpuZhqo#l$Tqa74Wp$VqrHz{}YV&a~@0_Z~gaIG58F+jB+~h|9bP zr+fwDK20d6?*XdpQ>-f*7qp}-e=8uuO3*?vR08ICh;Rql^ZLY#_w@I;^C_u;c|?D@ z&HP>C{f`qc15vKRja?$VfvlhR#j+)#?|%5#RbT-t_vE(Xq@%oDUK3Xg&qms%eY#E} zoeRlh@RrWignQ|6&IR_(6^62YHL;B&9iH7#1#GFG;S&zvR7}dTIwzopAf*mfx4h+i zUGM}Ik;i&bDeDyo9Jhf(xn$lZvtH4!en=*LH5^cm%R4HJZIZ+h4$n5=`?sQQ_}2$j z82Iq}anH4CRSdH+$M+2QojwHX5pf;?aUQXk^bY>;b~VsoFV_E?SgA4vqn0q4<-w{# zU(y+J-ja0lEkX)J2tO;C#4Jx14QO!Vb+hhI-hy5RP zihmM61hlSUxy_1Wj3L>R5n;asZT?-d=-+&tf3jl!xG873e+}x7H28X8i9llisQxRx z&3VudyCCh%-S8R1Y-seW#(gIvfntR}IwTOdiuYH7I)Chj#U$GdTNO_Q=g+J@bGsk4 zhC~|H1U;zMYsZN+8LRnp`RBndjXz=b?755#g@9PS_qmL0g_>osS|B{I2vR4gkL+s& zRdQsAfC?;%rz?-hYf4NRc?#H+!E}Y2YP!m+bEySXFoN_9nv8Phzrbs{2(VxKPD0yyVhIc0)*s-Dp4`ivmU-T8&G1bS!@XV<3 z5pf91s=vKTZg`W`j{Mlu>w?GRHAdmtCHM?hJ_}(Ahh3a_!dSq908!e?7bdEe$#3(& ziFW;u_4_l-839tA=QH~Infvp~{5k&@s;GY+-M{AlRl?`L^b)@2`KSisT5(A#7cdB QeFo>@JstJ;suscj1vxmCPyhe` literal 0 HcmV?d00001 diff --git a/public/assets/images/ng-emoji-picker/IconsetW_1x.png b/public/assets/images/ng-emoji-picker/IconsetW_1x.png new file mode 100644 index 0000000000000000000000000000000000000000..92d5ec04e87ddf9ab44ac10d7adf53699ed8d86a GIT binary patch literal 12961 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 D%|<(C literal 0 HcmV?d00001 diff --git a/public/assets/images/ng-emoji-picker/blank.gif b/public/assets/images/ng-emoji-picker/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..75b945d2553848b8b6f41fe5e24599c0687b8472 GIT binary patch literal 49 zcmZ?wbhEHbWMp7unE0RJ|Ns9C3=9Vj8~~DvKUo+V7?>DzfNY>Fh|Ltj$Y2csQN9XW literal 0 HcmV?d00001 diff --git a/public/assets/images/ng-emoji-picker/emoji_spritesheet_0.png b/public/assets/images/ng-emoji-picker/emoji_spritesheet_0.png new file mode 100644 index 0000000000000000000000000000000000000000..1adfcc97de892ca13acd808b2d59beecd7d89544 GIT binary patch literal 739663 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�GNKG07Ey2dZ$y}rD$9}2QEiu3%#*cbPR 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

Fk3SJ^e6*2HH#~FyX)iETVuJkAXjV4b+c54*EU? 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

eBm=U^J3<+T4^ie8K z;agU1QMO#?axBCb1?=f5p5q77M+2WT=QY!P^L`P&ts zzv7B3R9Tj9?(OZB6NyBv-GcMsTytZ!J*wyU!9jM}Ur;*!eB)wttE+RZ8MhtJ$v@-q1*^0 zlgVFVhhE3G&kPL>QOmNli!QoId*qQvnlj+AlPL!d97tg2mwS48ptG}6$M0=Bc<|tc z*Is*#Uyn=O{8>fnCi_;DTa}f85IR{tC{AVqu$fgXD9`2`yeDEAq~NP#yx)m}hJ*Ay z^ax31y{Q{-34QFz8(#bOIUTB77Jp1GYUYMitoMFaH{sxb={Y8x!iYNeDTFEU_TmIzkdBS=s=0+nB5Qr0#5Wu z$?Y5CN>@@MAr&3Y%L=af0KR?y+Z~|y1GfNc*$>Jp3Epaxe&s&9#iB2HW4`_x$n*Lk zyy8p|n0{bTj7ZXavxk zQThFsWf;_O1n5eH;nK4bpj&wu$vNxz`OcUKm#mILUt1XRW>up$xBx(o2YIXDKmQyn zgV;kE27Rqz*toO>?taS9Ky=TA0h)&4=CTaYww^Q}N z-0+#-AQhmsti8{fK>9HTu?`jbR<*#Zj~JRKI_J(mgQQ{SEV2_3WsoSs5+NeWm(9Bn zWJ!U;r6F*^t^iD=B3sa;|FD^up!(8sP3TbD;Jy79LXnhUSRY@`&!od`u%+(;=!&MG z=oRW0rdUH43I2vR17&ep;W6_Vq?K;CsCNVG9N(vyCAOR;_#&s()DewqT-z7c$ON>G z^&26Y?g9JI0U#x#vbb`5m1buql|g#0E8n~EQaEbpP#Qbpx1W;ig3b+>LaeLDXRlY8 z^NnF)vs)Mh&>gfxYEK_@o_ju&?*A{%1vt021=27*(|%GM6v}nr(Lu&~L1O7jh%Z|O z#=bq^j-ijllk1Z58dy~~J;)xb_8rc!r+Dyr&_28$%!7OQyjX~(I-g2kvgIKBF~_5e@h`byk%%+<0g zLey1;`Mfbrtv*X|*Tl4_((#_Npnc;a>P{4C{&)K+!^u&?IbBx64qtqylITe-67;_B zY>3QnhoSF2PN()BT{IMawJ`XOmAlCy*J)YW3$dOA-q%r$QIcrvmw$Yu#DVNxWuO;S z4CR(r4F3^I&4<|`7*Ug=g3XiAB~RlkACe8Zv<-#xror2GdL(Y>d3dCwAe$0IK>|(p zD3xrQlU2w_N9+;kgNK=`BysR8#vZi1M}p_B9pXNRwd?KR8*DjpTj9|KfBg&HG%hPm z6&6W4mNMj&6Bk!V6F#~_0=9=IjJ5gUfM;3Y;21ZI0_bLG!tm^08Plw343Sd0RGb4A zi-aV?=_Dxg+JGFG2Fj&geAYhHuZ}n15hS3^LMlK5<=AzILhS7Me)3mq*D*gHlNP5S zyawOn*+2Bk?msTWgMHmD+F(u>p_Dy>1M7K6ocRPq-jM-@{SU%qrmkFWCZPZ<1L$?P zfgB!#V=wn5bCc>>J(6=G8nM(D~!hB$5pwjC&tcfRAK+w6|+Pd{Oc(q7>J8MJsZHlF;IZ#kDFA4n90 za>8&9-0){^Z9vyWEdknyW%fB z+xU`u?0@@q)dm=~$3OEIv3a0eI=$zb%h@;$$5fg)e-(6WJqN;zQe3tkeMY;SD4Hj@ z?FfN7FA1&hTnz0m55xG+Ul6CZ?OS0KO1HS0sNJuA_9w)4bB;?u4iWS<#A_%Oz7&du zdlG9GLi<%``wK2$x_**h$U9|U2K#5ICkfGyc0%&vWiWQvHahmu_C#@N`u}kh$1{6! zx1hgrqC80=#&JNqFg{mtbmY ziq}P}U=wdBE`ELRa;mi@d)#bcjgc8OGUK*}@wgfm#DY6jIFEq4nt6^`C}uR%D~*PT zD0hkRVM^HQjBV^t1=>mN>A2xqJF*~7=$>;R)jsbfl}MI7om*?VW|k0^DuK0{+NCdq z4v+qV2%;u<-rlhdpLsYpGM*jWf9D?rUeUH#zUMUWf^c1X8F8rZ+d(akWwm7Av(};d2@GN^(=1QR zjx%6eMx4u&c^>-^zNhHLLPg8I{#w=FnYkuUC~iT?2T?iWo^UPo_obG04ei_sr>x#^ z^UXI8DvI)jNF*Y1V7@AA!*?bHb>SQ3ZGsH?MteIKgT5AzH-N>BEc`~jdd{%txSe4b zODxO!+)X##^p|)PPO}u3x`?1vfM8?d?A6J-DkZcz+w)V6M5c%D!&~;y1Q)uq~_a^FG5D&#_GFxGsKc zYwNvt-F4TaS6y{g_Duuy-~O9FUX)CzH^gJ|dQ}nQVd{u2Q9)J3k|NRqnmQ9gGKEMq z0!&*9@Gk67d1xPe4-CEVBOmP0^HVq|Z6DI`O3(QNOp-$2PEK%& zC`h4hJcq?oS~x8lgjkoq)kWgLA*U31HjGc@#lg-}7h&hQ@xXxt%IN4Q zU}xElhUlwU-!J2F1@BBa_%*CYVm2Tc4N(FQjn}hc$g=5l`sRs=iJOOphE{ZTc2ZSU zufg{p+q!k@zux&KS9JeZWTPxoX@M+CQ69W-C)#Hh@%WW`$4$u`581`Q(!~ z;6U%g0sRr|N7l}rJHOo6HZLz&k&-~Vc37X^nnmDL^mCX(G|2fc8O7oB_PG{qc)UF$R&9MH~ILNJw zKnyEXkoB}E(KO7aD=Z3lPD~0)2v*HkVJuG|r&mC88W8s&&75eMDP+~D_I2qAEbCRF zv@Qo=vRTAC&2h_({I=0 z;t;eAgs^{5A8;qtf26VyRRvlbmH}#8bt_y@es6dg+xjC|tq^q$CoPiM>xWTK50fAj zSEI1Fbr434qo8xSqgur(&WRTciCBQMQ!ZGoZ{iCZV}M01^Wmy_7s0brFZ-Wa+qwdl zX$$fGn_RzpCJzD3d~c?$8W%Z&C^Pdx`uXvBphaRZmYqsMSn8P#pqE8RqrFSwTn(+u zR)Re~1}vBN6GgJdIOinBv;SGN@!F#0zzhR&FFoy-Nn3F)v@BVU!_UNf)nNBeaBUU@ z?=1_wi7|*TTnh5TB3~p=V_aR=eiHa;8_tmY`iT(j=?AZn$L~!5bsfA_cF<|AcjOzS zXZ+9bdOY`A@QTxpB!`}gMAaW`{>R&Eprj?^ttRl{5P=I~t?kgZVhzY4obxac5d7Q- zZf#MNkp{aGuxGW1tsDjT(l|5{g;=@=GCN1p8Q58knkG3F*VHeM5mqmx#DY|7&TKqIjtMSTu z82=5f=HpAS5J97|kRrsJu-nCh(vUN3ce{^@t~82m{gOEeZ#%tF2i#|L&%V3pS$`g4 zt}3`3_(luqX9}#}vgVHxuOe;Za$Rx{8^eVn*iPQFp42V@l4d)=Nx6}82S7=;`R@w78c_5xNzo~@ z=6R7F^lLI`uQPlD=8F((+X-^l7)UEbAoE**MFgl9DutOp%-%xuM-O?~dPCsQu_#4Z#K#@4`A%iG~d|5dD%zbN~^M$|9a}O~p`LQ2o zO>!H=cR%ojInUq=EEc+UMbJ&`0j|9rTlJ}{hyN`Irtzf9U$u|@P2HUM80^wVJmC=y z$kmaSsGQuq3Q`|92YsOkkfTNJb=Um&Dk+5T&LxTf(Sa1mAAcu=5>d!JwyVd;>DPOr zS74OhrJw=9=l4;8+<C_Z8z+asK@Ilmp$*KKm@JU%#He*A#$wD*^eF`CPNl zRG)c#JT)~1&pr2?|C-k!pU=N3;!JNmy%~;9{0VVNYrwR25X;Saw!YdE1jRKS9LH{) zCoB_)cu=6x5rMHjk%}A9n^9XOCFwCHd(6>dLM#!JR0Yd=z;&GKByiSSo>_32Jwlim z&Do{r+)P1>%ArrHLMW*N8)Y<`QdQ+HEXE%!iR}K@_75#RW9bjtQyoi+M}`MFj~s%< zN*uPKE#y*k4$fWt0NvtSsc}G1$eAXzh^}#3Ie;02&qrQ=eE7H_qNriW#PiIOhaNA z4fuABG-r(jIZkZW>u_9$V#6sRLFT^IX$4Si+sg6af%5!tl+0c>HoIeNJC1+C^<2^Q zyf{9mFeY5%y5-z3$6b)keoc-iI%Nr@sK?wt!k1hQ^ORWSTeoiIjQKxS6lGbJIUm%V zZ^oW)1n5t+Ali7Yk%7(e!e#({@bguGo-fF90R)|3a8PCleUj(k?fKvfD_gMLXf=^<@LmRYm(8|-(gf=~A&B4X zT(DjFHTYsdM@L6O)3j^(uD47kbH~5_>%ZRoiBEiD;td1z|8(O=QuDf#H?+6KKBk~E zxp1C>1ImNpBYPm;)e2&CK1?2d1*UQ%;6&1(?|BkjeGoOtSS;3uPGa0N4WF@C8;kcd=A%l!!T~ywQE%w7IiwZ z?-1lB$ItAHw|}suHJ%RRcX%R49ys`19)EFwRfzI#6R^-1RQAirKg$CQf)P>#n=x*I$4AtD}5{rNXi+?%SS?&p+$K z3wzJ*o61c&cBudfwM|ZRFNuab`lx4fsTC%doZ`g>v)=Wir1axIo)~@GCXAiYYWFH~ zrmS330u6e1Rc-ewtjM>qJANPz(Xh{`(|7FxedjCSh!rN=TbzUnU4tZ=wYU(D0trQY z@SAWDol$7ELzB&g-qp_@KwB0AsGSwmuBFo4=FH{TZ0={{eXKn5{>y<1o-`J1FI7|^ zqK>XInO)XO;OB®&bD$5@Vl=~TA&yQG044RAb#qDiTIyDq?)y}AI4@_^?VT`xj=zfO7`CmX=RBJW>xj(NsT>Uy#}d=tn185RiB=} zMi&|Fk_0lg2igUV5^whQlW77Cq1G0O`(SU@&Y(kEN%q&kRe~n{wTT8!?ZlFn1<<2* z`1c_u#jra#!2dP<-YjT#9Ru4d1N*K$4I<9Bni7FAX-dOLDlw}Q#UP1ZMO=x*u>D%V zL;rvnMh&Pw*;IP$IOmK&e94&*>Fn`OO7Ye*Fkf=!{N7vueNE~nlL4+f8VX0i%uQ>e z2X*a71#C3}X+Fdx4wPfu#gk$aU9Vf%D=z>B7k8?jbmjNBPN?HT{*~vUw0{?0bQ<<7 z>qlm?Z9Dk6cYSFa8WLcWMB$_8;L3@`%OQ$&=HNW#{lulmCF-87IfK2I`0Z%>iCjZb zY(k#c%P#cLfd8pTAr6=*G7%xHMSx}vuyZ9bvu~tF!dfTSE`-=X7tlj_phXKx*@C$D zxgF7?JNK!!X~}A59NS0p`%P&w3$Oq8FwS?HkyXW zrlB7A+2d;AXhsRQ$7rat1^rc?oz;ND+jgtNzu)b2E}mZ)Si4-0C0i|Gxe%Y1g5uc& zF!IQbXlDP>bW2BDhRD!!c#s%o!UScW#2mPl?g@&+sWKwjUFj91$9Xmv=ouCFy8Qmss$8;s#G-Zs85ru{mQ{9Z2SSV^&~clLQwz`TWIv*0z&pFnJ^j#}2kS6S_HeRGiG@s8`pAoPBJK zvpstu8_}cmyrd&v+4nPVZ2EC=ZAS)%rY+Jl_~yYV$1aq>{soTi_gTzd9>zM!HqKub z#!MxQnFM?mLq16>B+20MzkT2eV+;^#3)p-o1ZRypc(Y8;ffBRFOlJQaZ{ES+@0o`` zYcvCCiX8)qE()KNm5>}iXAs)ovl8Ptj5`lzfs|Z7rvR;A9xwmX(Wjg?LDpnQZax!j zkptPMULUYZ*7f+M{e0Ih_KLrh6sf=E>_KR|@C=aAH=;+26=0q;>~ySnwS2*$V1d-C zK-(o}fHPSD_mNi;x?cKxzH`B&F#7nMEP5`*(ACxDVek(-cI<%19(xQfyX-O_5SR-f zKN%4IWI_28y>5Ju$C!me0e-x|HXfPI6(^pid{@zBqefraP5l$?Z7i-KONEX;5aqX*|-?6YkLhM+e$ z4oQmfAU%ln;w>yqCmMNIo+it%34abWM zKKC23Gu^U2-KE~RVqSPfe_Rw>!evNaz%qt}MyC^Iv8E?FM`npV=03+`22QSNjR7nq zvWP~1g+RSq(E5A@uG{w1-tWEjAid#QV^k2b9z(n136*&SYLP(D2F>-i#}^XINk&DH zfPA|9oz2`m0@`2>q!T6tBk_RjXY(@8oU5?MIVjCM75$QBA|Wc*s4vIJv&m;cQ&pp~ z91Qn$on?;gB$qAQ3cGflJTY|T%9YE|7G0*4A2o2E<6F(Z`9}Tu6G_|5g74G;yw!Xh z%^38-B&Hmo=Vj!J2)eHKVOih*r7wNyiLZU_YbWiioi{%2J=xcvz#5=y3h%>fXkT$Ubz{@@`N(HW<%9DEXWEPUoY-U850Xcj){*~#T zp8iyOyDVZ^d6sPMMCg9vR10j^_O)>d&*+Omr@!U9DsNJeSMenmX_e(zHa=Ch03S?z z8)pO^r?$2>+L`W3jwDB}h{U3+vEkm`5)R+?+_TS~R$V6?+?z|K(p9^5?c#|KEG}(> zgZusmAAHc-v}w};-m$qs!VbmR1JOAy#ld;Cx)6ca9sc>xf39!bxbb1zwttz==dVF$ zQPwoAM^)A9Z@THG8}NAJfu2W`7{I3_hIgC?ESxEYeX&aFW3%WCkP1le>vvW(FI|}e z3km6tSn@N2eM_A5!aIpfVLwybgGF;*HGXcz=J2gPQ*Kx4*ps+iURBOE0}T7K=G}kH0m94_@^3 z7y~^IY;Sv_V};hY6pDuqgMdeTo+IF$o0uLCQYz&K-G6l>e?*hxcnC-*?dfalb}7$D@c)0vmYzQ*bb zPpV97GCTK!1wS7=AytQ>UFT!^#($P{JT)gSm^mqMeTH_HVT8}OnB(VU94T`o{zJn{ zD8{sC7hM7JB~~7Kb7jT^2yE*Ql&dCFL~E@YQ_3N+<%@tf0@hXhA&{Vz%>s)CP*B_9 zQY?ZGNS9ZFg<0!|bCQCNrpz^fnJs`*$!khU-Nx7&8=M7X3s|$IB^K0>$KXS)II#}Y zE0z-y_%>8TzQVe%pvxAsd{!lv9X;jQ>xZUI zAzXnvgx%CM{lw7%XEX+iPa5h)NW;PaX%YZbovTP?{MlxC^9lsP@rItrW^zIVH;%CC zB1`3*hqjpDA;}W&XELutU6YlYNa2bVBG=XC^~z>(PH}-YHbCXM(N^+$^YydRp?#2h z`DvV|9UVV*kHgq~AN%#QwSY4ogMOL7^|BzOV_kjFGPo2Z0p~reFV}}Ar2g7<%N{KF zn?c@i<(UT+JP!zVS}tXQb=4q%feFOlkLJ&?0>`+gZE$iWxj35biM7R{Wl1*((-x2^ ztiR>ZSMGm0KE7{AZC^T%c3iL=w1r(DYhfRRFf&ESy*>hC&+Jx4f4@i6v=-W`h6`*Y zKfq^lH5R3Lw-lZD-62g$$Hm1Tz7XPzyFqD-`8i{3oc{|$<8bVEyTl{Uyc#czP043p zu_>e2s)LpRv_)x{{{11y9hvBH3dU}<7mmovn%N>dxjCf@cz@4dzau*Khk_?~2Dsix zu?Shiyh==U$Vv2_m*ITXPZ)_aCRvi;j&yZ&Z~rIw;KvliHv7*|FmTmRgqyA@OvxqVVWfy zUw~!rn*w233s2YzOsp*Wa+_s%J{w$r!h}bEwg@H*)!d(%Tn z`@e_Qvb>$7@9I7%y)$|HzpVe-UQr|o0ce`b%lsgHZN(fCtU9M?F$~VU?59WmV@{^# zKlOZ642e=)R3ueolv7va~x z{xw{F`Q<)%|3(4%H}n39nDacYe)!>s{aACwiWQt$=+QIR`N&ehsD`M5R4(w7T zjRAJ^bJY=hJb+71c+S9%fG&nV*(um*+PJff*2ngg^@2^l488KraNV{i-fEB@?O4`h zEX(gX!+z+`CpE57J(G(CrCnJ4-#&2bAFhW@f7<74oD+tyPjOO#=(F7eZ4xZ^taYfo z<_U3Ko=e1Gmgky=>yzhbB_9`SO80^WQrZl!$Mtix@ICySBbri3z}7+xk`%VM`a;_CkN+>A6(kynUk&W z6P=y-L+*0ya~l|EMh5{165Jx||7T%4Z$}^gO9j_@{Ib&{z4+$4B_6hI)9S*?YzbW( z+u&r*H3Q#ImA#%eaCm-Xp3&yvSo0=f(17&Tej@V zg$oy|@zz#<>rEabCC<+9ct&)>w_l1N;3Vg8P>VMLA21;S+>i(^26moQ{u{zr_mEs( zjHp;FfhQW`6Hf_)1GJt6JUGBFV8GFO5<7f*;lYX|4+rmc*L4eXIE4i?2zr&J zf!F0LYINJSZ6kw&gFiD2W6gmB2bOckYw_a6SK;R$!Si>&(Xy+8h>jA8OWb|t>~)jF zgKk-adzKtAB!G%=K#+fruRI#q|FVwGfqJD4%h#61xGr4oudHN)Ihlvo4!!1orq$)_ zKezmwydT$eZRSW%Q%Rb_%gDdS%ZyH5oYw(PEm3Unp<~f~>N06#Qe6lx}aTYrw#f!98xhL_PZ%8o0Y17xq3jBho^ zzFahzZ;t&8GbBjgCvaRXNs}8jGwIK=Oc7wqALod(W>57ut5Qd98cH=Le)X88c3x$1 z6&-V@M0`+_R*K20j@OKv-}GkHr$-`9#8n#WNa`1$11yx|$3Z1wO%=PYAS|xW#23mS z#vJv-k8lxka0KRS!%IA?W~GzWnvgVE7-|5O=xm(~=I%d1LdI-gXTko-%Kg(|Cb-qA z5#r7D1LZ`pc#m-Iu7btvWbMlwRbnTq(+RH4j$b>fFx$~TE|qHFO`~5&0=<^cUtUQE z59`M3=vEew%JN9Zm%*#{6Z{P;i$2>c&w!Pm;`ewvw)gFy%FJjR|3d^+S%N>qSb41) zjX`|ja!_J%pgg&*Pe5>Bw)6xui_)yw8d;5~;Bl(2ZC3!W`fG4zvcUOce2ke6Pmd0T ziENbEo*Hd$@ts+cDdD|x;kDnrq>aD2KRWM{vtix`-T^9}7fi3bvd0mVE*0YGB(yE> zha>lI6UU$2r4A8P`&0Ef9OISOc+CD~Nt_*z(#Zs3Fi+wLt6A z9*FiNVc*Z5P+xuU8E56?8#3I7whWP`nM>RI{lrwe0htIT7p4tUwQCvWBj3eCgdDFn|F%e zx^VaZ{^g0T&q;0AzK-8_4Yv&Ixumj$#u|*~@gV(N_Vnb08#u{?fhL7vUa}n&9H_ew zhvAnGv_fJ0w{Y&CW28W7lzHOW;x5u7-TtFZH}ia2e~RPua{>|iB~iriPVmP#mj+^vWx33I4u9-B-|hbB zqn|wT!=_S+|Jr?Bf>5%KGV(dwa<0B?BsZaZ7<*c;N|r%A4RJHnk-r zNusu-8`Pcz(2;_#_s@6729t@itz^Z_{g*Gw*@znz$W-YKL3-9uI6mb=ztLB5! z8pVLh^?eXpb7jgNVWa4gpJ~UppMC~l2q$8oE$Ib)cv5sq-j+LH>pfS)i2+d#0PuM0 zoO90cWn=EU?>^YHX%m+)ogF~u1hNv&DMNdK?0Xd;Hw7Svfu-jG%wGhoH3>|rPmYJ3 z07xziL#n)d!5!*Ty6U4Ll+*0%$1)mZ!^=XQDPDsdv3$l5N;OHAA zj|?*=3}elcEU#ZrB>B9ymU-WVk>Bq*-8N7Xq&>xAad%fo*9MW;aCU-180XB0Ye1po zfbC%a&bhEe%|WkbffEh+{doEE<*;<=8N4khmq_tZ8IE&cyl7e`l#G&EC=}P`^7-ZY ze15Ym>px$)_N+Sw&l=o+^A~SEsW~Eb#Y1vyLfw!~$~P?R46Pq%l@!jL7emBnJo8tg+Bpm2qAH zsw*;@B#=w2Mt<=VX1jc+q*b)@r(Yl3W9S@u1?(&FYCDiX5~SJdP=Ai^a`znWkXQxN zW!n|%`JjC@Z5xm|Vg+(MA&pgHTlD7?%?;C&#nHa_#V;m9q0sqwB)Gp>1?Q`}^No@= zjo^GU27NQub~9kU5u^_S^+CWsxIj<^>8oHb{=EcWum7vR`m5)@@r`esRGlr)6D5!J zPyv#4?0_n}XeKDczUe)I4fEA$aG%+7?AR&yuLn9h(61CVEPDd|{Lzhv4xO%DnH-=W zLt9m2&{uaP_;u#Fha9JNU-|pNWWS9deX}I6voY^yI~SavdAs>aFcmg^GMP+_kB`3} zPyYlOWU1x^=-)ATm8{C*+PD^85>JF6qA7mmUK^T(SgZrWp(yrzvCNDoLPZ0b4?@S+ zf@ZEUGo)Bqq=K*+K)wvnvw(ss3qN-a7YHe6KYEC!QC(GM147!>!< zAHX&Xt)-&$?M;ICg`-D??|JprSKl&2yLIbU(KO9ZVjHg7xpOD)oCQtO?!(UVWJUK+ z+_PuT-oCy*udA!eLMLk1v17*$&hRW7&|+O5LdS0#*Xzg5sFg~kSD~D+$Wc}GNgM?C z;5GVo?AW29)0jjf^69_+>%V^K>tFx+!8cNV4C0d_qnf`R+jh$UJzwl0Uh_?B0d`{* zr1x-OI+pGCZom!$ zzsI-5^Rn_Xi;QTz4sWsrJ3!F3ka&^k@lU}jOlX`Z09ku4f<0jiq!ob7KBKdBy$ zEn>|El&DD<^rcr!IrT)@SOOdJJ*=zac6vjz~p*=kG8Q4Q3!qFMyZH2vLY_$UN@3J+ao3Xr!NZnwdnK2Q*S0kwDdEqf@9`Nm zq(mc$xE$$j1*tUx9{Lf+SPlwDCi+T+!dlaIE)f*xmfO2N^u(u+{%2jk`EKe%3K8WC zBqH7r3Q4QOS}Yow-%i7+79Z@irixG;nn)MNrUrH0*lfhiZ|99G{!tmbC&%*)d>a1m zd*I}Ccfl#81VOx>h(en9`cQ(us7(Cv;DOEMP|)_}?P4zP=-;1(c+cc>H~ckq~;8yef7XY)(&zW?~&(${|b z@W}HAZ-Sk*OMb8a6KUeIPe>qqG89#NVtwtPE$9Lz83ihfU{9BLAB4i;39v*HjF1I- z(F7aEvP;Sfi+=3HgJ(X@ncxHSzGN2T?Px;YDUIZu;ult3wt(w)t%tMwpTeJ>Gq2LU zZ9`gAh_4ET6o?LX0xj5nJ^@+-=P5MbUrB1-R~1m_J0!#N+CVsW5X_g3s+?RVpV(;IF6UQFMbmu#`4!#cbv3r4Re-@ZgnwfX_*y-v8_x#JiTfG5T ztfl-NLkGI+MG$`TE1>&v8nI_g55}%Q=Pw55o$m%`=_+8dQuljRaQ=lCUhw53&OGx> zzpPbuXtf@v1kRs*EtPF=gX}M3uQ`2(`61XW&?NO-cxy&1th+M#y zOmKUWaf`!P>+3%BTVgndmCL=bZ2tqN zMfL{o=Wzf0{@V=GSmD~Hc4j&P2{{k#W(G1&0ZhhsusP6 zmbI(w^Yc2T4fEQmnhc>WlPXR%o!NnCpr3xU#2}8bMHt7HK+E~ANdRy!6K2>Pd$d79{XJm?ac)BTb2DUme`HmZvi%=6eOKpNq2csbgkK@OY- zHRr3qZ4j8BjXi(d;wPM%^j8qP558^$=z~Cg6{N=_ihrMhWlo-G4y;Z4Jhv3z!omox z%Nc{tX-hi{!W4g2BY;a|12wf%Xq zSfm`k*W{f2`+keS7zVQvdxbj3W zE}9dd4@rV1QM#o)p`ZZ|``erg*(_L&1Yw+9IoQePbCK^p6sT|X%0ls^ZUh}SGy^ob zW?QD~8Lm5>h|WHr_X(a0e!EDG@0X4c?Wh;JJLyP%R=>9fZ)@V80O7;0x$Grd57QA1b zc;g%rf+7(iE7(v}qY!EB0@t($%~I(LwquVBQu@r^ojczW;B>))1sCHaeC6)lyVXo4 z!?VBd!cO{c4?Xlyq0$%R2OfAJd+oK?-l3|hGdeo@gBM?Xakj)@6wg`boO8|(@H)Jm zmg9AK=i*cg@2RJr($OjWfv)SD&>>s9bLUQR)v8tN@b^Emb?erz-+AYqr?ds@0)FR- zkdPSFxT=l6XHVc_qHdi;M39u*_#WT6;W`#rCDR|MHU_*cQV95Fb91Z&zBf<~R{ZxA z7J`CZ@IPyEpqJxABJrh}j+<;qGq8#Cl*-ILUS?i)UI$*6$KTxU2*b8*4$^ziKKtxn z;@<Yb0-w#U~n?gn6!G$fY|%7@f{pVemLgOszV(F-KoG|>d`||DZ{8Pbx`i+cQW~I`3p^On zT`(Mt9u7cD(>iO+%{*xZNC(hZBOk0r@4?ylORo zo=<^TKO5`kTK-&F!1kQIevX?1CKQTpDOL1}ATT&igM~nSj$aaN)`mVhYwOkZ#pA(S z){F@gs8@h??GN(2TR=N(@b`E}&CUU!=kU;(Wq@16s)m&^JEs9$pHq!#jy5_Gi~dBP zfhGXGhYq%r%YkQ>>xaHZWBYM%e!?G8eBq&pw}3O~D?UhY>8DnPfaX4Dt{X@8gE731 z`)eK!_y6)J-2H*6nfZscz%q2vKZ{daT9HE#?ODLtv*`O+Ww43_%g*ZaSsZ_+CTUac zqZP#};Ng;^>)0kf$Tq<>*Q-}B1?H&0475M4r(1$&a?snBxonKUfzX1(H`v1AmtIpv z8^rn7Y=E$ZWjvDS@;E*NuYR=QQ8XYNq0qZ=Igo=>H1piPIFUs!(b__LHm-mO4FR1r z{qNF-B_@8~pr}KrBthSM*TUq(yXer1d!t?by*dxv1<&8J!p9Vr+V=IMIk}kCwt=47 zL+-zp`x%`I4SgjnC?8EONGs{hE1~Tjiy+j|g3gcV`my$hLGEzdKl0VWI8Pk^>;LNj`i-xAQGaU1%|9&KdX!S(bCl2&Zz8@^ z$R9o&)OCDtzL2-{pXz4m)&t|OofKH+F-P~9nDGTG^CimoE)Tbyewqeyh?L`>iVdW* zTN*Zt#b^|&B2B*G@0g(i#3c<@^~?jNGx+VJN1=VmGtiPS0aOvZ!#Zq#pa;uxHmsbV z2D0-QGk-M&?7-)+C`cx5pl9EsQ;=)%Fp<@Q0l=PD z%A~rW_sPpYd;sV@KL(b|f^*S(xi}Wk7oG&+zMtZKJ9hkhhjRwSYl+htpUvwmKL=x` z8JK~C^Dn*hk`IjVvhgwor5jEapwFHCA&N0zpJ|ppY`fM9L6+5`Z6x*;j=nG$Nj;5o z=GmFjxY8=9n=tko#ygWvh{_(@GgC1dj-uy;E$>lZf`|!GwEHia%v&oGDl$gK_@W#( zWl~@y%Ue;QQXE@*6?$DF?}sgdyq8OS;LM!Ld+shq!%yJoTZea0FGU zeR_IUhG7_BL_|bHj2IQ8Q6t0^A!vxNU-ZKzN=!Z{t1mH;pW#(Bf-!0|iV{>3*~Bp- zD8ghMU>Js3nx3BCySlp8yPoqt&$+j%ZdF(J^uXX}YJPXBx~sbGJ@=gREdS?u{!f2* z4r*z%Wzin8d`ku>ostiFIu7Zs6r8?on@kR*W|PDk;Nf!s)YClpk`{-0*GLK_^p#U- zMTy1C0n;?!Qms_YaV6a(~(DbuL0P!K^%EY}!yHNFv3&^}R*|2p(7 zE@uzr^Ej@JO`>B{wbhRSzh{iZx}vI7JCPS$^f9)yV?Zandr8-`VC~|R^P(+FD_3cQ z8O9b((}wCj7^D31D}nK+1mO_kgiU4JuY+DkGyKB}q)qrduv&oLwk*$xr^ZDil04C0KIfKKKHrL?MGQS=6T+RTCFDK zTOF7Ws|}WInBFN{emUTNH5~Tsne_D_I?35OT@fWXqu$$wZ$GdqfPU95P~y6lNhP#% zySpfwq)UZ6F+PJn36o%_;|2UtLIku25O$~UC}0}oz0IvuF6ivp3 zNX<_0JLQB~bPa%wloE~$-7mK zD4r5QgH|2@^da5Qa=>QucS2?bIA}mRmJOEW5SJ~)6$5zDMT5UgR&5B-`@nG>#64Yp zhCb`+HaN_opcSq;zPe)e5TGZD8zqR&Cuj^bmfi4>^Be_w0Ui2pPfkw4&wufYkE*)9 z>5^Ao`p&hPC%1J?Slfi21mE_-M#GwB*BBg-V2M>&1e4ZX+ytWw*II5}0u9)AR{Yw3 zJf9KGQ-IM&#Di#oNTWP;4X{rH5lVsgpI0rA4mAbQ!X6irs_#@AEFh-Pu*my%75vIH zsA%}gW|Cn5iA7QB@HLAzcx-dYS(uU6lDW(}0g9q7u3GqTqP*|*Ok(NZM#=y=%5Jwd zjfOcj!p3U{SbooQV+t+ieAV$`yx^f>9{_+s`n70sR4aAEIFgHTPD+b#(Q0z<=_#e0nVSomLDG~u_?5w z^YdwR%L-{30-KH3Bbw2K3(+=u(b^og z5s0VBBk`*Fl^m;GE%Mn3_Htp7^h$aN+5*0O+sH?a^WK@DA9vem!&x0~QO^7er9z?=xK# z!CZQl!rT)R6VpFAayh!Mm-d}LVx0E>yav)6`#`lgD5&qjbL43$A#BCunjPyiYu|hxbZ;7@1QlS5zRcncgc}1~ zrx4q*5mM`W;K;2%f%(Tq!B3k|D^x-CR6JJz&}*tD=a5R^$PcY~R#H`*M&gTSx* z6?Kv$H5RrHaq5zoL$tbXS^6R&BIhOFf+~nm7&{ycRmbtGh8A;Ds{whUzBd6jeSLir z@IG+hfTX-R|NQeMos9fkX%W~%KLR-TxD1+#P8y9~mWseA!+v-pi0)oc@4gLSZfZq+ z$EL1kV5JSHF_yKI4otV*s{XE zdrdcN-n<3U=?u)y=fSE~p=Mk7z5^bu1up7aAfSDuDkMcV%Z6A?W)~Ax#T&TqjpAuP zaiZ&r8J^b_7hc8)fbSr%8LTm%dZeiWYA8FWEg{(jNJ7Q%+)0(FZ<-7WWP`-Qta^(3 z7-6pwU4aIb8Rg;-MnwR;1m%S+azp!r0cXuVVDwx;kv8K5dDh4Ac>urDWc8pINLn#P z6L=m0T`?6!EAw>4Ii>vWFS-0WqW;L@e}<~*GDyNAQlGVHfhhe}lRAb;n@|-(F@)Cr zwhwAe(-}P+L0S^O=ml0&UboVj@G6f>^%|q-u}0p zK;G!lp1~ibyusH)C{tI>(y*smg%xWtDWPN1m!ox}*h?-9cP&#J=9zxABf zi}*bhA_F+2Lnu89_l}I5k2~z5lIMNn%@gBOr*LU{7hG@w^}d`Sh6%bi^=7(MwN;}0G z2`L$EC*d#90rq_q*lJL4-3W=YHV$Ekma9Z^>O;DUX2<5%-Pg=a7A>B#1Qc-XkVBG8 zcA!1DEpAl&O&T_f@ zn#Ui1T+TTfN4t+5JND)M`}gw@RM+ayPd)V%WokIEiY#y6_r1f150}G5MLO3E|IXXH zcdxT`>((##_V&JVVq)S7G7`JHyLYBisjL6=Pyh7b(@#G=vFb)Mz1ajB>w|_+P1&TC zDjQTTDLR()kBK6+;qQD-QF8}u)cn<&`eWV2=k78*2l&-3wc9e2j_jS0{3J+FLB)7K0I`#;Pu z7rcphN;)3mpB9n)xJKUu)-*a=W0Ol{kYGz;UJ(NFO`C7AHhLt4hl4hjJx>W99-aHCXa@bY6aVD>=cW(lDTeG8 zsxf!I2)Y)lLI|=G_dMBUsCgm1wg;4nDzF+lvP7>aGspaJD~6oTp^l)rr|PMAcN&b# z&P930LG4a}vgn458~qkC5mw)8^_@tis8c1>lNr2aI@$w5g0H;h1#?V6|CvQ_%kp+s zh46|et2cJR3(3_wKc=Xc=hpS*HeU5I=-Sv1>anr}N113{cbq7qbq2j>Z6Mk_IR4#V zZY>_0yIycUP95g(SJ$W4_HJ5x*?ExLIt*IgMf*dv^w5xVRKj~O&mh~o1~$I)BJjUp z_sk!e_hDU-1n|bXikc@N6oXHvRl2U>eg;3 zRlI|*KfG(z*>$g;{(|>#^5aJ+)6A<>GwuYg&*3#eE?C%KOIC?{4D4zi-K7bLDQAOP z?`ss139Ifu(cNlRak1vW8@l^@QXBu^637g#0rhwV6epm6st0OC$idE30bRK) zsINZ{)RJS)KXL3WKKMt_&N-?n%2k!}}8$4q6-RXEd?z)mQ;0VR+K;X+o=o>y9eDWXICS+Mr`SW0eJ&*&Ab zgYDKrUldmB)w`q9K&_C!o*EN7Y*pZVd-i!dNdMr255h}d`clbB&-1eYk3AxNof9S+ zq0hi}-wCX{4`6b9RW>v`d_dCYu-*Y!SXhKdAAMAUN$uc#J3zl$kiK~SI~1>MZFe2} zcP-&1a$3q+m+aTL@HgbG#Vs-0?nx+mDyMgq%YJ#n6?`D3=;aEp_26BdVZw7zPh^_u zg1(kg;+xP=GPw)|!4@V%v5Mw%%8KXI&^sH^y7V{OaUp3mL%L9M!me!6K$%k*TE^VD zpy0VmkwdoP`1|vA;bz_Q^QT(g?fUConrg%c;xXf@Ogeq-06u!wtbxISA=v-KxYAr_}*lyUjH z@V%54Gd}RCfBfwCuK&OXSM(jL#ggTFxiV>Ss@_uSj0>{TNC2vLn4!vCziB2f;+l_{ zBB)dgm$fee`+!}H$PQT$=L4NoacFPLndBjdsc71pN)ys)BsMINpB%0`7e&z|ez+eE zqL`#z5kdAn`7>@n2jV++xmGJ#r*i&uaL`}pr=vZeq3myIN3o{CCEB{8w&o~_$g_Nr z!t33J*GlX3c?IaX=ca_FZLc?o745yjmK#IlJ=xzV@as4Ep1%p#=Qzp;I(9S~R<(m} zY?*ADsDNfF8nI&4^F+M!cvv$M3qB)iL2_5*78~_?~CgCSIR^ZlVjnZ4=QV;lDlTtd1K@{UDy_vbZ94 z|6pjS@cM~~Q?jop2>tGNzx(aETy7^-j1i3tf%Ely)IJ|4YT&!td0GkRk3L5a%A%+2 z{z|1{;bRV(Eywt>0R8P>d84wy?p7XGYVTOzpHviPP!k6fPF0wkslZ^5iH50*KfB

g}d9s^AbOy1x7N1%0}r) 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 e1tI@mfB^u_>aj7{QQ=bn0000Q^L^z literal 0 HcmV?d00001 diff --git a/public/assets/images/ng-emoji-picker/emoji_spritesheet_1.png b/public/assets/images/ng-emoji-picker/emoji_spritesheet_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5db1e9e7b7376814385ef353327228a87e069b76 GIT binary patch literal 543573 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 wws?f{sK{k`?Bt6gy?^sNtP32g`D~%!JiJr81R9 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≪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�Pl7^*m4mrmECaa_hqTLu=NM=J@w7qK^Vx& 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

_q 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

ZX&?5^=DZ#Hj@h6gUhgpbDcs&9xkEROP^pI4tJ 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%0D-ut5B>dkj3XjuN8yxB3qEtWXLEn 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 z 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

Sx@I8#odosJ(&SmAE807eGYfJN2>9O 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 z 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 z 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

0bi5uf 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

;33FG1xqfkr^p{Y@6f=0};-fwCd*8pH}J$0*)A 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 =Q{%iY~1p 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

NN>1oU-0mRFD+j_$y)l0-MTrm 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%0D?V5$)Nt zXXMwv{`KaKk3W9@Q%^nhm?OKzS}>!#sp9`bmx!V7TGFMBpZ2ow$)H|uiLU-K1*XEo zU^mkZnh0g$#qPjh7x$)YNxCq>6q@t`aCvwf$O`nxVGSLyixAX?8%{HL>cL%p<#T@o zM)(U~_(GyUVn-#h?|c9I-`|b%;IeEs`*$539e{R%i!JEBkWC^Gx>~IgxOF4m@6X(L z=jc0gx!grm;6dH-#HeDzCYK!jMb-Qo(=JV0; z&IU(kAN#(Ro)33cbK#61`C+h|&V7I5qfXDj^J)n{Vy>kF1uUk?z=RvYW@sR34*=Dj zBmbS&V5B5%GrDp~JOh3vaiUW9@}mTr^1h>N4z1lp$c{i}`{D7ib}@Kvn`p2T*KeVX z^)deRo&DI%>1564)(P*^ud=RfPL8|< QPG_ZS0VCM=jRjDavh8QYDHIGi_5p%Q9 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 LNkvXXu0mjftd^AT literal 0 HcmV?d00001 diff --git a/public/assets/images/ng-emoji-picker/emoji_spritesheet_3.png b/public/assets/images/ng-emoji-picker/emoji_spritesheet_3.png new file mode 100644 index 0000000000000000000000000000000000000000..5f259ecbd9aa9b8a1ab0eda54336157667c8be4e GIT binary patch literal 411864 zcmaHS1yClxz9sHDxZB|F4uj9&t{?7hAMUP$yW8L}IDELfyX#?gos*N~B-NejL@3HjAtT@;fPsM_|M)Jh3piM^32=?_~&b5mtgLlY0j5mNy$Fvzc#s+vGeIaxkqds`;Me`1*2ZU3PH z0}~K-cQ7=zHU*LznVMVL36fv5b&-==nh26>aLTdBIf$8BSbq0(GF9=ES2gyuHs&=U z7ZxHFaOe9Zur&o5lDga4*g5mL3zGkfm+v$EPc}0->AymN)`H~!B}!9HkyOmy$&{3n ziJj4yg_V_*i;IbsgOiJkm4TFvg_Vt&<@4lXWaZ%F+?yF+yV%6;A3WXb8};IV`s8=GG}Jx<>mc{gN=>xGlJ3C!wzWZ&S>XM@oxrkQ)go* zO9!B(y&dU4jD|+`Eqxx8DCJv9qd&gDJDJsk6O{lksQAnNj>xlmnlblc^!l-bvNo-saz}sAypi zw0E|!cOVs0;UcAxGc>le`zM3;UkEulz8`kZKtnrY(;wo38yxc5o zEW8q;tgI63JYr&!;$j>;5+V}3qP*O^|Hg{j8@t$=+5!KKHTmCI_Wy|e#|*X(pCyZ% zI$64!nn*g?+mimP(tMWxSqsa5DvFJtN)$#>7Rd+|6|2d=@~%gZeq!IknZr`t0xD4$8(>ofo6A zln~o!TN`6IE?hVha5lVN#IHN(#C^us2_7EZ<0jW*pXXPPSGXT=%wOZ6aC@<_hj96q z-4k&#dG_J6MOM>PWox~* z+Vpw*2<0AJwvHqg9o8$o77nM0>ym+Kj zX#ca56R&Gfcxmu(^;KtW@o{XQTS$NG{tW*EP-rhFRB3B{ZD{-65qWcgy6d>_=l9UY zjq}�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

P8u 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

wp%e2_ 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ǣip>L6Gtw;Fc zt(Jj;xW9f^o_+;FhbCo3>lk)9akD~ z&(Bz3RbAl94$G?bNSjilaNL)|ybW@SXU&Vg^Bf-Mn1sdwkIu8ghNl<0rS+W1&!2XQ-^J+0M?_CUqcyIq#nFMFN-Ej>ep zy%ca_71uluA;lXxdt^+6m5g*RX}@)Jl#Ew0K%WcH$)h9x2YBx`2%^ZddmI74 zLol8UR|05hz9}=4^^pzwvp~=z*f;(yrYGG91)~$`9l|K9$!WuTOb%YPRy&G1=ue8p z;`es%-hDxEA+D9Ms=_sO=*&2fR$C}ns%K;xFMYif6!jKSr+H8;aj<`{3!^6}Sz~E$ z%!PiLQ4k|Sju80{*M>Vns!DE2wI9llQCxTbh-+vQj$;$fA0O=n9?d{r>Ij`J3;9Aa zltY<%#nw2~Ydjo0Si-&Uv;&Uk%3eO(XYP_F!NF&Z>#n=*<-6~``(N(8_uk)Rawh;2 zqZHq?r)du2HU$fkkjdr(if50>`q0Q@TA1#2p0mPATftUeXGwu{{N3dZdXkX)6){l-DP zi29~5565;o0}{~?8PtUCd6hXOWUpIvOh^GBNSog)SuE&El8-Kqz-^zrb{O)>O&B(!P# zN?4DoejWFWjkX})ymp4!8NDSvuU(wX!XmN&%3#Xxw>?vX>TC<{-`#*`CT*B)Q2#N2 z4OxJ z;h{I@pnY9Jmlpkh%7|y&u`cL>%m8=7W%hF>8%z8wr~p;I5%B9j$+py4#iq9ZQ4sch z6S_L`pd`|)FJ{PMlR@91JbwgQ&;KKcZ~TwI$I~o6B~djoC!C{>o;zdhF8-9Nd3k8k zHKTvVHLIXK|3yeujzDg3fauHEwNu<9jq*@$)}XZSA!ucKAaUhS1Lyeu2i<3mdIH-N zaHZb2oXm6tzO;k!yK~jdeLU5#7Rr#hG+w@*I{KWB`%4+JE-E@ ziNG~v?bQfC^n3u9h3p*POQRx8M)>9iS(0`DKn1!`4N5O!V3+nlYvv%x znPFBE%rOg_S9!eG3SOA(@%fk|Fd(UgYalnW9^$C4>(4v|lW07>JT(nJm@mOWTu&`L zM-JES&U6y4&L*L6DglG}PRPb&(D8WGo{8?0yF%3#0=TZX&^?;$1VNIae|R-0l@b(Q zdj$@Sj>2QJ1$eI7fSG`0ZWY?>H)i6nEjI(b$qe-6vM6KX;M5xs!!gz^XA`cgtFtkp zt)(04pHLWy0XM9$0uZQJxK7Z1s5%sN1r8@dkQt{fD0vb6E8GvKEr@jxh%2;NO?-L5 zEvd>~un(86PojklzrpJsn^$fG$B@UFXgPk=zKVOP=J@>w6(7-OKou?!4((U3V71r3 zXcACvt5JU%+P!><(%S)5F(Iy+AmY=fg60-w8gRVDWQV}|r#k@!Lg1{$yYPcV(6{eA z3X4Endk(MRL_oW|l#8DJZ{pr-fF~fLtveL00y3q$s zq&k^wXyKkdeQFY(-}Mq4J$3?pbpz6=By8NU8g^WBCFJuRcufkc&^5H0pV$|)XNgiM z%eEcmz!at^KEb;nvCWJ$>Xe_ zD}i<46E^@yRiu4=plsOSs#jiVOKaAcdMagB8V$Q#EJCx<2wP>jIR27un$ei(CT4>M zELlJIb3X^~e)qc>=tc4A7hil4o_p>&K);^FP$+5qiYu;wn{U3EC5}_|;hlHh319o# z*BEo;r7$*yv9ndHR*}!cKwM(BqjUf3zy2${_S$QH z{}WFsHzCrWn*oPP44*REPZsV!6Q0Dq{9sv!LnxyunW`5>-J4Sq{6eP+Db(#A z%8)xziC<@w@I0lqyXXbU5MCT#t;_kX3s&Isg;k~ z^8()2%`pz%nTx^A85MFU13s|64=RSunC4vaAB+|}Fj)ajmV0SF!@WT4bF>BtD5V(K z^Upue)&}7ye!R7VtqWR{6eA7eonZ{>a?A^@KdRuS>!bo8Vicn)@E2ZqfvrIrFEKd2 z=}m8ftFF4LUCB)`*H+N~D!87D2XL1@j?c0xv#H?uDwQ~?8IaWk^D|WR36i`7Nkssa zwZh<8(xFJni-C}_J*ORevPqaTmSh+G76;`Y+7YN5G_+kbwAHicW{^Ni7tNqn_{XVo!{>(5Jrr~ zvW(SCR_XR!=QnCCZRjsP^W{HN6zlNEe&tu%N49{1Lo&+_b;Xb$9l~J2BDdy`Klufe zWy+>X)BFQ;vF>zvAzQ2KP$^cRS+Al&fdUX6D@o!_Sr+f>$mRC`@o#@<1;JgKs|24( z#nP&6-KuuSI#rY;@w|Xe4;q9tA2>D&juUM%Ro>1~RYMaSj z`%_!(9mKsGw(yDHBOUC!TMBqt8KttL&*-1M0d_+iZmlT8Y^sTO!fm&z7g!>eSWcV=qJB!FgkczDD3`1sKuhf#2M z0=5n%;&*hV(v%(v3MzHV!fNOi1I$EJfJ!_KN5Aj=oq>p?$IpIoI|hf z;(oK?>RVH=>FNY@^~O-CCV;C5%!y%{Z8&F1R8}2$%wx4C%;Wmskx4-YzwnZ7!eN}V zYvLB9P^e94It$WJFN02;`)Wgjqv+hP&t+g;OoAhLKVL&7(SrtaZ#)6VU5`}Lx*)-4 z#o&A@l^RK>6CX>ZQ`ewE<%yQJFgxcvL)0I`Fxr_?e(*n_>mZoV8&{KrJK_g_vjPAR4@18-U`C%O2 zZTMV=#tTmd2^rD!B!f1j`DEaoWibFZ1kl0?Gx`o0H1s#Djt%=pkU>PCH5rUS2B3!L z`YOsR9`D~E-j6gsb-G{FTLcY~JRV~U9`}QkY>dB|BBMD9M4`dLf9OLWqAXY!kMG`h z-+hY}Jylp(J}}9%UadB(26Y2q)gQN?DNgURU?rm>6d{$(!_exruwnC7e-2T!%~h(v zjh{ltItKZkUKm-s4mNGt%qnwBwFaD;nuTd}Bitmb-zY#0Tf~ImetJI4T6a zlOlocB!AGE2y|NR2E0JZ5?3L*%facp~yZ5p@bItD~E=l$wis_gJI zSUZ?PJ$H_$Pk5dO4K@ZjJ95A6aE9Q*aZHk@;N`}XaRUVI9N0gPy50|1drOj*m;1Z)z2(*!RpH_~JoSMOeBhs7eDTE{k3atS z4wPej7h3I?~aCze!-}o|(73J?K8vBLbPs_I2y1+E8 zHa(eRul!K9<@b4}9#YiTo^++f9O9K9gP0G@U>tOF*f>Zg*yr9SZ`rUKwq3IwozNKk zBt04p1NLe>bZ)lbwzuB_ow@WvZ_t0|5H4-I`Em`OQXhlwkFADRy&FN#?EtA`7;Qce zYNaOBi}SGOkv{^nvLDi!EJ(>T(_v(X>W#f{@Uh>Ak)0ob?vb0(uCfDr>P(X9v(>7e z?JpfiRwS^{=B>9ZIDOy=IQraQgNlB2K12Q5<81#~mImcxUxh|tFKm9(AAm!ZQKH|6 zkpdkg-%0N~0ga){n3YA=XV$6c;8r#GyQgaK&qpbFSO!V-`<~6#Jb0yK!VA+a_}C5y zMml7$B%cD6Dk#p#Dd4z;s52Ysh$<(eD{rGsyfq`xj`g_oi z$O5P_lW|$`UL7d@?70bOX)aXD64++KPog3)mMU$*IdHds>Zo zR{+=a8YP)k2F6sdE7PF8{2&bEvXIVqF}s)o$6+v#S{>!PdSJS65SoXdg47jn2G?rg z*zmsbQX5cTE}dlY2iyYhzvt^5*8klgU`mGOkspFEcL?p+9*8L_OZ+CeN#CO&W(LPb zHr?r$9t5d(6NqXWJiNzL%;44vU^gpcp-BNjysUD37qmvd3vPNnz^{HGKy3p4???eG zfdhbZ%su`W;2nA#Ad7An_1eXKK#rcLrdWF$3w<69$0l)pLT~$WJfB9`)|*Vmv!$d} zedESxp<{rqkBMYtFIj<~MJ zqpu+9l+=jVokUqeKG^i`mto)7NqA^_4!&KgvdR#f0bOXvpf1}#Ux5wi54^oA2kW#J zjNtvG!!|9ni$&{#GK1RyOQcO&U%nH(S{;rYKL#&Oor2F!%)mj*ZwW+nr*zLxv3Z8$-rGbh$h_wG^D_`*w8-4F0nMTfFTK=+e|SoV zy%V^fP#q8C0N%b;g!kVbhkROqxFmpvzqh7Lkf|znnPUE>Z4IMr)k_5|0a1JdeVk2k zR=v$l7*IN`!#{nm2@mhK;8cmjb8@h40N|HyM8AKF!f3ZWqI;&|)|wAo2?q6U_2kHD zgRrE>Xwj|KJe(dYK;BUxVW}vaLfXe*Z?%)1LMljZ@g`G8@gyl9z&)?Z!hu=SxF(;) z*UFhmT+u8&zY+)c7}{x?jrL(3>LrwIRK0JTEFn0WH^}2YPNuSKpKA3Iy!6Ve@Q?rW zO&C3S3YwZv=}HOA@yBCu)wYfBfqUKwL#qZ@GBbzr(+!xD78R71Ezpa&$GX!XWD*g;J`fTs{GG>2>uttP?FPbyRfXeP zqkhjWQQ70#{@=%D;B)gDSg|LrC~NR+qX2(0f_pEiKnmw}YgZQS%Vbat zb!i!7aV5qILS&r#!?@4?@I(Q28E8MKS%@V?XyOST!~6QgcnyB7Zoo%}J76Fchpt3C zXszVJJld+ym1@xhdd;?-V?dEET~8ahk6W?~Rn!Xtk2BEOY3H|Z*V9*DE#@i}**JPs zY#liw>SHH)oBAlDKB7bwF6f!-LYt+2acWPXJK8Lx6qyLvMpPA17L-A(v<%HmEGf1=+Km2&7iU6kJ&^mirD zi>fTCwIIdFzwwQ4u-D-j=z9d%(HM5_+{u74`s~UpuVmjRR?E;z0+rxt4+{l2XP}U(u}}=V#OiEGU3PeD8(X3Afm)Pf%?O-_B>=K{Pk2FzTBkB zoeXOeLJ3yK@%Kki=j=M&gx~2>V2vuX0-glgpsM38st9h&KVokHZUvr+|1Cw1p}i(D z=9Gig7W|KC4ec;Ie=5VO?ulLhhxpmE#U|X-s>6qSk}N;0Gsc5U1u1wzvo^<|3Q-h0 z!=eS6udp{Vt?4g(;R}qyJFLj2bw}&=fd?Ldef##o2S4~hRwWy*$*_X=QXe!9h6mu@ zKYH{ieD<@Sg+qr9`Rr6dESc!VDdB*CWJ*S0t>Pl>0>kwwzRtlg3gnf7=a0u7{N3-O za&=jD+2Rb)z;OvO2pvm+YN-HbKGT+l0w0ID`2yU(uK+J}-wI~3cL@*-=dQRtS0Xhm zN(Kv>RfoW>7btPh2Wi7Oie3U40QULKM0fs(HaxWTA@k_it<`$-?RqPqPq6)r9Lr5Y zDizNapMr&sWm;6io+5c%fT7GDk%r3u28v(g)kiqLLwo}De>Nkot{o|e-8*~Iu zu2q^)ov(pbtAc@sxMlbmu?aQt=+IE#L&mhQA^?T-jUw8-Y)Jj_7{68R5LLypi%ic;|sFd-~i`Kw~gUv?mo=T;7FAA}&HP8#)U3o|`iq^0~%!A_m98}6BP|*lc zgccBON*x^(!a(A2l?nc4ohW7`P+}jI9fnuNC4!I9Kih`ZlRnAZ%@XQ9Wl=3 z8_dzSpjfG)!i~c)&QBfXNdedCuGhLyIpxvGsz4_%1Jx>)s{-yx3q*8q((x1=dYOYe zvM${8MguCG4PSaF3AH8#Z!FMFhtb7Z)CYkw9?>b?fX+aQ7hwYT^tjsuO*2_PFct_V znpF#(Li}zM=Qx2z#g@1LBlx+43jZXoi4ye_LSqZ1CM67I09MYl)6>)4iTmth*<9xB zsZ>%Xqm5{A#!%D5uhJqrd0`k4WS-_1(0{82#=XV4h^TA@%_@m@#y@Dv&k52jM7-$bK1 zO-4Bx3uMfs(`lDLRWfix8kyxNZM-OeXPJJbgWhr*^#&P6d`Odn*Nr|$<7G5b9!JAx z9Uh0|W)fd3nx@%ApG@ir$717?$Ma{Y-w4V!o(!yz#-^{YZ&PPy=UebQV`!8Y{`}AX zT*KpI9w(C(>2$r_9~f*@9^mK9}~nVp4Gr%tsE zBMNYxo}7dhW%8kZoJKiIhCbaNGN20h`SjE@%P#W_-R~{L`DUlcD(-@WFqU-f12|5= zek2RNtwDN3!gDD^F+=pZ%mDF$P|Dm7dw}@{$jWIy-_Vy4)w#mk50C6N}*fvqZ4AKZ~u@^W>c0kWsr$8spmpwK8;5yEH^h*~3 z-qM2{Cz5MBcI^0FbP!EkBXr9C(sre19YlAaNV=UDOOnLv+~c-;izrfw(V;; ze>L1Qe}emV6RXT8dikKj`$ysE(mB?yBbxXm96T_`+9ps>zYBMOy|W!(L-~39z3+YR zKcel@i85k@l6pdrI@$|~nd$`Aq71pcuN&TW=N<6uQ;$QXRAO1ttoPknDktgJL>o-9 zFr7)m&%E_5P@bQLUC;aw)F8Pbx(}lC_T-zdS+i#BJ@0wXS7@vklB~4IWR%WILzaqc`aa&1=!>=+n?Y&yP#{t*_a zbeC)D=S9&7FH+(IEBI__V`W%ETYG7r(J9NdCN#SyA!b)$Ad`VEv_r(@D5)>Cr|(LS zcNu&95_3h&<)J&Rz_$wn&=5AF?Uw)^Wn`mbvH;VuU0(#ZaR_>P2iq(nwDyy6VgyM+ zwNirVeg6cpcpj1+tC{nBIg)>g$PnOuLn{~FnHrLlsz}6<0SwMqBn9uU6o`y&j~}MAIm; zBnUdbqDXk1BD_#+!KYr);P-AogD@e0{0B zZGdtV9gO%e-m@6aSv&}~lHQ0zCfUN}Q3uy<;ub(L#>H{(E07dpknWDd>ON}yAVaey zq3tH4zTqK>{+%pQ-$VoN3-t;lCKjDwUtdXjL#VG}@X9N_xSsN?+DoSjOI>HSy{?x) zGjd>}m|G(shSrSeF2_D^)QdIIw!Wr~z50t{x`!7NS!kR(0>=C)NN(T4)&ntPQKb=G z69u=)&Kw>Z!uMyPdi({DGd+HVBKcIJd~rD#o?l65a;!%qql;~vc)@2A%jV$Z$uX8> zNtGX@A7~sjo@A~AjERF#JNQFL4Q>Y8Xn=?7)0m&AS@S}@d=L;8 znf}n4I93klS4}Wh8_ruIoT$yK%t6<-+fir675M=R8;7(1$?-+3;MwZaZp9 zbQlf&)agkWL;vfMnK`(>+yFP3fgY5va$v(y5WIfL9m5}#BNzufDbfj8=ee?71Pp1oT5JX6Jp)5=Il$|U|1jkXT)#3Z~DhN=6ozxyTR(+_I!chAt8$%BmhPQZJ$w`9S-M>Tlz zs1Eo3tO)D-C5Yj?HA)Uh=OfLI=sm;`k^{v#(0`2O)GeE5b2eDuu<#6=3u2Pl+@S7-zk#f$M9zXdwpfm1aJ zdUoCpGu4yOr_DnmE4Qo6LZ+ETve1iKxA<&)9~K%bpHCNtP?`_`zGwCx=a$5NX-Utb zF01CR0t-#K>fzn~{aNO8TR)gZ3iXNYr=T&zuPtTH_s0#vl#C|*GFu{?>g zalQgvOuV??p*~|t8M;Zjf^Sd)xFdonOQ>6kqS%G6Pt3#LluXEUbwjrrXUWDPgMsa4 zQ2&+Se@<55zmMcu^*h}*sa?j*U9@pS_k{L2HQ+wgY{8$OoP%AUKyQEE?|a?hhj*7;_1aHsG@OE(?JWBpV|CH{sT|3(^LvX>b2S3?TY>VuDoictx}deQt5H7eR2mcU}f-@lm06+YFHr)u`r?>m_>W+uVz}XTTVk?KDT85rJ>eJ!57hv z=`CvTt_~Gth<_IH9|#X}{KSd0W%)_S^dLW+9t7MHWj3t?s373^(6qm34}AXfpJyO0B{D?UC#@-(vxgsknC&6zDIKy2hVw7=$8ynv8LxQt?J&386op75Erhreciu`xoPV8OMJPXlQ(!z-W`_@gA+dHV(JF zH4QP%0eidz&2a+UptUK>xMVD2Fy?&3=r;j!giNu~( zt4RTTMkg@P*8_dM-OzyoJe5o^!%zx(4p1N9$x{^+W{9*4STayVx5Pq?gXQiAlfaWj=Ipth7B8J9Q#%r-zF5&G6`Tt ztr)lgR7I?{S~sH6pipJZ%{SltLAn-36YF_rgjK?-K~g688xfyb`Ysw9@4DrdTZRZE zWBn*2fLdT&n0WkyxEA&X!1$$uw|E(=1-Ky{kN-k4CX+SB`XPv}1-A?-a8urdm&Pgh z5rfWD5}n^!cy5-5K_v^tmIg&MW_uI?im@~tM)(_hTH*O5I(sf;K?l)p!98mgG!{~z7RWI{=O8}-UL2MFoD0e6Ce9WJLD#2)+1=-{Ls&R6HJka-}`42L=W-Gy)FI%*@nqY-u_N z(H)n|Wdc!adAz<Jf<2n`5m~!zwTCX%0I<9R#lgWtqUDiW0m&@_nw{O1*|NaGz z=P{I7HFmXQ|QuU8=GrnrqRY4+?6LbHx&IaNSCR z43!!g@Vl6yPnB+DP|eKFfutlDrR~uZV=Pe9fkqxxfX&PlpiWuF96Fkg_SCTW{@j^7;OR>x%6j%|R9JML7hXUn&%Ww@pp6=L&PD zW)JLDcMcD{*OqcGz5mu5ANtDE&tELhzKiSoD9W?n#kDhq=XiHVN4^`^xERtSF&Rhu zX=!h&rM>*l6|erW`dJmXJU6jF(>?fssZ;y!O(gTbl+R_v!QMDz)EG4Cz8t?$uz_OI zwVDTGqtr{q|NoEUfwoCwnAMaavd-_HU@PH+ytQT(xjS*9pLu%_D6~nFqXSU1r&VgqwDT(&H z3;fJGvwXAt`qDn5p01{4vuo3JlP}dZkYZB6;s9r7fsV$Mmjj8<_MPQq=ecC+C4NR= zOsU?4YSZLhQ#;k1-M58zTHxpz)=s82e-h@7KMwsp-OL}LU>*4jVUhrWR0LX0&&>F70Jp4d0K=JUNiKxo&zuar zTn7%g%r>VOsJq~O9W zTegTD9m_k%c6>8+$@u`$gpE28vF}vy+GdrhL6YcRWM40)dg?MvSxJBYriE<#juaAf zWzJqgl%NrrbTSc21%J;XhYbf+{KK{Rp3$5bhGZnebusRk3xdON?(x7phjAH7wHHVG zT4j6vCpy0QpVkh1?sI=SL$@*1sUqrtUjf$lrkERDC&e0|bYkB|*VZ?pPATW}9xWs} zmdQ~}Z6iuY53RwuG~U;*9^1ZE5JZicIyON$4VmXNt9ZpuW5(FA%|e6HL*q(-Ejg#j zQ6AKOBWI@PP)Gaz=(ZhTmUq~?h6<{sI(lgrYUa;UE-fj!u4{9>FWJ2oF4%A>j7Hj^ zpZre>9Rk7h*rXO9_PBRr{{`%T)}6@sZR{;Rx{>VP)^L>|LK`> zhaz~SF250u zD)P)tr3#4Gi5GHxf0JTMP`0OF2=C>sTmkkv0LJF@*ftZ1lmvo9a&Z!Lc>l^tT zq+}7=P%co{mM8+%bywgC(+-+fW`%(g!=cQg9fF(16R&9SKVC+iv$+{s6Ok%FmTpYo zI5)x@BU5niPYUpjn_Xy2g}A@5lCdD#Ay>t>Uv6{SXEE>2;(v!2xl%X}CM*~oHsRhU zOn7ai5!$<&xXoX6(5I77P#fU>*CwGmR)IS&4?~dPW#PQjREO;U>Lo*7Wfw|d<;*~3 zCjpnli*P(Ez?5o3Bq4C0S>R$_q6)J}2;Qlyhw^es!gPR)$0F`RRuy1liwQbvK~LlU zW;>?GS|CmPCRALb1c=eT^`mEg4!wOte9e+QNB%Lg!>EiA?Z@`e)opo z_5yaX&4oe{vbj7QKGb*XU4Qb&o0?l%KY?zgP-99In_D1$@x@}8*lWsV(ah&%qf`>DVo|hJ6;&gYod(rM z^b!Yb0=i_GQKqdM4inEW6Js$Z#^bgeiL#JFx}wA=+cKo8OsrHy&bmgWknmhIZbcu+ zrN1lqKHk@m>o^bp^*6q8XjWIM_}dm5a~fk}h9toB<(FUP`VWD#^~R45N<^YeL&})- zlT$b_b*ca^^<7ZElt9>R+qUs*w70hhER{3HkM527oG6}Yj#7{n&1bs4Z(rq5uar@C z%2XzbeoNP&;0bz7eG>{wPyPBO;QF?L7u-Rzp6-{|l_q+999ybqJmI*x0S(um65>8x zN?e<$Sn$294h@|vpp8n^)mwkfY1lbxz%!E-xH%mL1E3~A=G0dptv?OryM*`hG@g5> z8{yZA;dM`1f4Dc$rvHP{0Zyr$qO4s%;VzHzPv?7Ip@{orn#L(8bvHRV$$@>^N2x9K z+DA470jsaR`YOEdeeav$lc@z{=K}8MD%BJOfYIxhUU~@*A3n_IC(XOr?W6mkdw%-q zr+J1t?ejsMY5MNe)Ku=h58yf;fLk|P)q#KloKvH`B3%gXYp=scj`l-qLm0Lm$-%#= zT`+deMX2!M%r>1fC+`7jz+0G^iOXu>g&Iz`YJj2Z*S}o?mGj@;`)4ox{%7xfz_RUo zw6d|n#0I&{a}be3fSeo&RNfMeQOGf2gQFVX42R@<LC;bACE`Y zMw7{JqPlhNm~N*9NfsF@Cq$R5PN`@M=wRw97^a4Tp+W`MSvVRRXh|m@co6SpvG+~& zZ*@H?8bUbM;=1Re65669z3f|Z&QqjCzro-g-GyP?bF-+oQmKr#3nQ@kV<~8lqcL{~ zh0>G-MVIyJ?V$%t@ybwQISfc+0#owDsqS7IkpzVbGgE+}&p_=Q>t)E8eKOz4eC-JJv}{QG#tJLmDR5#5{XUttW;?uc@~~m_@2NVddAK9 z65Ndck(@lFa8%cK9RQaU2^p0!+^j{~xbe6D2N{o~kZ=IWr!}RGo<2vRtfO$)ihtjW zr`dKU#v~nrbVEq|NGcLuPd!5!p+tid!s&2s*n&$gwcv^y!mxkTh0K5rooN9LTo+ED zfd9o22O9JS7%JkFmK``|m4O*$XzFMH(+a_p+q=QG6u9_;5=dc>vRsiOsBGZAfh(~= zk$63ue8uJw;0eK_`6%LRLqNkU8HaEx3dQkB$W!($_IuQJpkUgNGZ|!YFFN0H@Ovrf zEo)#K22o>E@W_Iht1DKlkfYJa=B9M&vu&-dZJwc&go6k7Lr7Lo;Ug^Df;DT_K{!I- zO9&#-2(Jms!KNDLkf+?Zd@hi~iYqIkSL>DbQ!-u&U?UKh=0!()8&^W9rk5l&!O`BM zaOIU(af*M_Ai59vLOjQpQSlfj++?A)+<4=SG|?`@dHG?>veSLXdZ7i44&3#iteb2i zGn~!F!ja~-Wt|O8%`)9by&4_?O%Jt0*UB(8KBDFeg%KQ{o z*uIZmb=6gmzWL^x{~PCe2LHYb+j$8dF`TDlI7CQ+!gXO{yBW@F8-Hh`LM<*|zFfv< zv~i>jIJY<8TF~)1gMHeMulvx@I2gnJ?(SN~*F*on5XA7g3;#YbFbEY*hjY(a1ylI~ zjE`qw<%(|JhQ8w`&?sx;`$=!_F~07*I#WFJqq(ge)}6lwifHtXWHQi{ZsC~?S=@tK zTH9d5C0)>atdE1Voy$5}+^f=j&pLSI7@s3O z%R3>1_d>xU=kzS+fXuP}L0FBisSa=7i2?q7w1naCu@f*gu<-g^)x5H;tF8IdNhiN4 zCm8G_@B6K%dM>--jj3|wYTL3uNx>h{NEDQ?;yFi8fubnLyrsEJRH$_Sj5+xg?JbYn znRK^4G4%V(&O7gJ2({#Iy5fqLo_*`BQ<6pd_wOgM+mA-wJ*H(H%N6u5rczCv#K1s+ z7dh@cnlVpls;%>L5+38$iT@0O=X~11YBJqiSk6gyhP!~9e;VwbyPqdmVSFOH`n;>Y zh*PeuITg7jq$HrENxW@T*Uxo5hZCpE^1V(0T{rldD?zP60{yAREptUsQVg0JYXbk= zX*Jlb)hAi-R8!G5sQ*>#hxMf)n@v5+>%qtrDRC*I*RI1jO50!HpZ!&6};m2qzP%IyBGF z2rLino(se^aqsH8<(6BXL)n~s;)y42%VaVgxW9_ERLX&YcmCS-kZNj%1N#qfh7i&N zY#(Kx&j94vJ`|;oeRmA^op_=FTG6;9Hh|h|1R2{tc$@j~hd=xb-CH`H?xTA>W%J3g zeM)`**|t2nwgmcPFC*CT&*AWM_yJCfHmJO{?^KOn8XGSgfBsVpPUO@R!`TGw8{x40 zYe{vsR6w18+u=+O1~XH6#V%@@@m!MRO@!K4S7Hl`*xiLCepb&tzm(7Bx*C-|u~A0m zU_4t?U0eP}e(c!iE5(V`awvvsi2{?E{jyQX$>B&FcgWBYIOzz?rHn^TedgLQF}Q;X zQq+`CxjfzMTfuk06Yxg0Kqm&?Qj&@-Mo_kru10H=fI6C^bPqg>6hG4|{V;U!1v}lo z-ga!AsDN#=QtAUozF#%$^Ikog`_gDp7gMni#6lwM9aiCR#)bZ7x;(}d`0YBY`$OGWK`rSW0PyoY9Lt{e%jvw!vk-V>|QNz*4 z(JrP;U|VnnRZV)83Dpo^>q<_tl(#o2}CVTPFTuNmcu|mH%l#p zvG{7x)e=8Xl~FGkZOZaRS-UH5L9#-qW(lZ$uAzE$kO>U79nlcPND=>z;QbmU26?m{ zd({dI;(0n-njwjHU(wG>qrM}Xo%Wkn{A@_Cz|q1KG@||1#A|Y*eJY5jltdl4{b=S< zAjCM1*WPjk0BzS6T>rGc(Edi_NV1>&0OW)wTP#yn;Q-!q+0Vkyq0NgU+mkE0#gPfC zh3Zxlxo@;!Lw3@H|FzYIcpB}D=K2o$_O@pD<&XhSzFmSlFQ+=|42&Gw@=?Dm-6HqP zna&*?Qx$()v>`NQ!IN)R;Fkjl?8|1f+fD|^+M64>GyZ?QdIGL)2WXB+)HC2Rt`;YRuN4_PZ zgr$BW$3Kl{$s$F4;WqVlA3(C0y5 z6!{}a4iQ@w1%c4MKbf6OjgE|_XdNv1cf%to8ejTO$+Z9a<*}(RjaCe?Ns%Fj>u3+| zF~`a#tUae;P6h*#e`EOm^J7z-;ms8QPIoB1&>){p3;XT4u>zRUCTL0}q5t^tx(o)b z$pjqgH{pka<8VtKTL$9SGLgUZwS0Is)X5&N9U z_vL6LBFdEENr~rZ7-C;A%7i5bGb&qD_Q6&DtZAJ6EGSPx-9h#i9kix#p0I{^TqGY0 zF|CoGB;ql1aeE~Q%BE~h8W(=xYqa$#3Lqnh;t%?Vhaa!gZ4csc4>7Azph4LWI3S&c zfY~|6k26q=bLOo8u%-SDvK&t>fJxx@P4u_a7CJY*M|&i#mwMwz_eGS+Z@>LEr(LFd z^RG|-!3T*A3~epD9FHr39Hl-jVc!L8bwbVf{TgAnT#g2^p4uK{aB|eWR5I~>HRHg8 zuT1Ipj2KR&5p^+QAKh1R;J6ur^{DsFxBkY*C*Y+?6&g^UyTa+~pRON3Aq!p|)t{rB zaGDa(gnPwY>yHwK4)inlQKkUvq7qbGPrJi?1x6h=hTr=-j_o}-A0xCM(QghNI>ZAF zs21~l^ONQ<)o`Z0DzLFnUml26W&)~t%d?vC+H=iM+S6$sQ$Pe|xYPWm?+p$P>bTE7 z_#2Rc%RJy!s?+(?+B$!(C{6H-wf#V>V8dRFEgbE2lN&z+9c}xR$0n=e7e{$f= z_xKlU!tbD_2yVdM;nwp)0&kOGu_Y;rDP#B{ySXElWm8`+YkD_PE^$Kw6VW*B))-o zBSm_!hUY9Xmz5oO5^d7^v^*U8_UY>hi+db9#+uV@1 z3Tjz{Q4|=Fu)-t1lZiOwi)ENBI%tQ-p;F3&L%GvTMuWy8C5%%>Z`%5>ezQ5{YxB$`W`pGpD;;r*x-T}x4CL>Urf z*Vfhvwfq_cL9|&=bF`jd2r_v5j2bccZBWoWsJjp-JV8`-sZ@%fGIl)*reEM`w!;i} z{n8&FM;)a>f{lr=a(h&kMP7@AYTa_G7!%$(;lOKo3EqEM1lF&#;L?pmt7^hdRfONV zE(}*)DMN9{g&+P>fT;}8_)wh}=XGqmN+tO!jtoE9+XdVD{kpHX7)M4jk)68-*2r?W zV_iG}D_je5XvmVAs-?k!LMQ_76g8Mqi|X3-tM;99ZhP^i=Z~&74R&r13d8g99A?FY zY{h~GLxP6J26z)Kzp-52WVTJgBfA&VC!vshVJemUVn;{&+El6$4dzBPK*nKobPQIm z?B+_qd280f>T_1}+OGt<$Kp2M|AKlGw&T?7-CkBEMWM?fnP&`0egr1{9gI26i>7oF zT-qAjK&az!SD7^%mjY_T2!>gmv=TncUK35(D(zVg8febM+*o}h1ad^ z?rMj|h6ozV0(5k?;5l%Qa4D;{*#l<b)mgXi% zge)HA-npz5+bcs<)KMYs;!`pz>HIh8Cfwhx5**k${~W#kytY_JNAqnh5q3v>ax`&8 zPZMif-*LSq<~HReJ9aFq${F0vtd=&2J26g0&uYeYE_Ta$8jR!Dye(5ON^t_tNeD_$ zvf+l`y0S+Zcxy4HMd@=x>3}ls$NmKcIb&YuZw$95e>aVAN$zHeoPj`6Hh#G)6mcm&%_P(a>@c**|Q4X zxA}VLS-l#L_4ab(tXx)4a-h{_?AAVrK_rg{8IoO{T|9v5`DdTuk@8-a#WZ-^-Q7)@ zx6j^j#~nY$dpm%i7f(z7;~Do}nF21)EU$L$5@JWad27!;hnMk2d;a3|PcAkmP z*Teiba{R=^Q;}VVe}A;AT_Gp2mjSkTOYYarDMM>oL)~U*c+5OLH1SM>Xb!x+efR%8 zv1$d+#^QjK;5ms!@UqpaPHG`Q2)s;7UZb6zJ%fg48j1cc5^OZ$^itzxF9ng;z_a~Q zL3FPqUj~j3z{q&%`?e%M<~o%=Lp|0*m2FT3Ks|EL@1XX1JN_a2mnFJ~guU zDT%?)ZJTI((X>`l{em0WVH+$pl&c(@RIQ6;Nl+RT$=*4tZ`5>YBhFQMYN}K>gVV$K z7#tkc`hPAsTXDzH9M=_3f6OSbkcdRw*nv@FbGSLxL-MU&1}8a_$T_O%hW+!y+Kyb& z+)*@`%p7J`EPD@_?D;x+Ll!R!iFi~WrEiQ*`Zleq@v z-F348TyC?D_0jCrV49}>MSSDW$H&K$WDgS9P4)I@o|0VgvOY>UM@m$Tcfc6jr3Kz7 zFDk0Kd}LU-)C=>VvFb9mYyKXfYv5dr(fr9|GJIb0+I~2XDC=lqe4O?OG@kVrjsCYY zC!M@uIR|gu!U(Wf7uaZfIkaZc_5;+TQSqJ@y6#NMS(j(kNzjkBiV|4?p@__Lb;GC^ zN!;b;f|rl$a@yP4;1jN&`5=0rhFPeGQHGo4>uUzucTQnox=v{o#P-u3Y0n|*Y)u8D zTmZQ|32bT%+cL~`Yhs}@8I^~1B3aYo*{^h8L@9Yp)4>#ENZ^_yotK=sB!9`ar?o(R zNlsp>HJmYRIP7ZBNWsIB%&DT6veobm&8mjw^4h-@v=fP1cGz<8d@{c-Ws{N2r};ze zC!mb{3}m+qVdIY*7SB3DJ6XdvWXq1bBU5zWdU1E^^)ks0V&xi^B4?`ndHyP z#!aZ|Z2kQMudCQE*{M=`G&8=sv#VPP09&GprJ!;G-)SybKF$8{aK_%T?XB%qJKZ8i zx&jn5eSk&A^J=*)%X5^#z`3xgtE-Fr1$=)e0Dw;Be!F07)R?qU3CZ$AeritnM{D(nB@q|1s?k;MK;}%H?rNgebVM zqfd87vX*&qnBqZDV!mU+#)>TB`U~Ou%g?#~NNyjg*!^2Adn@XU8Uqkd*S--vrH5kD zV@GV*9By(KTz?fDzh4xr9odStL#O0{{6iC?>!=U!N-67kq5p?PJIg#gc(4tCB>l7b+Pw1DTd_mGR~lhTMNX_ z$c6~KiZvQ*Ev43MO#|D+X_S}n_|~_+#r|Z=gWtkMt%_5{d-KI|kHp9kf=7rP(FRy% z1uAG<$YBMfFlBn7;Ls}E=^~0D?hLCGav;e>|48>nk(nm1S816V-z4a7$I|&T0mO}s ziT-rD>7LeQ@aVU;d~3;_DT+*#7)y#Fu|tZAvJ@652%3+La%}^wydn;r4mlNF&~Y2l z^9~4k3v&G?aQgO(K?)7)}Duq`NOtr+aZaUVh3;F7=jRcS8MtP(hU8goGh?ddW#MvqE?z$^phUvCrTPkDhDW)2**5}A z@t_D)ks+1n02K`|wPcT!i{&SEt@vZy?~Z82%DAN;H*tgBfyYxQ!+P*)8*!Ok$(Xc3 zEo&4;^enE8f5U0M6d+tgqu54cV@#)1UsX*6*|2_H3!h@cqb?O|>w@4hA5~^86=Oij z%=~QLS~`aSAPyp|4PDRU^{EX?O<*spWB4!l2m>S?QTkLo8tFEO(hRMh5*oH?+%u+d zp-hsIJZ{4iKPkd%5rF0GB1}1@?9Y0E-FSYeZPPLxdfFMRi^=d4Tc&KqA-w<3qL9jS z#RG3cHAKjdMm-0-EVARrgv6oa=54r|KXWW*cXr34&@M%}@xQwuz+i=p5!6^6>q*V6 z{5`}P#`h1}n{dy$r!Na@4(@Kn_T?rY7kY10)H{fKil2H|js)4Q6!BFvSifbP`?3&@e_ zMdHd;x;U!sL<*tEvv4^97q9=dtRu}8uYLP=LQl^Mp3zALZf9o~SM0-)FiEc4D;4b^ zUh8Y91e|0reCku567jn|sKnoe*SoDyC?@cJ87mj}PO2r<5lSLO>^rW&uzliGt_b2# z#;?sftz6aueL_u0HNi#_c^ZX0h_1uJA_Gwgi%xWWwQer&M#bn{{Pka=Qk>hhYuB@v zU3S?^IPWQIm=wr6!r^dQ@}ofg^)GXf5ET`w^G(1wIVtFfR%@e$sr^JNo=k-CyA*-% z>Sz?_dDMS)ViGNqDNsbJwUQxXUWm#nsKrT?8!?E6G|;on>^3N*j2x!G&aFsR?m=2R;BVdb3aK#vmj~?aVm>p_^Y;Ft$ zYYIP0!FV2JsXfM(=0YU`>d*;PMW(&O8x?VKZ|*{(RMaiV6qSjY!MAv@BvDf1C;dI=7*QH%3nJ${Y>9;$q1G_ z`cYH&#;VE&>jl*@cN*xOp{`YdzFKr}X6}y=FenIKUqQvg6ALk zx}`iLb-7OQGH~l!oRUd(Wy|vmMk#b%Jk`FUp$(0r<|dF>oM*3rD4ezm9rV92>zz3> zqvy%uJqZpbrR2A&%AGovckp_n&f?jKEXU$mw}xr(y6My&i)Z3G z+~KlFy^z}y^jiw@GP!MGS8L19^%$Pi?zP|PEe;G%tc`}1h~&*ZQPr&;o4Fml6on{p zP}-|eFMNvB&x~|PwtgPE>P>1Jb3p@%vyISLyvWvMMDGHfHB-Bsc zK>J(8F!e&NaA+)7xxY;jiboC;Y5v3qqERU+dbFhWWXZh5blh%Y1R-65z;oK)h~Sx-pp>4^qStM7nFGIa1N#HVpwH7aPBJeB*3g#mw2SpNwnj4he zxJSv1>&8w|uNXg@DmYJ%<{#Cd?V?wpTzEZf>s${oD-$ZNyAPrs86h2t^k{N`kX}H} zZCY1;)`9KVmA(1#ecw+c+KOkgeX2U1bR7Ls!-%cNYjKBo;H(VvdzxE*roCoa6F(~F zjy}#aA!JmP<9Qp#-+`48{EFo~I$mVYpgAo@WC8k0><;XQ1u{5o9-ua*vmJe7#@*!O zwY+U#tP}bo&P54bo4DjrNCM;77mh_vckfRddJoC{IWstU){L$771<+-TX~$=p+b0$ zkn9#?=E*EKIBpT@EY3J1!P!Sp&O{J1BhZEJS&A=m>i3baetdlVk4V=dAcKHYa?BC1 zL34O;aFAi&5u4X9@#yfu+S!LV>zHl7%|6T;0GEzm;x%r-YhBpY)g@B4904gbSIM5C zwL;(>-K&4k;%wWHbdZo_KoiSAWpqDSr6M?q7H}g8fLNT@SoESrNVe7hxIRTRG20P> zW#Vg-AQz5SN?!Cv0JhGsD%_J9PpZ`Wfx>3{e>-00ty_~y$y4z}FFArMhG>WBXrGk} z;Hnc4)rKGh8MF;d#w-C0x}4*R!?+if{a{-IpQ+pqEe1|Esj7TkQ~y!F(U?-kJrBmF z&mGo3z?|2jwqwcyWedZi1HfyW>N~(i$~r~az$iek$lP0+80(}xjph&q1W>&^T7$I5 z(0k5w}->WpLx?!_Tlh$TZ{|8mUPSayVs;duZu z4m{$R?iqFZpA(I(_@}0oTro1?obr+tY)^NU;&`{V8{0F=HcQQJ4^4sj9N1+PUeD~e zc1%q;JBp}wqW-THG`45TfNFq{)y4d=x3*L zQ;;d@SJ{H}W$c@7$ETSNWJBO93Ig0r%gP_vz5lb-=nl?+V&T;jHiReTa9Eua0K;ar-+jusk4I`T1JUV8wXB;ZY zi~Z7TqWlx*mwy&#gRx=Kc6aoa&ASC2GVRH~+2+b(^k2Fz(H#3AF4ZwrDUgb?X6ZeAZF+Ra-f!r>eY@24gD5E>CPLt? ze{P-#;-9}t;q1DE3l;IR*YNqDdwYAIC+uL3X-)#?SR zFp$YaY0^!xFtoUmrU?N8@$(KCqc#+eSM0)okt-VZR;^R{$70gm zU5=KE^v%EiiZ=pV@VJ`-9(naap<0NWXqgKR=mp1pvSh=3XqO*)x4~OKs?Cna9shYqpz78Jb1_ zE~m|7XWin~T;}FEI{7uuGg$+EJK60cFASjt$-^nH9h)z;P)E34|K z@O;Uj7AMif)^O$5ZuDX;aO*oF#TnZFJc5Al7}ElT3m5Q&Q4!ba!=qzkWZXn*qOoTm z;$pzu;}+c17#43T2r`txqyBZ!a39Ex!H{9I{Z3Ksibax9l;9b(mfkv4F6K4ko3v_Q zI52hh!TxZvH7ekUIB>Y2=1_tBn_ath?Idt+q3MrD5v|5g95XAIoWKpoGXxy`XHnGN zllb`$hKKr(;6ZJq0oF~ueAkd|T$PceRFIv7ihdTAS?Z7Pf=4U8(D;h&?XCa4tGnx# zWgYEe6b)OdO}l&dE)KB9<6#&c8HNA!`!_)%5l5kK@F-}?t|doz)Q@IlzVc-G#tYpG zO#yNuQ(Jf@HAV8tUi~i0;0@lMqT}K{2B8^b zfY=7GS%7UIlK7@TqTb z1XFM{mRc3Li8Zul|Lpb;eC6++`dMaa+y7>9Q_ndcUAFR^yH~D0XYI1CWnx3J5o{rf zI|}xhEpX~~FFO@xg0;N<6*=U570&V0K3)<5zod=r0k!XC%F5!pjA7b7RlUIbjms7v z=nRJ=oMH-mDtm@=Nhjb5 znP;B4j0~_%S6%}*eBgJXsks^U?cEEu+%21Pl(IfD1QV4CkD; z25$NAM>wtNf&KfqT)E|zTXuiq6Q6kI+H0?UIh{`L!}U$z?P)s`49fuB(EWfjqF1W` z>1MSxcozh44GSu|S6?d- zTM-RO3CWxOVpg{{I-+!MEE;QzClbC)aXC0Z?JX7xI_kSmCKchkF-clH_*YxzCdf<^ zgjvk%-g}zkB#Wl|Uqwm2BiYy(Az&vsf#c|$I$Nt~S&2FKwnRcZ$ewcWcNNP~Q9cY5 zQPCx6S<}>q5;65j6j7u_a3OtYl66k#uq&iQ#B>|gSW5cT(-x3JxRlT8xC|eLahGTc(+*j-U2#_y{t}ndA2pEmh6*fspZcxKD*U<2|O;Z8#tDsPCi+93wr7oOWCpNBw|601Et4 zRh7o=ZS2c@p)kPeI0YFjJ!>F14@DllT`HAs!fT}|n~^eq2_Wlw z2XC@c8~oUiZ3J=Z1a!K3jiLV{Ugpm;nM{(}S1*H;0FPp^NLdd9`^)SsW^fiXyjG0* zlxo`r8Jx6UsLhm#h+oa4*n07uB3n?_V_OC&xHOy1uAu#q@6)q`Fal?nzptN7i?dqG z>?B(K=^Ey=Pv!IZBKE_vc|hCQefm}0 zgi4H}4w47E7y(lagN3_|#w4&%-!M!ePx+M~yJ@ZvlYt=l04{;NqDO_yn?u=uf{$vQ z1mMnc|5j_J+n#aR zlLQQP>^x&?$Q7P7E9OlR5d6el1_cU~6WwYcF3o|8pCw0nZ~%5tP>})dws9A}9q$VM7U6q0FQFt&kYjM%2!%$ENko!Wm)7?pQ!&7 z3V6l_sXC53f4{l%h#t_KgySG0=21+Naj%=S==A%>63o{9oRpb zt5f?!6Z=QT7upXG;5n|NjBnbnXs@Dk1~xcdhxQJfCj+=1w!i-R>$^|ocW=J=W-YhW z$?}h}c^M3-er^e66Uo1Q*4dMPbdC8K42VV+ARIIcm7 z1PZ5$XH-|0gSYe^&%UJ~c-%V_VmFiJz_&^OEb4{AD|oG+@KS7oFfb2zTOB{VZ#~#M zX#Cg$<43_mq+3uQ`x&oiWc(6+MCyk$PqcD=2LAkp?F9_Bg z0czNW7x4K3Jhy$SHGCH^fcP#jpS?u)a^898rN+j_zO19XC!NEsDZv?(+6(qt`uema+PyCw_+Fm?#=+H^+d+!6dCEQf?DV;|xD)C^e@k zl7*R>w=8(=){j!f1qkXXm$rgs?aj}GWbsHuQ9hB+7ygT?mfHkV1c&GyDbr3?ssI{K zQg%f&{!Olhxm<&?Ie5tF+bBZU_5cgl_JF=bA~v3CN`0?6oqnXLIeq9CJIR|}BmreXMe@RqEe!>m>Och*!%EK4wJ|eSE?E1D5%*a9xrg&4U z9B=91SL zI*20@Eg>nslIR1uQjnSJQE3N`YKvz;nqV24X_Y5cH8(t$hmQbI+MrQaVlU-#+0zQg zz;Vjq@pt(0A8I!Cz!0xzoXfL>fH;pZV6y~4@H{)>diKHQI2HtMs}Z0KE{;^}eVK_O z$bQW|0gdvqZor@gnVhM;TDGj;35!D7WUgx1_H)c-k8-b$p=lMzyt%I=Bux}TmSg`2 zh3(^ujbFgy`#7lEQTe9YrD|h;HJ!k{<#j|)EVzzxfDy#432%C2v;=z0k zk4%ljW6sB#HEaH$ySw{OJ387T@rDLS#G)`VIs_R`o!kWn4jhE{ZTiggiLiiss87ugA(#n7{ zrJ3W$lX6>oyV$*a`MKj`WB+*Xz4zXQYi{qBEn6tc_^+9^wr2g zKPt5LIiTJQ6xJficXiUsXqH0|jYYUT*9?zhO_We3V7~@n0gs^&JU^E;HO37gibRdX z2mms;*V>@;RbJOb;>JJUTTt*=7KKbFxPPix@_-Bi5_z2&98a6TDWZiFWu6Uc;(6#Z zkQ00k5HJ8dlRnNfHmTnBVA%nMgpi;8Mbt|o)t4rU?RfLN^E46>{%~b$?DnC9d&HM} z%^f)tUa&p#h*|mu_L(pa@$9b9c^fYNU_2Jz6pa#<#lj%2=iqS&JYnUs`g-r4oj)rV zrkDuMELF-S?xD^ zD_39GzN}58nxB>sK~+Zv!;!d0k^0=Kg0?PqAaanCfJ?`V+2hF>tIgVNLlVc!Vi%m%3F)7qBsH#{?u>_iH* zAZHpbA_0FNYD)894<7YC56E@(b$50|Yr}j&lsoNcBZKr=L4!dnMesU*|xT}owwa~TmI5ZFFmnw z-wbF$|-K&s6H=n-$yb zJ39oBim=;~S`N{|&Y!MtTuB*hn7;vOiIHFyRm>cb)h4iZ33*C#NL9P$fgaL#_Hs=61C&){#b3Q1CP#W4N|Wnjxp+J4~k zUn`e;@j8#7&1Zw_*4eAw>ZM#a2q~Ps_wbTWewK$cb5FwcP%IRFI~djsz-F3V$u2 zayPd|L2)2DeisjijH^6%F1bR1W0Mq!%^Vf)jZ)u>1Om0SH6@c$;S1rgds_^3xCkCH zP7SW3Sz!X2A*T{OsLNbbAXT&>71zC!*-m;2ASLiHLC{PufOHRzU5p&5G#|*xOHO3}@DXZ7vNUBY>rX_xy7W<^{+?N>q%*QerHb02+G{ z?Lo?jq`XEBa%Ho{(VX;>s!koKv)_yJytmk(9)S96XYlDye_GtLXSXQXr9X@(;yj3! z0*eLL^PM^s1I$8RbSl}oWI{jA$L+aXZX?RL2xan95D&>43K|V+;o?Dlt$$u*J5E~f z^jkc~wRk>}_IMf(I%satT%kFSd$&pV;>%&#_oXf7cRK!Vn=dPtB>(=sG8oMF_qG%mN&?X^1G5CdXGzEv+l!)*9lL&mZeDIbsZuJ1X#W_&% zYn+)q zPmLe#_v9;~`wnQw106jmVMl8a*CeqojpKf7F0zjn^WI!@Y0mle>Z`A6cinXt1vfIX zX=rbtx#R2pRk=ZXEv?Dl!1ec@YTtVwz#W|MqFt59+@1wL3m5$QLBad(8BK++@1R?FqbW`})|2h%{+^OQj+xc@Kyo4w`!e>xUU${!9&!CbX0GjU0t?dfBjJ#`qPzR)cs%|bZmg;023Cp@bqg9p=jAh0`t4c0-RSYhWe`Q6)spL}{ofDWIk-9HAYZOw~y@n^vr zRaTdI29eGI7?WCq>nZ9OnVqHeZyozjmiLEJp}@oO4ntR0h}Sp8osa6HZYjv0uC^AC zQy(?0)tcgiw$!vF{3ql@U;KD|!?$lqCWV8}{?5RKq69X$GG}25uxJ*s0ssM z6ZSEL@4)ZBYL;epBiJ48Cz??9V@wUT03Wh~@RhHOobUn1PcS7DEF#!);0qn5N%O9U zbN;4$JYU8~>|qfq2aQ{1em3f%S){jn{1D=)ExNlQuPBv&CuJGc_}!&Kxl$boC*EKO zcRE!c<7~UM?R|vNcWOb;Ng@9CzVmx1g~~9F%<5?N7I)vqCZEGiJ^Ei&cGs3zVH zws;GXpeYH3yY)$;#XQ9_!2RPw4KO`-LWKJ~$R&IkfQS4egpU_4K6bc(Up5kgejyPd zmH}pAgP$cv6=$7lqh={34>nkz30TX-d?^n>R4IcValKpT`s42| zf~gruqu&CpQW(gqYYhV1jz6z^1rD7eGfMx`_tL+z{aM})@+Gti6+YB5Ot&B0ul|ta8qfo^%dmj2f5YX zMnlgI2)m4=5D0sHhXKUJG_l+8>*EfqQ(~g-OZmk6oOa+`pYk!93gzi%x}ve!K97zAjOEqQX0WKJVnp7n9vQn(QLw@ZPqg5z?_PKL{r2OqiYRvhcr4`Z|U6nt-++bNl`Ll4Z$u zQQ~&KR0j%u`O?;Y>+QmWO0m>85CYgNSL38|Uk0CF^zRF1LE7AE?#3xEwJ1wkzv^c7 z+y8++I@0Z#y?7Fguv-iDYln%$4!A4FE^IR>O{tLktSr&zly_`+EGh;-g zSHG*A!nV$EB!Yh;H7=LwHhouFhmOO;S=)fMnBM5D7vej~a98Qt!zDM=e$r(|BsIBEP!}60k_vE(cVL!<++lc^0tD1ClL)Wb0<#-R)~HLd&^~Ts&G|Q zPV)fY$8;Uj&+Zx_>?ax#2KafbZ`f$R?V}##Rp7sit4h5p#UOYlrhi z`DYs06P31<(RvQOPv+5a_nvPD!to{ty8=`+jEDsV@EvKn^y4#<0i7h{!!uzj(B;fM z;~3LW#ze#igm}?b;{1NrKf-UP6+U>C-nY`qfv1pbxz>^I2Zv@@*fo!;u z;OYU3oRi&F;lni|w61Jt4jQ{TNmQ6=^?Xh-&f;mX-|tlPuwm_Px!!9>V2V3=Xx1g` zli5sEPLcL7Nj%Dh55dGYhF!RcTSEGFb9X4b^TWiWXAt9eY2jWzOwJz#mRG>zr z*F;i`V%V_*_CG<&e#nJ#cYQOE1=HhGw1@hqp8v}s=hbO{nTC}o#mQ$-QT*@I-=?@% z4H5u{Cw<~>p!eI>8<@Sq2m6@p#nG4?Ec2F;<9MU*Zu?eI*&A`u2HP9jR;IN zUm>^Ty%vB9{Yqf9WvIC@nEN&iil2^KbR| z&9-XUwV%LwV9Qg@s;#+pdMDKp6;U_}&`+S~j|tSCbKvAfQ+5B^&c^mt@Rr8(g@j$l zGN)^nGjD5&*AjjN{&#T4Z4I)7Qo`RHi8S_bqf-)zW>uxq=ImtiWr1ja>61uR%?v0% zO-7?63r7q^e3!EZUBHX>(35lK+m3v%bAN&L{n!wRW6a9SpS(2CMK|Qr@KO8Hya1;8 z>am9oS~55pxwxF;Xs>H)Q18LRg<#s7Uaq>#6fO?D{P98Ea2lSZ*^$-#wujkQf3i4p zfH_J;nMuy4UL4_nOsiO}2+p5vC2PnO82msK$Dhg%tqg}t0{4dw%jl6u!143t+{p6) z>bpHHx9bgBVCeYU;PGgijVi0OtlilY#W3sk}_m~%JAarivi!082bMvurOyH-&pM&LKcD7_&XolI8e z$K>paXkZn$KR}}G{chY;jj2Y=ASW_6(liRz#?327|3D* z7Kl7w3ZYb{n|_s3vL7Aqo-=8Msc1s?a|l@I5@Ln04n|0FlMa&pLaC`mf%}Rp{SGe} z^C9QRO#xmRohIUd68tLzLQ8;**=EBrcem*6>;Br-`!hG7>x05;ZLXdOz3Q04IAX=_ zwqyYZq|mo9xh<1Ex2iA|S)I!>mIa_>YXFxZEg{jk@|4}Jzd*vd-MbNc-1R3R5&SKb zgzzA#WYs)XB^aIoD<;e+7>_HjbV^boAG(W2oTn&*U?}tmm}=d5ABlcM6p|axGHQaO zg;AyKG;rvRth^ZdFQTTp%2Y2$sX>ImP&ztjBq%qZbc5qGo_RNa&^7htehSiY(;Bap zMDdgY3>Zz8_1k6~W;w%VT}Wf-SpwF4*ZZHQzFm6&EEp4y&vCd?4u0j` z5?h`3LrY^LW@g45-iAx8f}AeqaFfmsZ{W2^>_+>Y8QG8N^PR|wZ~6S zn<0c18tK_hUcj5%S#$LlM}=>-luGJnU4Eg7{xL>uT3?`C+VGU?{%13`!+EoZ$CNUU zwZ<-Xv4)C&e>Sh2ocv-DDTah*n0XvjJQDZw<(@*(beJ&$JZrl@Kj#gFs9JDro z`BL$$s8P!VEf+Gf<1!~nCmN+6C2 zb&d?oj&APb5_m86gTn#iq`160>gNSEy)hL$pg50>s|+iS9uxTB&;Rsxoa4~R$nNiw z@>q91A@8zuPLc-^Y3+sfc>XO*gV39uE;7q$xC+Mh*MrPd-2|8TQHIMz`i?#gx5?wl z$;r{skR(x-$Sct(0R*>fu?q1McySpt_>e_k@3{G-8N$ey4`AsyG&FQc32c{vnwk7n z;imq5a+@92Jth~Tz|75Ilm$h+V0KX^92ZIqfI{=5d?!L~Ls7riFC@8LP2MLN`iP2Q zM({6WPxcQX+H*f^x|)K?oAzpad;u2eBX?@(0Q{242WPJ^0#=XZRjFW`>%p!Uf~$Um z0jCa>W8)whRHIDXs{}8DCEs~ekefhl*n)r9!IHsVI}tHHeg~-KRZ`|o0UqX=T|i86 z!{vV?1!bO!`ONys6x`i0`IUY0rSNFBsPWN6#`Np+!^eU}vynOH^X*=!<-@@-xzeA%kus<$Dn;lz;+8xQWBo=itN*9>PCFLlSCWBC>aJiD z29Tv7JN0}d5VXDTcKrlTsxk60=n?Q!wXyj}kW7qdZDE7CTUH??oUZqdtQBy*`qX(0 zuG?}gyB)yXqKMYzJ2cgF=tAK6v6gGQde?-wTys`yx7+U9jA;-jvj=;;$ zFiU$@rpp5FMxxO;Oik}z+_!@2Ut7z9)yaEsutFttqB;@yMimg!IEpARwC&ZqRQK4T~e97kh1PPWAX&_@rEZr2Gw^28p0IGFgoh5F>s*j`-KqE^<80SXBFS# z%0p?DUDYxbexfdJQUV7*JDgZ>|IA$Ck>sJeh8|?O8u@{9(#GgO!=~>qsJQR(>ZjJa z-CN>$7wWy>>${Ep;LwP(4D)YL*d1A2^RPtFsAZ&KJm88Te=S;r34j1D;D<5 z>*1e0hy94#`LtqtRnI6LygojSf8TfymgiB`pJ@P91x0Nw|KBA7`70sp!2DP<$E&j( z+^x5;8>Ohhy$|4~$96s_^f+_(+%G~r=xmRuzu6ZeMR5#U$-2P-GJd}B@6m6j?~EmB zyAw8$X8@QV$l*K7cqRDm?`2{r747<|P85}f>vpKm#V#h~+>8nKH_@6&79L(&;rg5< z8smTS)bU%s57z`9TA7nEpAQaiF;ku0z{z)G(^8W?UL|ayV)%f4{#%LlAiAr;$3mm< zYTu$>sQGXoFEKk^r0?jirDN1XpR(Ytm6n4%>mjPWeT{;?w7kf8Ccwzg!4NQfHT>RO zei3xVbd`lUA?(7DAZ;9QBvMA8=+05|QbE)FPs3pIV+`K`Y4Wdzae+LxXugev$Y%kC z#1h*&maGKw7*<7hb)dbf0iwU125MQ=Qum{Xj6V7#GMK{7Hdm>)ku$I*kM$LMVE>0S z6+Vw8K3Fw7F^x~)ZxR&2{Wqu)=L$Ms=CT&KYiO6)t=x~yo_wj;8Za=F-7E{8{HbCnqB@mw%w8UGaQY3RelLsp*_oNVw}geWNG$px zr?2boyRm<{X;)#2vP?m}5}5ssaFA`^a&*vERo#m!fJ5`ARAXQmJ#MFUvhl*fv>5_f5#U z{S0f-l%7^eZGUmzc?4{f{EN@&XF|@dV1hL6C##4XHOA@0raX=hwRJ z%5w3*WgYt_1Y@6LPuC_kRu}SRX$_oJV5kMZWZ1aj{|vlo22aa^_B&V_G?%ulaOWgd z@kGD@xNR4ad=JUlIwlfE^rWwuO#eR&e{piL-$ z!$!FX$!gs+g1;D%`86-m&$g9u~RucH#Fdar$H+ zTFygp;{ccS&)m8>4B;I1WROUs#JhL9sqe1o2`1Z7`})3aQ~d*9Zu*tvGVYd3V}BNA zK2WZv-!=8k7+4ViM1m=KsYshSvpP zPAW8dmVmgke|)%3m0JHs4%+@Q+uwg(s?ym;?%wyYdM|6fF7$lZos}09ftVWg&(Fiz zs3|+TB;~)(=e@hsApMf|;Q8ZoszIMJ<_(&FAc&K{#oMxMr%C#}+pu`-P5StKbXu$d zx2AhOkiA;3@PJEZzWtuFaj@4fNo?-7B;Pr+B`GWS{$hx>34KS52~VU66XistO|<(< zMz8i)K+9Q6(4qG6JP?aIP~ZXWN-jz+2MxETK~yl9+71RN|M5MzrB`h8NmQZZsUL{g zcgyihVpABC!J9U>F4{R^^^ncGsyV7!y1m&gPBG}!`aN%>OQVlKu&tyF;n?h8h}v_+6Y^>e>&#$>boJ}D+(&t zYjf_eEgH1)j8oFCR`YsG_aM1h!g3oIjz zao__<;DSiP>osk+8%j6QRePWZ6u_X0v%`ozoYrz`Cb`(Ix!C&2(c+dxbbRomW2s0o z$1_{gu&Nj6N_MwL18k1F7B6clGp-Kon(kxQ-ZS`xY163Sf3*{$1vm9d4WVc#mQ2hZ z;6nKdYPMSbu=U&LGN)hgE=dFn|Vl$EP-Vg0SH4lM!rnx`@C>abQH?)D%&3w=n~ zlo2cGi2s3*cVatmd%z}uZ8x(tnrQ_s$@ivh9I{eOf(29Cj&+rGmxwOepYgleD5wzP zFwiWv^qGD7dP|i#OiUzvaRI8XE0b0iwd;7>_n2?{^kqz=OH^pH#r1S9U|=6|B?pKT zHK+8Y#9n zzNOmysE9*E7J;uwN3aB{LY0_jmluyO4epSiqa*8eB(}^bL}_WVnKVxK?tje0iI24c}BWa#Ej7Yq6KOL#EHwve;e*PcP=$(vo0Y zJ~UkV!>*@}G5Bqyd&&T-Tyk30=;qGx-}zW3wWh%V)IIWE`lV5VQf`GYj1~U9v*gl7 zl7eO>NN7+-+_*?jRr;N;Jp~d`Wd9BGZ4C`cMD-DZgM-1}i58hjNZ6Pn&|9RpaVd8eJ)QZT+v6l2 z{`Cj;IE#>?1(M)0D3Tp~;B4NF$;Rrbn}84>qiz1iu{}OB)NNNS*D>d~vEGAku`SVv z#sa+gfelw>D!KYk7~*&!-zqs!?oe%-+o1hIfLrmN!3C*wo;x2gO zHfZc@YkScR$G`{8;>n8!KLu&}quYWtT_cuQNWrK=hvMgV2iQcM#8HaFP64oM=so6@ z`7_og#>Zyi6F$kngyf)f-#_TK{Kuuv5iV7%Ga58B&> z$jXhU&DcThScY+nT5R6Yc}2piQ$|^I&EFo^xrwyv*n{y>wjUxl9o9z{@K|nCywKl_ zqDm_6Ip}p8j910v$X(C)kN4i@gyXUkWleXzMk=P)Te9E>_~&`SOSOo1klgt7HmMAx z9ydhuWXv~si?f)S^FK?FF_`;KJO5Do7@QxsG0m*o)s3ew!GC}Z1?@lH^Qr@I>TRQL~c>coHgqTpl-QOhL!(pcH-}}ba(c+&rhnk zE9Q4KcWVCb+-{S@Y|y1@npe6HP?e@6>eW6-7QL!L2)Rg|-5W`U$ExNT4;~Ty6s9-l zvXBh{SEu#o)0pV;wXzY^9XZUC!VK<=EO4;EJNg-Gw1?EsB)MrDg5s;djMv?#zmY!O zfCbhfYSB_(UrC41$Jw&}5f5E-M$!&-axQ@K@iCm=)zv$(TW>r_hcP2td`AT)tzUBR zC_VIfyHgx`7$|!@+I-=OX<1jh9!vtvCPP5T{bJtMBfWgJD{?W?4ReyPbyF#New3QI5)h+mpdhx)80~&_@6- z)in=~bHFmlgwxRU#Nub*_)2waD3;3VRN5HNoRk(e#A_~FZG!G_Cz?F7;IloB5)<{< zcJL*7AE&i4X7Ti|wS=^51qR*Lcua4E@uvt79HqW~y>)NA-%}BY8Z@3FXPZtpN*Kjo zn_wG{!OvifGak>JLZTeiG^F!FL5m-c?j|(}J)x*!o&RkM(fx~1!8=5Agmh8W1I)*e z$~KF)4T{gC*B)`5M1C4ea~v^&L@|dl&TI&2(>BzcDvshlET%rI7~?w;f1*VV*qB&l zs)<$_H;Q$3(&C5j6whz1Rj+-5X`Wx6-|>^}S4NP6xR#=sCn%}EjBT!oS9R* zzfrL6By8buFx|ebXW>mV$dSxin7`zEWM@8<_h51e~6woC0 zQknSx=e+!=O#OXZz_YmGir7vyyA1JIE^7Duj$e`1vh``Oi4}@f{r5Ud0Y$X|riOXm zIpb_Muh}7@pNJ;qKiI|~ymm73|GN1dYq3APsb1eZ{bG+sy<_LY5cV!X`+K~f@7liI zdg4k+42C*2--Q!$Bc^|+clRWwZ&A|kRA53fJ+kWsG3uQ3dTiS>ySip1YC!fyD5>>A zTFW0r4Pfh%67qt`Dfkd_oK52GZKOAy>W?4Ik?O9)SqrduCg}d;rYP+jkwsl~`c8f= zhwF*u!}QR%fLFJD4fBe4IDNtMaCvZCKRdpMhx3 zb$>fDM3-#6!NFReMU5KPbo-d6_mNTo%`DW6Xv`{vnr%=G0Tc$JuG7A0pL(oER!n)Y zsXr5CYw!9{rkyT;^_n*?-?E9drvmwU(z~oa&o^5uhM4*35}p0Hl!!0aGa(W^U2#>{ zgUegXX)H?`)W#avC(~h}*xnt$oTBo#6BJ)cN!RJ?rK&y-f&~ak>oaY0# zk|8G*OQ1|Api3In9n1D>X)9SYcfX^aP-}V1R5+&z>Qmw7$%TwftxOc_qox4%7wB4{ zWR~q2P=!&di8BRNaPH_&npmp0kX>LyruB6k_iDsb_EEUg0$o zj4C+7#mQMeYl-PAmGMl6?sr6X+fLatCym#g`&^wWHO>%TbXgNT0;<-$_F+ zRL@lE%hJJ2BB-Byh$RpIoM&HpV##(Q3bvuQyHg?#c)vw0BGBJ0O?iC#$m0TRBR>#> zff@gbJzni0wrIbmw-F8bpJ&4I?*1oneLSY_yrX~QdOyjP$yb}>bJa#0@FdT*3Dwlp zlpGw-j2&f7m!dL4!nrwA>)Z~Ko6CZjsr+6YXsvGf2#8)n++JsJ8wHMG1tfooOcZbj z@9?eMrmN-U7Q{AT%DH|^(5!alo{3bv^XFHdF*&p@tMB1Q%Lnk_{P)~0pm@NU5AT7lWfi0g`S?@qHU8h z#pqselQgwJ5p|N~DjnF#$;o6fi}DgH#*A#@MR3D%?tMpR>FK*^XED#0QjDubaOVhu z8e)R|O;mx08GVB8HV5B*{FKc&(5L(Fg;-H0<54E39hq453KiomZZKRgiX;cR2dA`D z|MzwOyG2Xv&Hdx@>+F*M=23vz?n~t;CXhJ5MMIJDQStx1Q_!snKe51otfilypD4zJdnQ#VW~~e%fbYizDR~XVkUl#(~|=zb7UfsNtx3%z|{2a_xex6$JT?^{Kb@ zy!-+8l+SUf{BS&i=|#?Q3H1ZRhqEwCh&;R|cRy9d`^G*TKpLkf2E$=XWX4 zMkez4KG#Bay7eaxR7Vt%h9RqWEtM^76JL z2Xq&(E3k2}vqRM>a_ud@)hec?Vh$3(HsbY63|q!kjS4fF97zc9gpPyj!h*Sj=`M~D zoB5|+0OH)IW;VIg0)m$L<64lXQaN9=U1Au5u#V-M8?l4cu?pq~RBo{-dr z4v}W@p6PAwvCneRVvAqf+uJ1%7$5)rs;cNXtN6F4uCAT~QUGx4`97S?`X892gNPIl zS1WbBavJ?E2DyVPjUzmm2d+6m;R5y~xo6u*pN!vctWuo2#x-^TD% zO{2ygy$ZgLrAA(<{@-QffBuQ^YT%B{E_W}!sDG;X!IGaxf5yj4 z-G6=e|N1m!@x+V+nm4R6g6hBXKNfGv#?JcU;$RY)l#w|h*dll(LG3>RLq^z!vA|z^ z76qq%vP6;mpPO~QJPXUqalu9t;+L}kU{%X@3BP*@klAZTCec)I`F2fUu>&ppl;B$@ z>>_fvU}*6-h8YgaG`d#??5J-H_qT6!wRa_0wJ80gru6})rUxwG?avCqpzln3aZC>x zC|tFEDVVBIT0_M`JUw{p_wj(D=26LYm=qn-zl-~{sm=~_Bk+ko9e|f>pp0Fb?l@KH zB0HzyG{rRhGMJg4WaqflQ(XyHGBt>VVw+g^v zKijL0s>JgjUPord_Z;ZNPE^oHnGz?{&hYW^b+~L-YP~^*k%$_Vnst~j(zbV?Lc+H9tO*Ohml&^PL$i|9la`xwO%o%$Odw-M zi1Rk=3-d~V)6@B>^9r2 zmoO6FTJ<($d=HNzV{#J>8$Q?5#z0}z5v(cpqe(%wZvQ^;sC9KJM2a0nxpbK588>X# z{H^+sw|c+b9JhU-uI=?qsrp|{z_X*l7s=SVUWJPH`b_#VPwXX#;#@W{iy%*1rPC5i z##|-xv5P^|QY}ST`0WvKbd>h$ggutw>;Oe-vwsxv(~18Heu1Z}%XBm`?df8*P;UG^ zL-e)pI>1VG*$vf?>-yiP2c)`CRxWIO5``lQo#u3q_6W|?wrb%t%@;TG*^UUD&)-_1 z5!wh8NsemC&H^pfd&tlXFM`H=J42-7DPTFXTHwWz@RFu!?1w#d+R5j=_%VAz+Ebx9H2#u!nvk{{CEYa*r4A^1HKMCC1bjj&8stG^`R>-n&>YEiqs-&N-n^)2< zF83*(gtV4*XJ=<6x=h2z_b-FVVi>v1i9e=bD0IAX48jn)A}K?C@tvZm0Q zM3?c4^Uo)5GgiUBp%N+ucES^P6N`qf?8@ApH-=oz>fq}m!NVUb?tafm)?sX&<5ttk zd@9>n+)iW>0mQY432@j-qSu6V-C-Bk9G(VHZ{&YM0Iq3kkpWcM3g?fHj|Xd)P}pwQ;?~*>bCO0m zz|+=$!5M^gJbdqxa^G)2DTGU}zJhx{&2tU|1HswY1^lSV$eHb2dz}={RWCs5+s?Ye zLX$=jwoW zU^Pyzms|J}{ncox5E}c-m*)oX;N>m2$oqZK`L!R4Ov2X`1I3GX?j|7cejBQ z9yJ@`9e%Ncu$GE$t0Sq>6fm8FZwwyr@wCneB`7cTF(nyPaaXzS$2@#*FuZr{i2|_a zDvF|HVMl>dh6>ylF{0_47%jtRU_2ujW^GMHAAURKpIcD z*wjmBotKS3#usOD(?yR%J=~Cjoo+S9^Vsg8fB9i`BVKd2;_#N@kaf6v8e{YEG7*lx z>0HZ#f9CzTsFC#PNM3zwfEXf5$nK!*Q83wOj(|7ENYFDIp(O4d(ndPF=4*KNU2|#Y zR_f+@dZ*aO!iTtUfKVCP;^D8HQu(#A^%Ko( zm2VIHu+~$*RTN-<&BiNQ6EP#6``MO@8OMCJN(DQ7G@7nKn&YMGI4a|^Va6TYsreM! zM9Nsj3^QILJp-5l{^yU~1hS!BjU6)Jj(Q)PA>>3i0_tw~X1RAReNPhmT*#q5;)Kb+h8==hsP`TPK-nwlM4l zK@glsLCcgDRZR@MauF8R5ut`80nhtPNcaYUA7&I8)A@YWffxdTj|9`Q=M(Yb>yO-J zK}~ecoFWtR%yjuYrE{wSKkaq1;m^M;#v^$vID33=H+YTS)d4W<4GL7EVQ&Q?mXQby zYE!ko)dX>f`cLF)}$M#-M5t}iPTd(bUGxC-nQ19gQ^v5vX z?e_v<5<^LPOMCm!=4MXK26N;;{ktQN%LV~_ME@KtE#U-SPYRi1V`HC$p$9sPK01u+ z2m*Ej7+xnL)uRNDkpIa2sjB|b%(UaO_(a|OwR72t2jN6dT4NEeG(~FYCNPyYy}KrN z&O54??RiF<6~;Ul%Ae(fvw*X>xX3Uy4p%LJ?-;ukSg(vIK-}#C;tsuonPsLaUyaI} z`N3U~8ion}49!xu0$Y}985ZlFOuX=>9nqt!Yc12*%{ZzvfL|8_`?emuCW`5)`bWDgZ0`RB{Fo5dAm^J&8oxNb%#^TeM(`TQU0zt2DN)+Pr}C8bhCD@6prD{b z(UiSk$5Wi5Qtn`o%5kIDg#lxVNpUq712IX&ll8?7-*z{5qR{ z+yME-*GWJ1cN)|VT#tH`;g06K1SW+RR_zhZ23py_JY|B(2e&KcNs}Nwz!SSae%Ez((96ZmZ3&T8G=PynrpQ-kN0~G1Lu6}h-R|=F{_=)OzM(KMZ{ zA_p2=xcIZc3TULhf3Nt$^x#wKqsXhlfc^1IGzntDPYD1wTnzYRF%B+Rl{hU%RW+KC zkaY(VSq~2& z>dl6|@0EWCAw9dq11OfL4AiuleTyYB1KC66m)Cu>HvUnD0Monw7!-xHdB7omANe}= zLg9dqU+V@K7!TBctzP%L1Z#mRK}JRHB}oOXse2fpd56`6KI`F^VrCE*^PNn<)}A{f zk|Y0k15$hdcY1s_$?O4$wN#`C;XX>Q;R>HP@Pn`dCg4*jGbrTiSQ-@DY?<+G^>+bG z?WA1kd%>9LrnWoNqUGZ8;O^<0*jwKkep4G0}fxdU}ydYNTn zWK)wlzdrQ}rHHs2funNz_*qw43_=f)9jmjh?@S01iF-VdI;GgV6efI*0rIQj-ApRSaDfzwSct|P_XLF=j-O#D@It4jU&y zXQd>XM!_oPQ`dIL3_~P@YHSyGdS}qa7{07x>$Fu(rE}>%I;?#@1On+WX(*V{za2PaiyzVZ@&0>w=R>)tAIlU2qv_kXC?jnt(BTt<h`SjxpLXOo%w2TZUL>!IcND}@>h+GQA$r8U^g0ZXvoMGH?59u=!%h`ie#^j zF3>`!b3zpIuY-SQpez9oZ~bFf%A-$vxDxoDdQ2v#-B~Me%V!zX8*j$&d;@hydQbzN z#avXU+dLg+aeY4?m-8DM<_XeTHk=XT-hFrVKn#xCre}I33wL^6P2hmY^O7f}#|8Kw>o?a(St{ zr>SBU+>vn$2JHqXpYteGm?S(Z<;OQbf46!}uxSYbU<*wteC>{Mc=veM5XHKplf*|e z>MKnsxVR~2c>kO3e(;EF`p@aS_-5XPr6N-FR1xP07O#_epJ=KCF0t}39B0(M{Iuy7 zWKg?JJGuYL#=#*?mJ(VL11|~LISUcaajO8ek=ZblTdGW8>>cvU#bDUG*s5@{8 z*B9dU?DjxT+`aFW>+duX?xb`Nx<;hl8^aF zc)l~6sqk$^%;scxyje`Hh4J>l9EjmdFOv$&`9i!PaqkBsFcKBP&K^}d3orj%79Gwq zb`Z1$F#M7TRuL`A?#3i||KJ{OcN8@Qg+aw$4(@V<7dq6MTJ}q*1@FeCDfWks#1pTi znpc;b8R^;h*_fzK0+a@}Pf$m0l~#!1LxTKs4a_%*xZnW7>jaZA3QK(o?F@Gq2LX`< zfhq^^Pyp(Q2S(gb$eIv3a5V3Kzh$Ly#ZRNQ{u%g6=)LV3n4CyY4@YXW3Kh_^Ud z*)p#Ll?ksjcigv$4?-lDC~HOK;Wp?s0%umBhGxn0t~XF5Nga-Qpd%lI@lCncWeL0> z!Wc^b)X=ezaKJgfWecvfa3OC8YoWiG>2h%>SeGAqvw^ok^m}@u&R=~ai!rKsJF?dD z-hBxN*6A8M4j(}d(+S)E@5EvT_RrKhB=DcXM+I>TKuEjG_vLsLOHV?xwn=ebM%0;#vxhuvMHl<04b4I8WK{y%ys@DAZD&(AaK%dB`n!ka3f z5$V1?Vrs7O3)j6VQw!1gGjJvBav@-4dQ^>fQ;KMn+d7f-vG$zOX91SXZBc>4;Y34aTcmc7Xuf4=QyJspIq;u#jwAP+1u?>pY>>v|)tN7l8czhVX#LzAeZ_7VbpGvJ5%{Y5bkF zSEJ;9W2Q7HN=jsxjC&dbHk#m@k@3!%nHk}0SGK#`iJqPwa?kOt+1XjP@A+2qMAbaW z9v{12_eXY>RaJxTbRsf4`Dn<2`N?_KG)DH8h1-&Nw`Z(vHw6&@sa2J4tp{kBp)e%# zo5*xyf~B2AmBlelUptjdqMr`nO|DrjahZeq2s}FJKWh5V8=f)5xV77qu-F+iDPBK5 zVe2-%L8Hy(`@3=G=@U~`C;5^(oq^t;cdT~UYRP0QP$LMx7LXD-w2~EN00?xkJ~7p# zXy`AL4sbNg*m>c=xhAR}Sws35m#00njjO9Gk}+S@Z_>xMD~*90N!_YXn;SId!Q-)6 zm8sO?$Mt)MdWDGZd+jXuSYg# zi0KEz54sho^z9sPzcdQ2*lkolk8BEGbYF*51SfISA45X9P*GV++c=@3VUPPlMLG3q z%o>iNXe5H>Q)9dAZcQiODLQjS>6x|ap|o{$$vO6Fk? z{UU*H%wZA>n^5z2Mw?|0nqJ{Qm<3LHxeDU}!ju2UAy9 zW%JLINnyJCq#8h8?eX3gW|=jp% zzq8d1&S4%__)DdJmHJiIhY#ZToF;|gJm}tg?-lFn>OMYy{`?2<(+h-BDA`v4-1E_0UwrXJ0=+2*>OL%=!9w83_k+RUv-y19zp|s_2LjJ; zNMsT~BZa~Mr*wNqLf1jplt3*-!^Kdx4I2MbUMzTVopkg2OVcCJz^iaNDynj7C6Wb|? zb?(ReyT-=G-p%E5y_7#0?@jvs{tP}VgZCG@y1FhYL+$ufAa~=6?FokAu!{xM+bwn8 z^1QMXV|KzCVH-nD4^S&?aj~F*+k4_=$)itMILYqrZkjLKTU%TA=2EGbU9!ABn;gB# zFNhs(k6Yv<7jS|I_}X9)62UMN!3HyiqGg$2tsHn(m}Qo7;qssxthwtxmoE`$ujpEK zhg!-%rzoYDaI9^A^UXIeiKj;u%dD#ceQgyOyg*)lnl{N?afW%~R2_@JP&hS%$7fxM z&!jQ=9~IU;EiwUxo^RZ+VZ-XHufF;!I)>{5{P@Q|Ha&00B`f5U5k-N`E0)2=TQ)&x z{(RHOl<4k;Uq1abJn{A}7#0Q73yz5HrDu3N9=Pth>-dh2j`cU(aKr9Bd-n7pPjNhP zD>Tg{aNxOSWqAJLMX~k%a8<}41EQhXMoyc-;6HyT7@}+N+BbWT_a{o)^!3m1@UV_c z2gwblak`|k(ASbWBC zQi5N-+zh++YA}*W>1AGA=S3(B#ZV6MkQb&XB;l4Dz2K5~*t;(eTeg-Une+jLHN`df zcDnw=i4)((kDaFjac%H+d2Ma&Lv3wsx7O6upv4{Bczf$CgDsLF(*F~Yw>w=+VAE-Iyy%9>wLIXPfi7ey;}%l*fX)0znSjGK+1P#xWw8(JOSH$8{CTJD)_o<^O{V^vb+Y zD%zl{iu^L06(L`seDpaJh~`Dn+;C;eX0)brMXZ@-(VB*i zm)XToZ*MP)<0o?D$PuWoZ!mw`@%*)l4yuNKtF~9Lrkas!H1itOJU@P|>1C{&c_%fE zz}%Anuwlo3F880e!b>yc@NY*NvGV**^x))C&$PZfA$;j?I&NJ<$5``kDl}h@9O*$h z-AC)pc{fh##&ywBK7D^KJ$9m4$h`RW-hsr&PJeAEpUd1@C}cxLCHtSCEB(wFj0tQB zZd9__4;2cjpGc)*XLR4-Y+LU_Jv}{(DWVpw(WDd6h7Z!KDFq8{3M6pW0rc@&piQ`| zSFfh@2;gi&WXd)d+MvF4IjoCZF<<|o{+E+o&Gr8Pd0gwhvtFN3>kzwgqkrz=Z!TE1 zZ1I96En;(PEyUs>2!&-3L~Cx)Cyjps^^_9nEGp=@25Fq-ZK~pYBz4DyJYI5_ATO3c z;5p!t54t=qsEUNd=% z1=s)w%dhdmHM`QVe`ppM{}@VG%ot_iC#+ccR``6~jK08N-5d~?_%Qt)a0#*;^xd8o z*!9U2`=ZRi4}Kwec8_IC10U<{y_{v~a)UK{|NZxS=FFKB4243JN=rt5BqNWabYUK{ zJDCO!B;-l7r<_a>1>{vZDv3lQ)790LeDu*roir`_EHL=8PWkx9KQ1j^yf{cv-lzlu z0YBPb3NGMP-FUX|Rrb7$gbKl@q1w)@PQ`q}!V-!4J> z(@gzEDcZ0fSvz{8j`gKtMiWHJVK<`KlS`qzo3v#%Ww!O-G7s?AM*aRe59bf)nP7n9 z{65sLB#x6LUf@OSLxvNPKQp?@2$Xn0Q4B`Ol}fo(zK}`f)zr~+Hu=jTCAD3dHT5g6 zBXt_TDHQTF3X)vKiL#etJsyttcz8i{3oe$na&i&+;^X+wXH1}_DFu;Gyf`kPV~!emzVm_gYqSBumY$Yt7;6dlmH4j zRWD@KQZAb><`Vg_Ojjb6eDp+Ww(*zo`h6lOdm3dnSj+Q%KgUwcOxerxl2_n8qD$l% zUbO1Ra!N^O3OP+HWO00E3x!-Fo6U5M6_bx9W^etR{tIFMxt{zn_FtbYOD@Ud5WBTO8&>`D`CLL#u>aDtvHvEl57B6p*1w?am;E9ylA|0sU5&2~Bx@s| zG}i}Q2hH_iY-}upC55v4Y+N5s*0Xk<2i$c*aQXZox@BOoaDs%wuE&MrQ$qbtB+zQ?%&O({+m%_?K#te1q-f0LF!8l4Gkn@OxRgH zD=LG^BN?Dj2#Vc(_ucHJ2$y!56HV^_gN1hI(q!+Y5UkD3%{jl{pJL5uZw7LI?{HN( z{Ozr8zWF)|kGCW9_)`?7<4sLXItte*92+TQI0Ve9D1`CIOroh&ih$CMly{e&jrXLG z(G1}82M7qn??=gwyJpRrq%6xBd`<#|^Td-+KKXzHx=tnGZ?q2&4?l`^q4>4i6stP|z*bd%P0x96O=eoxFaNA}7PCvXIf=9!-ZJD>Q}$*A)-UTm1ZA{d#Mr z!nUVeCh+4L-;8VMa!Hc>6uE&yCzpHL(?qJr4!Q4^n_&IjcY#QoS;j_9<5_KeJ$&Lz ze*iU4{ulhy3ok-1d2ZSF(KF~-^XJbeFv@@Z_1CX^_St8D^X8jx_Cp20oss@+h)I#F z*VJCyGPhqbe<$pMk5_9EDgYZN}9t z7Y505F`ee&rPo97$`%)7vNq`I1Fuj3eNxR?PRD16@Sjh|;qARV z6pJY{1gBG%3y@z${7qI-RPcF=5RLfFcUjdzkw5bAix(0wmhuy*BH~)SiDYk_Pv5Sp zs(KHIOW-Z8=LFt<6=n9DQ63WsbW7kGQ&_qX__=dH$Mpjr40+_qno^?r;?g3BQ>v*E z;OcQhtR@J#WIq@J4j`B1M{NdRushVm_Y7ma-KmcW;LPB{*BfqvniXr{z}s(w+aJ)$*f~;GzrB_1`NE8!Z2HaD9ei+CvI%4g%^4+JPL{#Y3Arrly?)L6bmLW zYXYyD6{?xu$1uY-T#|j{~%Z4eseUhb^AsfVPGmM z0aT{vCX{*Rj&D+Pu3=C9O|d-eduT(O3FwM0oRe7!Ic@@v=R14h|naJnoI_01LZz?SfD!1S?mr96wj? z&3!o-RQ~ttAN!c6)feZyu691et$LxTZQD39eW@>GWSP_FJeyHdUFQMz zr6A8f^NY5+E$OV%b65Y+RPmY9dBRMo(VFCz+i$iu%>Lfd5zx z7n$RA)yG_1tcr(vnbGEm97J8L7?D^u=wiVyvYf|-vNT5kCyLZM&+7&&sG7kl$c|}@ zW=eT3spbobf=3&?!OtH$m{YrV<+KC8$w_^?ve`?q+1{+FBh87_1-f5qUwPy#{2D0zts~af-$=1BL=;*pZ%G zvTuJO-@84Z>it!&m^?*4%?N)91Ooh~TW;}Rxn@l~9tE*#G!9bJb^~Sk;HX`i& zrC-p}eqQt-e-S;X1B<}B$n`+gSw4pxx1j2f(^Ms+778gf=SpT|ci-)iz@g4;p?CLK zq4W9C^x*OL+A?OQe%OCE$fAEm*c-1EnRrCtVm_8{!d{At3>y(y)-Q34-^KENmne8d z>}!Uw9I78j^<%MqI@V9ksQG+K%}U9PC)0O(wf9h`qV?|17CWCG9J_S&!~VMk`|k?u zzq;Dmc(vJo!6uI^$Ju-)qW$(+Kd&bIl1svMLZm$gB9Idg@527$tomt&Rlfq(FP}^1 zWTEe#i1*N;e6e?Drquc5;2HaGTGxkFt5!*O-gPHoDe>w^b=;5ZgXDHM2|ORAh?$bh z739s01)RCVha-W{krv9<2U-hh{eEy?Kq zBo?xBY$Rb4$H&j3(P&>Hkx)(jxFddb|=d&KS+YAA1=58(zy=Hsrk{2$We?Jf|0A`qR@}3wT z9%kLv+$AsTzsIsKm&;KOJo3Qqv5oWvn?HDL;X7&z-$7dt57RMRAVOH;V1;caWkbRK zqn)owTu(^Q{_0HEHRKm!ZbADnqh<9~%a<1Jy6aA*x;jcq13Mmm-8dOQxy)lgPo+}I z6Hh#$|K>Npk=(B0e8vxA&osPacQ@%Gki5YS-C+R=b4x753mkmks2`U}*F>sQJSMt;F?ozw>nR zQjR;%syyK2LVD8+xt5&R7(f;O}Z&EnB9L$ouWbfnt^(<-+v|qWZ zZlfny7S+z!MDmuUr-1xTyW;E8WKmgSJdHot%J>6{ zX)LBXT3cIn&z)G!rlraTQ*+#D(?D!hb$B4B1==P{#7$?`$GZxWU1}M{sT5 zolGXpYLXGu?RGD%si}Dg6~UWP$@Neu;}iJqg_TQzpW6&7V>Xm&*e;Q0Wl0_PmYhm5 zY`L65G-GYR#TdY|C;Q52QOmf_*g&q;N3>QLsD`oeIpA4(C6q>TAb4dE7cYn5cl$u` z2TTC(;IRa3TDBJYQ#y#so8ToNlr>E7Hjfo#@;OB;`G4ecxxOCo`R`Lxy2})EzfEKQoUXoPVUfx)27rh!CgF;&*jW{L+2@yk4T#h4P&CL zVD8*-e0Z%q)dVIJSX|5(%-sOdnmPzaYAz^Rk4F;L6!W>;^7+EIyAO^G%sL~4-l-JxZ;xeCdzW`5PCMz3u9@#)HT8jXCN(gSNx%A`L&@1{Tu`#v?4#HZH)8vF z+S}Vr@RkhhZEbCodWF*2nCV{#9H))1fk1$CL9;kIcsY1$hu)smYx*O<`$^U<`)~Es z#Fx8|_j(Fm_k(}=-S2+&kH7rone)_Vqp>Q#zd0I>0GTdmPMYmk(#?FfENe%Eppf*M zVTLI%Q>@Si2adJ8(s>Tv-L(^*`QhKgvBL*J^2jiE+11dpRh-Wn!>U``suv2IS&vI(T&_i;kRx4iV7i*bXJV~dtH;oS2Cl0b@))(igO+8G zS16{(y~&1X^B`?JK^~$Z57O<32gDa>&Cv`i+qkpN2-tL3>YG@Ibn2HLz@@0;%*ph( zmi%FZw~Xy|Yn77#F0I{QgShma!B0QWg*+Z{bB;Bxky-cFEXV!wSt0sTrc~^Hyp&BjnD)Y8+_)BVFA{&1MmcEN>t^pw9B9}b84&wS=HA=Iau>+0%S@EzvKUT-_r zC+2ob5tmDf2qGEesa}MI364`0TfSbF$z}Sa?^Hh>pPRwD4dC@V@bABQ_0?B*l-CdW za~#+B`mwRGUOb<$&t0fD)?^P`TI?Hb8xVQs&jSm%bwFF$zOMW}vk#q+`(%T2JaO#} zKvXZXztP_+)-!4In(emDYIk}4{^vY7Ugd)Ny(y*lM?K1v*6(B0Ag>IIjSVigrN+gy z`Wbefi)ZUyJQH2p*LL{9-&Fqq z47T3EBwHny)F!fATx1~XGMJEHfL~x(kz;6E0oIcjKoDKPODHE|{a8*g^VJwOlmy6! z4TjZAs;)**KCNP5Ff2&@RXq1bh{^oy@oc86y#K`7Ka7DON7d}^etqP>rU60I+JLDvOFFR;4e&lMA1M(Gy~aT{A(_1I&_M<>(|zE~3jS%|{^ zd_TM}GR6J34Eyhnc*~qQ&GiipttJn}{&R`0D9SSt)GdQ%4m#|=VwKE7!bNEnSc=ZW z3NE|T?~ABn)29zPq|$ktk5+n`#Ohbl!wG|0A2!d>#*$z)Qyw@zB5iZenQ1!aWN``%BD@5 z*o6xh1<7;#ToxT%q&*+~=tpz=_U%)TA3u)ouZh#mfF)dqeT)GiZ0>5*;;XP1DBKy_ zfI5)R3wmt~v{(#`fFFfo6-pWdeM2m~vO|DpUUR{TQ5Ixx0TqQL_A7ZdVRtd~+T0}{ zcXGHo>RGs`F|cAecp?!H91q-bqwJ}y{*yd%9V%%$1cryf{r1jg?>qa+YFGhqryjr! zUU%Jf^|ZsCJZ8zmX3P#zYjzp(kP!CEVo3zo;X@{1YmA|O?e5zj(M zQ(?^XxU)Kwo<+}GyLK({U(Xd+T(RPN-}~P4aQeJDQ###jo+V8(Doh9IWrhS&x^wpD zr7~z!eM7fg6TPXWExyoTMKeU-#7Q@4BC-O|wRF$Ve|=)V{r*!9Kokgo!ETt-sKIA9 z55xSHvfSG|EwB^nuhE4MBtU|o68pF;B%Y%p{BYB+9{rq&a?2$ zOJR87l>k0N#bc`DbZpv9dES7luNZ?nHV#3^Um|RFygkg&zMKIkhDG@Ir=zfS2Mwj7 zc|RGADID&FZu&Y2;A)^5sy$4sp-G_U@@16!P=$Z`=OL_T71Y$!c zvQFBh<#M^&aUFZOv9a;i>PSRn@wo%V0%UGj58~W8P@+oO{Z8_Lj`O!9P)RNghh$VCIK5$~Vi6*UipnjdgU1qS=qX-S!6F zCqY}=e5@zxaX4m82!_U}VZkr7p~28k0>AWXw6Rnx72wE`!&cs88$>*x%?Lv)8e~>C z?ov~be3z(XNVujhZ#Ls9mE9pvCU3HbYeiL}>NBxQT4e}aOhoW{@9q;f-!0>FX z@7;H!qEc0}l&_9GAk@TzoD7^KZ?|kQ9zVel?kMq>x@*)A8n+I*tfC8^;ztz(D&76-s+u3&f>1hRUYZwr*C8~KwC7-hxIuZ{&D9E$O%!_I<{ zY4Ls=UN#)yR<}S~-3Dwm3$S&7TMNv!L0nZG2X|RbV`YwsN&>&h3&xeQVca>wGQap~ zP2fN8IWcyj#uT=trDf^Dg$sY@rkidW_~IA8xU0Xvzw^L>1AVW*{(55j_U#2Yw_JOs ztc}m`UvtehG2}7zu~>{i%{H&s+m8B1ls5U}I1M5%kxUb{wZVvW@|-)lwNJ(0Cxg0W z`Ozhx&nFXr8IDAvp{lA^Y`t;ZfL&c(y>QW@MGsti?X{`fZo6$S%2S7q9Xr;2^ytyy z{rmSPUwiGfTsoaTlR?|88{X?#xpF1dEnZU-Z48IPbMUvxAWt5|AyE(`9M6&WDQnfw zs-sn4Jd%a8IZCtnDUWm4t}k1*If-@JgF;FpFUG0`WvuE`cy4ET{f38!m!fRE7Ao<%xZ(u=*mz!HMTO;$b z-Jz1f$OP3gUN_4Hg216X%U4H$!}XpGRskpbfN@I}c+1*$CgNGhmm!NwW-0~DXad+1 zgDAHj^^}eui)9sMVc1|>B0Rs_wmFWsJ@0N@%6r>?hp)bF0Oovh7qI=EpdIc@9DOwb zgL^KJzckjP%+eCB3b)~$Xg9qWU9J!>x`G04@fXgF=)$oKrG6mrvP3?%SO<+d%dkvn zq+<%C7?xOufNDxopp_`lH*jS8;26m#@Nz^F>W7t5G+1C?o6KKY+^}?>?D?IIwSj?q z4R+UYR_J_JRr+4hr?|YF_X9Z z57!8LecMwBbsb4f2UA$z;k}u3)Pq4oJqwD6kTq9-LgrEFJ zJD*NPMSn0P1_D8URY(fDA}sG2MSf9WP4=uhEZSD!HQK~T=?w7``RAgh0DI#Vak#3@ z!?q;*!2jE~fZwwh^mn@?e=a9SSFfrcsjrQOQ>oWr*Ny`f0M}G-?&jn1_>I{2_fqZ& z+I>sl)@&rl0EVCQDHI7lbMo_0Hrx3wLvRV`EANeMQMWt2Oa z!ls}Cz#}6Tv)QZ(*t%RU5t+1vV=PF5HZr1UCX<;q0FdfILNVsv*6V@reD+*sA;#ef_MSk8QU{|jMy(S8bEStOQ z$@n=iT!3x6dH9cCx!{f60wmJ_;gAOY04n_|<u?a-3Y@%u`P0{9U?qX|o-o)eM_h4(w3wTX!Z6?%rO| zhKEhy))*ZDrYelWSjIBclOYnj)SFC!2bDR)E05>GC8B52v&nO3?%cWUHt*o4!Px77 z(tem2NkD{|$(P|M&WgPT4%($Wr_+oq;nc=WaiR6b>zX(5o`493J_$fOHIL-o0g>)$ zdi20kNBYftR8yWuMMH(SsV)PXZzw=pQ{L2%%kyQD7LzYA@ai@n{Osufq|yr5QEAQh zCcuX-U(i;7&)zW%(W)Ypl!&G%I{QOsbc>dP}Ojyrw>Q2uPc>}Ikm4RES2=K)7LD;%o1Vt@c8Wvapt|cFrF0c(Wb7LfV@zQt3@*lG7d3IHnFL%Rz zMhgD*r-P8r1Rxr%p>WESrW3^{`C;Od`1!5o=H?r#tE){fq(PpA?1t+=Y@a)xKh=>5 zbkl%lc|X%{Yi0S#rv|{ayMTbyLf#B-S%%-0dEZ*4+*68dVG=GG%hXZecE19*usL9h z2@rPl!>2t(5G4%+%8}aa19r=kFb{c*$H&6|&)$2$$x&YUqW`L{uFhe4a?ofr$`J*E z00BZI6OFy3MGov5Y=iCfu6^yjyZiR-`t9}G-?iU5V!Ynn>+1}dWNZv33jsoaBt#NI zC~I<_p3artIbT(En4rXr(fj!|lzL{mySl#mzVD>}IscP2?6`|YpHI=xGI@Zzwr(9d zV^;m$!GR;|yodMR820HqF3RGWr)MacA{6pRgR1Wf303(-y{d$(m|24kANR5J*j_mY z?Rov#J%23$#*};+Q=|)sd&0D-rv0olJB(q`7%hy*27Ho4@>;q@H?4sUb#-5Vrmyd$ z07B6}mg56-L9<%t;H|fJV{D9!i`W* z&qGxrjC_H6qtfeMS$yW%2Y!y^AnCrA+3<@tVk(kD19^ zgEf_$2haAvSY!ZwoX# zImNUSBAtp`$tYFaT24^is;IzqK;0t1Yk$^b8ghWE=M+y}SXNh7$?}IElB{2D8%_S? z>)DekY>3ih^{iR567B8n*N|_JVhZ0ce({Sv*=)9tdzI32irdd}15+-1bt__-T`dp@ z1W8WBLZJ{dvbB-ysAGmUI=K3jS@YQMU_ZU+tGmylFvF20vYqu*wCc)z$MOE-c>9;n zZ5oDOD-`_WfJK>PT9iS8#>U3FmX?u-p<!pg zWGfm8%gbgZ{E1e-dg-cgAcJ^qDj$ju{f|#w(3dlnA@0j+;kV)lf6OI`L8Zf$2oUkf!d1aW6D5;nl zD85;8z~5$ilm^l}(Zx;S@b#>eK^ zuU8zPH7Sf&VKll%yJ=^@Ix@+kami#mcr$5P-Mbf_%`d9P^P9uj{rke>$47!L?hQm& z`{FGL#W&{~C1|Arag5Bn@N+$(V7|}q%_eDBscb5rrsqN~t?Ai3Ny`kk8}X?5oHy81 z8;JcsUusS)Zi}}0eg2Ys@pytBS@t^{OqLv5(gxct+n99QfRImUw0}G1C}L!IR6Xemx)b8D=a5GZB=nHXp1yQeHGZ zaw|NvJ{8H&?gU9)nG<jKO))4iyB2iMZN^ZU^ixw=j9@)<Chm7<-*J-qJ zx|l!Ft4Cqi&cj*XVjJ?kuw=y^AFoqx8$|PM?>~F~4BZH7x-oJ8=~^@x3NC7DYO0w^ zKXA`(l9fU~u>NBffl2j)-^cOLsKlg99wp4x(HyX~w~!^2f#vKcmxM?b9wNy`f$LV{ zxaE4GJf>O>?826_tOwMbEzc{)XTG~99$m0#^{n&HOUxntu9!w@@%bMb30!q+&p;~E z7qs%pJo!b*Og5d)6bhp$O&`cvX8$P3!5qncT@AwY#mJ^i43d8D)V*~Hk~i1ZHV5a` z3L4~=+=`E$U5B=@9z-`i z1<%emfFm7{#!@gBv;*gzBTIAIWb||gwO3#DW9ExNPJIBEj5E%>TT92+R;*Z2$62?> zePX9tbGidU#{%WJ7tiSEC#n;F_uqg237vyBW^nfG*&7sEKdEeXgbbnq-k@xt z(!sRBf13EMGnWkBdsQzK_2jDiIy*aEz_8#PMQ5VEzFuVBk&sbH*eOi2JY#Ex#*-mC zZeU)zx5#{akRTd5eJWrx9E3E;lpM`0YO%fj<5d;ktI zIU@=ws&?)VKVEkEQAyT zJ6`-?*B#$`oee*?kJGp{Iet#Y&(8$PMbmbCP20hnP9;5)m6*qMtHxc+`#smm1|0=$ zdShc_E6)vA+c0fnxg+g5+#F;qup>(LI25lPNa74m$q}O5FVQH@Rj~q>AAC+eH=nnz zuC8qor+k`XfM8aKmfG6dwgn3o)ZKXFjnT_5zq~mZ3@#!gx}gj>o{0y05E&Xf_j%v_ z*kg}%-h1!8$vu1a^wIba(!S_$Wab|uBTfzarH23U`GtSp(%#x8=EBlN;K8+>q;W8A z5o{r2nm@yz{mj?i?#Ses{A+r9->o}i7-y~o7POH}(4`5K$LYL;=U(>X!N&sVALM?m zTAAFoL9peE^VoQ85_O3J#^)GvtRbC|@W7)%Jo>B;*<1;Db)TfRJi z>oulR9zp*=Q1q&#eRM@KndG3U5{X1U#C9;BYd9Rj*t)YIx6ejCm!CvX*a2|YHkj@T zT*Gqu4>F}?A@2lDP|@q$vMLu|`QP}tDjGwmu1-{yNm@=MkVyF~)Id-Gwf;Ei&i+mW zq6uWX-V;H4*@;%<=mbG}KUWa;KKbwqE!B~yY6HqgJrVEiGPJ{&XRzn7!t^ImL{#r} zRjP7Jqt6>|@G6LVJqU8kVR9_En%eI7YRA9$XSXs;lFGnrrxe*Om=>{olUXP%eXlYR@yWdouDF`LbaG4SiMd}3w>{s-aG8~vCqI2w=O`=_nGJ1shldVCH~#Dw;g$sITgqHAD{nhUC8hMR5Ve2 zRk*$}7^ljb8j~fjyv$OAUnHBMZ~gl9Z*1DMX@;%8e8DjEoL10DZrhc&hAz^K zv3tjMJbVAoaOmA#;-1#envG9<`Ab;5`gGcZrnuk9pDdsF$MPrF0 zo6h3(7d9cE8Mgc6dU=mBimQf6a;nT8aXgRiLFh5R)n(+29`>&!k5ot2Rb3)VHd}IL zlF$Y?HgB0E>PWUQ6M#l*D#M^9=_-;@2Gd7#;)??s7~F1#)@gzC9^0h_5}JJIPW7#8 zNZpEIP1_cxPNuOiejY|6A zk(}<8Z7VUNc+7#cfjz@{bfitwN*VGJGB~qoLw=_>FKc;SUJ&=FpFXoje(<$k`IS9` z0^IB98$-Ig8@?N_h5wR8@c4t^-o4D$$E5?p@GQz1U4VNc!Nhc`#ksOkfVv)Az;Zl* zX=|flk^{9+8XMqmn+^Z`c178=Nx|K}8mIn}ic!ds`Gv4I5C{jWRYY1;L~CR-78Lz2 zO^FtFfpkDRXPFt&1L>57%!r9x(twmQWz#3gt*r^UsYzw>QGvH7QnHX}+AQY1cqEUGUeAF_I4`=S^e6{H1aQr9g)#W`+HsK-gOs zgLhUlq(q}B1tPlTRp>HxTAu}GF*B_+tWO18dz#G3AY5DJV+Z%GD*#mjA5TPN5Vc!_cue=NnK+xO$S;23;YIZ=!r* zCQ+@Ri3AeTe@y3}aEsW=^@EduVwUTjiuj_$IuNp*FkZ5e#TpgQmGKydrwGRqkH?Ce zx@Th@o+}h4j4vCDD#jacDxN<)84g_k(Xc|c@L35N_4N(rvt1eeNJcX`ZzV(PY9wcv z{Uko=7oW}n666jhQm<3NwUXiedaPE$xe(@)9ng(PUz-& zklnpy4^*L3C1NVBS=WkBU($*tMjrx?-3$4(H)*YJ0XDcQ246&(;$Sj*{^d_sH_sNjSu{e7eh{20B!qzb6`vcGGpULrHSAWV6=eZ~Hr(qtlg*}vhK9P{#~jS)93Jalki)T< zvy)d_fg zA>=bAl4%)zBOY}3%h=Z;WIfvU*D0mXr zVLIpFD#_$Yf^5P;4u``vqBkKq^qjm>o`}VcO^Wu^P{$E8aP>_z0&8ppQml%e(*iA% ze5x?k2FJ#b(ludxTa^Z}I5&R>>C~FC0K;^F@jQ<$Y`a``*=6mw+;Yp@l`B`C$@H>x zxS;JH%g|d8i^a~_xN&3Vy6djnvvcRpSAO!7pENxF_~ZKr2M0MLtizeBnX2?*Unl(G z^@)`ioJGNW#}e<=E4i+Y`A89_mlTNF*v|o2B!0R*PT9wraCV< zjy|&C@#{x@0=&)T3lq)}^cz^ZIAu21 zr}50@lK?v%Dmku(6>TFWy#mxM?LP@CSE%&fG=BTYD7t!rsH#dZjp;S4=UCTs5PLKp z#n{?4kmk180pST=pe2}!1a`Yp&Z{*3^^C|dJi^4L%Pp0E>7jO zm(x1#q?J6a*?E87+S(FUl7L1R>~ zYyW<<`d}2n zxy@9pgaR`j@T$z{FlGN?1D+N`*W)zpYRn&Lr>h@0ReijxuDWU+>C3Oz)z!s0xX*So z0~>-0n`t~1MO54t9fmUSw*1+h%QBncl*@j->$blLM}mRtqT$f3(T2uEq^1VJa9B`7 z`wbCqRJDMAgKijq^RbV8>>oF6+BCClUV18-&ld(VX{G?yxJ9Da``w2R;@)q44Ts-- zlYG&TxUUT44t96q?|=9om^FXCsKn(Y5Pu+mOK$ok&b|63i1Hzl4Vq@6s$njAj`Tq{ znTnNL`*{R4j-73Hd=IX&-DJ?VGpqqi7XU69eo|e)Zz*JH&WNAaP5xunGWxR?bZ!wY zXpl3yV2ofLz%Z3ylyYc?864A@#X^9$IvrerYY9qyUWu+wU>TP;F>+8t@>E!hvKw%< z9B_o&KImmVZ_6l>1(;g_;Ff{6tQ zE+9P_Q0zVn`^hXN8oQu_-0x<{+1 zt`MJwC9}f7yY(+vaY7;PPs$r)9kh~6u zCay;qGJ}zNE{{UeZa?cA^S}txqy=SF=q<8QxenS?*&n67>a}c|e8E^j_PuI}hE|;k+ybBC4P+X26^KwQ@lw_Y?MVB6FU;K@*j+W=2#yl8Dztbu-6TOkEc(a0JL{ zl_kf@Qpu^3%9xO(icMAoZN<3E5-YFG`eZr06(|F|C*OahWXb6?xEB(=nG^GAd~%e= z5+VT-P(}Y|4mXR6bY=?l+3ztOciy!5F~-lIX*z5LRvF0dCO}m5;gKrjyW3uc?}6Jq zPXdbIeQA7F>JVxVV*;B<$izkyNAK$>r)8&kp(^t1c3x*+I{UNB;3CyeV$TcBF-94h=^`ShD zqz!Omn*c2qpJLLUWTpYbJ~G_f$FL8sgwAoo3)yQSx^Lu1aPnEj8Z8e3xIjD2bydiV zvzOQ7W9yr+zE(%=mPa9Pd5Mi3-;4g~H$Q4p!Wzkfu_<-Tpszwkdj#-O71@9FR;-qo~Wo9GCVGdn^X znEUm8aXPM-9A=d^e1R*HPUQy)E|FCdAmyCr>?`>L-yb!!qMBwq^4~8_y}T@EH>>o9 z0b^)IZMyGDG0*=g2AUux{=h6Mj{L{+^l=Oa&1kG?Da^imoJ=qST_u~ zG!B!s4VlyIAsg zqK3h=Dw7G4DU>-k3-ee*FTcG1xx4RubsJ8cqPLi3%~|NBionXMA+Fx+CTHVCa^`C5 zRK&P%3>oBL>Kc!;pYjEa<}&o2B)WY8m~LsA^Kb$O!hq%Pnr85p0ou0q_Vy)T`qGz{ zle}0<@^LkNPn0VZIT>waWJCm}-D{YUz?@T|6buGcvZYj#zd`QbvUcs-MN5}1-Eq!2 z=WPAfx4sqLzkff=n}e_`m1g2%{Bs)BmXBXM=jud5eS_@^XpRjhRfHlciqBl`Udu+8 z67}^BpZLg}tGB*Bw(DR|A%khGtWsdBR4y=)od5`D&1OmFJ^6wM5Bxz!Pd~3i9Vl~Q zcv+pk%n;PeoV>z?DrKI!0A7cZ5*~U&!6Q%0NT%{mzqzs@(pxv2t>e1ObEt`#&(q4%G}Ow2|s&K!SmbfYK`$R$^fn43(m-6^^&w~on$=QrBKcb3S}OrR+RJO{cg6g zSFiMnAmPK0Byps}rp@O^j&5R-oUhcGtATlQoLHeb&f&Ai&0!6N40O>q(CLFaoe$Pk z?1XdB!6e_n9Zb2eT%P>x{>_Bz)7dYIs#~s1=KDkgQk?i0%N5ggY8`q-PnjUIgQgN{ zM*8JQ$h#pL^k3Xql~AJ4)&9}cCr9%p+wwc7)u~c&Ta~J`*Kq%Da*Csh2SE=5t_*@n zLWhfj1xFQfe>8Eio-!j=4Aiaw5cOH~%y|ubKMe=GmISr3f&z)&5z~^>hG#|E>$!$L z`K=QPlnNb0*C{HTovikz#zt(o@FH|{^x)y2K7tDi*P_Wc52HpN!$t~63cJuzvjrdf z?DdF*A|lxA&LH>GojZ3PR;^iuf!-hE;pZO5djHi3D|P7C$1r3JV_*Jd$Y-Q*<0o&y zJG*v+>`mMDqU#9+f>^p_8BSZZ65k#EA%1)CS)3QTl6I8`19}pJdLQ1-J&9#E%*74Y zUyq;u_GGh1)U{TEm&66Al=|qd@D_v28!M(fz|@71ie>QWlyW$7hKu3 zrtyuY?cI}Zdd-renxU&3D zKhq<-)X6LtxFVYmHxbh9N$FB1yE?r*fL0d78ab85`<>f1s=<(YRV3*9$Exb;hERPY z!qF&~Rv@6N@cLA7-I}Td^?3Xy8dvT|Kl;(%e&#cunK8gGj)4)TqUCm!Ozm$l4WcRG zjpv`j;rHG`bz`#ws(4Y;)QtDu+=+XC@LhcQdv^(85sZX!`6oVw`KO%)-H?&b=AGcR z#r@9^O;lraC@uD;EaZ)h6Aj34-4)r!BOEk_EVu(|WXqT_TbWdUW>hnG59v~0!lO6w zI1Tav^c>lwb{iGQMJ&t^x{Q-VI8B86ylYIIY}p}b9x3Y#?m@26pVAig@3UK3oB|KG z0?2egS*fzOtwWtGKwGxO1(<6(mAWo9gALqjx}M5v`u^d9_QGHxcX!UrZM&hj@V?nn z%J+3S*g9FTcrv*=9>6W@Z#spqXHELu<7LZKVC`feaxvKcKF7z8-lB1~Oc1Mc0 zbPgAswn~9{j01VBa@fZW^3(a#V@cfkz3(GQ&zD|$362~-gnRF~7q|T7Eo5K%aA5yl z%$n7ThNh+|eaUe>5GMy)$^ZpspJRWB?LL;{oW#d6pIafY{C5HEnFMOf*Ue-={rJls z_bkR|x0!HkO^xn-n)b;sxhK}B-GkPbw(Tgc0Mtmb6jHFV+#(`FZ=vmxAbE0bg8&At z*9J*IIF*cM$yThl4{IJonxpMzaPyc>}AWe$pLD{IWB}f)w+DGA>&l$G09o zgr9F7!t5Fa7tF7MmdhhVOZeTxBwOEk7x}}lAieh>jLuFNJw337N7?CtY?vZp#@73G zg{{XMfW_;d9WA$Y1=|Sh$kAswX;UMMH5c|Ho2WuTRZL@`f5Q0eibz-9X(Z!4$dBpB zs4~1H4+{Z1>5-Eaa|K$rS&RI46NOR3K2mh}tP)d8`CWCZ-HU*$Rjh2R*gsA+bZM?! z$ArOmkMN;vpk6AyhSK~xb36I^gzd}Nz7XlLJXw(=DO#6e0 z$|`s(0BX11ymEaSj%&`@QW^t#GzM>yyBpKb8uuM3-4>JWL`I_N(7F1S#%VC<<}3QC zA%vi(xl^ibgzNh3r@rQs&4pR+zN{mF|W7;o|tI7HCpSt?}+Ik^0O z`J5O&a$XBQ+AgF0(5vwM<`qaxm0X)|yKf%?{sj8p9u>g-!WX`9W^;4%muqWlm3{jU;@KCrAV)@IG+t%XCAfgT3rac9 zYThTJaIR6}^9SG~VXt`AaR~quF)vKRYjz(6&IdQvk`aG0Jh7SF*x0WE3orVLFIrO= z`pv(57X$lwF~m9eO3obj2HbzN6STCngcU_uO9oLBT~8Oif57YYvV)dlAe3H<(z#Z| z&NJ~O~d#*R!2r~U(e+`49-v~gZlkj0`LRE#N; z3gE=ZymSPEQZ!UOKnAfYE6f(hN~`KLShc5fAg3b2Y4?XS6do%Zy188TGoy3cZq#+H zNcD44fm$+FvY8xu`}%Xwys&l6`@IpWq68z6Xfz(L3UkkuXf*mSZZJi5=#n`omS@g? zaD_v75l!m1IUrLC;CV%WhBHQWO^bUKC9LWCDJisQPFB($YwGLk)5*!G@Mg%kWZ-oH zjaiPxVxs@;_@MM;mACwRfea_6@N)xz&gW*d0@ol}RnR014w)FqNEpiau)iya`Z^zG zHG7fGIsKX)szq1oxm9C+GFsc44P0?{0juZbxd{f2?90RI?Kh>vhd=PS+R-_7`0&us zZtF5N)jqlXq{h9LL~4fN0ZrHXV=JU1tr<-@*`zq_Gk&`fFT&lC8lkWyv$_>;pGVorazt?vk#;QmZ z5vxEtJ}e9|-7H{?M)g`UiI>Q5A0y#wI(x7@ATrJvmZxbh8N6*L+hxIbzVn?6)~#E& z!RPa}vzY85XY`$S-Vq1sS`nz2iK@eL0GETVT-7sc)+}z%z=u*-SC=5&fBwxk-`vvL z+M2li_S?CT)wP%t>W|hIe|zjI&t=#@az-{y7;>Qa~wBU zaxz2N?5EGF%a=8+z45Z1wcq-AM<3bf1x!;9QG=Xx244-0d)7&U&Xt|n$DWmO&m$80 z28DN685^O0)+{w~!{r9%&N7NLv+j=MYR6&P0rx-V!6VOF7)fe0Ct6tm%ienzoonEx zD|J*wOs8*d=^S2#Wb-g^*Ux3Vw8IkZd*pGIw`^Bjx+z`cHUV|zlCKUPonRKhDEN(WOX z`@Jj+WZI0J5a9UHigS?yakeTF3*7k;;Sy1FEi9Jp`R@g10)4i!NG; zk6d>RNPaQ}KZb_}Y&vkc1mGTTA6(5!o3a_w3x>`;c$-Yw^A~TgU%F%Irne^rWpk#X z`)Hp8Rk_aV4_uzLLYsl^J(IuJGF8(s*@*N9!`HO7;9+!h>^N0y=~b&%v7Nk<{QR#q zH8m}(si_e<%MI?kfqe#a1wFQNU&{g9a&W_~s4MSbNUxtV0PZ(${-{#rRj;iM1%FUi z6-z`Kn&7Lc6}^{zBv5@!G0fFNg0)A35vwJAX@0h!e2u&Ay6bQ6xZ{o)p@Y7ssk7~8 z+S|)s8<>UEXdB{H5#)0PbRXD@P&kT3tIovPmtTpwOHV_9>@DtxyL;P97#SEskbd_l zUYx$+5~Rnn(9$`#mc#C`O)|#A)&E|(%!e>_w}bp~%W`m0tC_O6(#8%Za*OhrOm;N4 z=edovxoeJPHhJl*xCb1^xHU&FmQv7cUBU9uaDZD;u?vUM(*bY!7}C*qFppRJOD%ss z;P{F_2Lxcm)(@8!+f>O$Wxrde;#NEtdrg`mn4j0QOja}A7%k*C59alUQyFXL4a3RI zbn5YA1+XXUMLQLkJK4|T_hMo}iOO_5z&D;^x%@oGQI%`H-|=y>+i&js6}r1RanmPm zMI=i85A8u_9<;+kRvCV0O{nr4AF+3VUrw;U=%S18-S2-7+qP}T|T*ad@g?@Ps2!A`$T{lg{*rwiizCUj||M{$_IA zuLf3f1kxZmL;bztFy45R&YMOqo0)vsTAVDP+blhnT~#W;PWBB8wvWoTua>vCeK8EC zwPrw*X@j{+%!|omvM#Gl(fN@oZ+1BtYgHbuO(C0L65Oo#{Dhb(zr zGYuQ;HyJ}xnN^PvNCCOtXMQ{9R&y)$FX1D@7Lacrk%9r0##Od74?+ct{eup0r;X% zYE962Q}$xF#_^oFAhP4XO0cGY60G9DEvc0HV_DL1%hrnPI|@FsdtVX{G)Y)+$y!|C zqm8ufHChw&yzVSW&5gn?W_eOg7GGP$i{HODhM`mjT88^1(_Y|pY?Sq}mBxRolYk*r zL;zeRM7q<$HS1>KmUXo_du$&IO;u=CBm80zkap3dV>kf*48jMJc2(w^DG9)$@T|= zkR9h3Q)CJ-m4n^$u9PXqPBl9b;qXC-pq`)(mPioM!GSam zJ_y=m8b;kbSk0HwK!X*Hv|T~X6crjdNx5vciRP(ED>rV-sT|4$b~(^9?ltZgHas%Q zL9fg+FKorENTjBH&YX1%7B8&fYcx67$qt<9R;v`nd~px4LoSiR3;4ZAW%b2bQ;Kt? zyd7jI1wZZHYO)B3mj}N^Z-Fve3O5MD27GfOmRP%F-sNGR(w@zeVrBk%eG1K87Eorx zBtwSBo_F6HICP}zg+U85LKjEtE63Gyv~P57i!tssZgyWod(W(|uh;o~?4WQ^>S&py z?69QLX{dDng2ABU({V2wD>#$;Zr>3Z2m3tG_V_TI^J6F-Kq{|d!&x3Q)Qvapt)i{u z^IB-EHL-Si0avce;k0=LVaWIG8HM!vPRLug$Z}Wr2d-cabtjXZf!^(~;ysY68zeFU zEMKUU1a!O(8iP)G&Xy&IpsTwFJ-yqlY;w9PBI4lFyLh!C-#u-)G3_MB0yF<(@b&z;K?$#-TiAxm71(ZRs8?$uP<5W4|tVO#2hD(Kpf15JyvERQ!Cb$I>N@_{7K0#aO0L_dXI2%<%!3Nh!x@%m@8JJe1MUF*1au zUK2H(bxCg4fT7`S&4X9TQ#ceL7qV=wr^>dTrU&c$7SdDmzW@F2pSNz^x@&3QH*o*1 z*Is)K&p!JscJJOTdOW!aE|VGG(;b-LbHDM%8`!dC3l=V1hz%PyaNwM6fCY4oQMy+B zQ=j^jN!P`)>>#GMzpT1^L9q4G3tBFT*T$RRWJtRjj%~9-UdQ$~`|;ANonrFOKD`O2 zuc#v#<8j8}^qP?&$7`#aF1xVhk|$pt+PPzQCOKUIt}X&e9=jz9?G2x5;=w0O{MUWJ z$XH>LL_OfNMZhPnH8F3tB!V`&UdDe!`*Jh|-1~bA4?QViEM1tOqWN+0Il#uNEYy){ z!-0YF++TJo1_n*s`Ev!WT_{Xk`F&wKF*{MSI95o1M+XymO;N}a(s`zP*z&n8s zwrTh%M`9(ETH=lm42=KTO<1b%)17me*glPrfCTCkwfnzLjCX|F_e3Du;dMrE`|6?w%xVDItrDBCO$N=5J3c)Us^{xvo< zV&ly>OgPS&~qVO3;V*MkH#(OS;p0-kX0Qy z!zgfNtuGKd-&EA=IxbxE?=8=6p8yEuO|vgY?ohUnN5mgq5b*gv*R_7lKQ(RIKC_g( z$MHDtyz}IEJidsIuQWF|ucL#17xTxx4_)eH1{U1;<=1SQYEO|WZae_OGQ>Tc3a(QE z!2RxZ7pu{b|NN>@;JY=kD0w*v`05(qrFEuy?e%ZBno&Ta91*fNHQG~VqMBnGpC23? z?7j2OJOBOjpa1-{`!&@uB-YA94e#drFg%n*Z9|nvs_}*5Sg`6GT>IHCW6q*>=*&Vu z^16M=Qp{VnRQQRaUpj-9oPa9X74W8Find~+wTf3}mKR~eGJtE@la#T`I#0x?p;MZc z45ybMb4*$@%&NA>UoFY{kmR;f{d>pP2v^2@7vMuj%>(D3jl$kbNGRN6+g+eN$={wVTZBt*q z@cW_c;LeW^POJS`v}el!&STl`$D%H-sI(ONP_f6D9D|w5*cEf3FlXEsDQAmEdD!7N zs&L1F$?{2$&(UvNHa~-h@4pAkkBuL{ z1)*^GxW_jYXk9*T*9I-W2PlgT%}nybv1zc6&(3sPb~+#jSK)F+Sdhk5L${=v?t35E z)M--yVUlK3Bio2OJq;9KJ=;q*811nny0 zy4LchKVJM-Icc zZ3mQBUxm!v2N)i=5KP;ZWDwV|>F_OaC^qYiO-5w*Bi3yu8oNTeM8AruvD*rqPbxza ztVx^=%VjKblSMcbBwNL~teijVIQN=^XF65l;<`mY6dQb&WZky^4d-`$c6yoHOd6Fw zTSZ{dv~QmPBQ@t%atDPf37#qs6k7kDD$@UPdJd5d7vzJcF5scLwEN9ilIip#b@~lt z>3Nj?K0r3!VX_+z@-yu8^2yv=0p2>5mtKd?->@sH$-ykr77NX68qQ&sHm+q=#NLay zxEu(SN^!OF*t&#C0Mc@*bJIzVwZ`?vEk0Q%rvE0Pus=3^@zK6RDi${ia8@c&D!XdK zUTadRU=rhMM~@@=P4!#AyYJb1dgU@m?X8eQK~(z{ ztZVjQR!G63gb%;oHHxi!Qb=*k!==r#CP|c#CP{R#ohek&x&Hi$x%lh~1+A|<3D4%u zFh^+dEnNy+d?Bn=DbX=fjvc(nts?&`ttz%aB-egZ?npB#X@ zbm>yLrKRPw?d|RBxf<LYmS8@dzRIwok4PNzF)+<%+Pl7Z@)+G~Tsz+%HNQw2?b zXwBHz=Iz_J&&V}1n_PW$0J9py0*H+T6gvoX6dB2{7ipIyM`%($!U@ z)`^-W9{ZCtIQdgdO%n(Wg4=`o$+v8o+kVwq=b!fvbLY0lecYd;EYoxfS&vLMBS2Zs z8V~q`Y9L5=KHwKlfFxC>D@jEyFtwn!173FUC7aDPWV7i{XEND>m|v#o3IuU1UB^lw zO>4Tkxp~Ce`s&w{yWhJUKaNzn`cm-Y2N+(cQcnaMe(icaYWdkt5>z5t9ux2t<`96ueJB@ zBpbzL4zb3;^884p^7_wy_3}ttTebfqA716}?;n%5zPt|?u3wDW>L8teguZ7M4j&#O zUF=1DZ4|G+c?7W-$-tHbUVinU2-2l9dD$6@|NY#Q@}PjtYB8~5-K6!pFBn5tCWUR; zEUJyPczw{LqEihZ8w%4rE5Z>wT3@W`QwgGnar-yE@r~2YJ@?$JJRXk#Zy$gBaXkF+ z!|3kr{=k?cY`L06Utb^g?%j(IfB3_=?6S+4s=9%%m9BZ@w%cyYIrc@*GzAwGS}O7D zFRfcUcV6vkl_@k()(cg#s~4Z#d z=i+nj+IO%cr%g{4E@xUZ0Lv6vd|eMcQNZ_pLh`(Tii%guw)t_!a^P?N!h_k(GIXu7 zUoFedkx>i3c-X*0k2B?#KCx<+EZ@t{lW@zQc~Dm^p~MpIRwSA@)M4U>zcldN%hCip z*AP9&EnNR08Gm`5BDx9Y^Oi_-GWC;W=5Q(@xbn)TP&OtwKog8^haeykk&tWj!pOxi zO8d{wbUwcC_3CyH-0?{b(-Qb~0xXu67qn_FnStBoxJYgQR8$%lVe~TK)(z03w0xn9 zepPl=pbK})&d%|;j=!$yMj^j!C~v;8ud8qCkYX)L$ohu7Y1LTMXmj7(TJMi~E&Y}mf zB^pE0_W)t~zL;Vn?2#Mj_hs$1@kjUej~tin^*RRZix)Vry{QzXl!mlQ$sxxRaIn{<N!BEv#4qtrEQ0r4$o*4iBjA8Ak4SG13&(HI! zxrEQ_zs>Y`2M%9y?$27Ee6ix5CktcyB{|j=H1tKjd^)K51J~%XuWSD$>%ZInnX0jWm}oSbiTj*cbCyeDFgefc6)S)M z`g!<+wnM*l{WboosQ=<I$O{)>4LT`qiGKh=CsYd z>9O6P9L&yGuj%pN=6E}Ps=)Qp=#=dh<*})u_q+pR+lw&wz6&!oX4{+9wUC#shI00K zkgBRD&?=uKD0spZxWz&g`uX+Ow&Cud{0B~3wFV0oF2%RL{cX%&v=q-i^9*+FdIw+r z@|V!uGE2;5i8VzM!Dll?vZT8Y#t3aa(rI#i4Lns*6x$(@jEO~~`1mJ2fw^<%;PF5F z0n3&y#m8^?B<}ge&+zHnKZkYapN~g=_ZtE3uHSGm+`hbJwxKzR-De&RlyGJBWb-_e z^vR6z*a`>9s8v?>RYB&!@4 zv?^?Osf>z7I?DJs26CW#7(R0tH(%0*BU%7k_YPq!6BHD@YXeo>gj(XIiBS zY8U*oDye#l)XAl0#*?p4*#U34ud+xUFpIs*B?iA_!#l*yQlf_BwS30b&YEY zFd2|FKGC4!WlJi?f@M3`*Y3I_k1L9_CW|>9qjzypKN!s7fz5A^;{OV$_?OGh#ThO8 zfn5iHS6>JENe(V-htyCDm2_Eqm5TbXf>rfCY-$eRfo;Rsv7d{o9IAn`ePNXW=H(;f zcu#G$AGfWakDKa75c}mXVZ8MY>G~@8Z@K~U1?zye*^tN=Wm!@n-*@+sQ9QM+56{2R zk6nj`(LIz#ip*H6C|4~R7XD-&69C-x>(_6XJ$v?_*VWa9AA9O)yt{8d{N%WczA2bo zp<5M_$_}$s^tlinyp3tEayiNl5*1N&WgF<9ttS-?4nz*;^SP81sA`cEZ`88sD39wg zHa4cyao7QmSqDBLExqo3Q;EK64(v0%-LLJZy%%JW%K;>EdiT?P`pO5f0KU2qN>1IG zNbBcbZCb`hEyjwRdIGH33{W@ zX5_6XErE=p=Z4RU?%TO!1yVnMV@5JvO~$+eenkkgp#S(N(@ON~B}L5rMrF~*!HbHl z$w_D%tfPWW$MG5mLFjw@=`2*ApPfrJ5(=EQVBx%Z3l=UwI2b54NS|tL_xJT8l}sWa zDiG{|mCF4n#%0A%raQ`+VKJ^q*v<|!5svCgL5oH0K#YZKCXGlej@r7q2|Xsp2cSh2 zt3Ocl)~-FL(I_6A2>`d)Q$S2rr9LVY^rm1?Vp=_&_Lag(5?oEd0qRE4JH{(I$m#hs zv|KkGgJe_QZ5PT$zqLF}I&Lve+v!D`h zDIyaLJh;>_y*(r5x4!#i^4zoM>KoQCN*HAFD>UJA+pF=L-|oas*R4Tce+s8vF$?*E zO(omh9K*r|4agNNXaxhwRL-di6iEjP-Uq$iWE9F%$)jW-gi&(xJPtT&Z~&bv03nq) zZKnvDOk;q6)6v^*z4g|nOD?(O3a{7O$`$ks-u~=oKNCF` z0bo9dkDS)^XLxY)l`3jtv|sYp1b=J)5d%NIuYhN^n)VVd2Y_iigh+IKBtd?=ziwUx=q=i|)9RZVGGzA-%Z}53tb6X9)URvE z=dwlWyy;ceHa(z`&(Zv9c2%r2j;Ty4OQM&`o=qnpZH;;Rx0!BMdg+3 z$a71ik}e#|TlZR4=GWwkw&wf@o09Y)x`57UbEZ5>YslkS5SAq+L<99Rov-Y+2jkLN zr+iifPfR<2G9JV&pJ-8i>!R4s4dR36*Ez4~sY`$3?~Bm6BZ?dhD)Pc`C{Tm`W9vv) z{wgf59r?(1B>(-#-}@d?9UUn6d}tDUQOM^XNoS1I(wANm@6USVKEp8Y@j&~kCq1S{JW5+2R{b@y z8{!8q-*DG~>@%qgH#q?A5p4)<`h9d~S9+y%O;}cH{PCL4%3dkhdDVqKvy&pCDWX|7dTE~p$A+QTHUM;g zXiRKle3tu6-gVbqKe*$LJG!RNF2J4|E%oFY99emw|44XfpaqHQC~9ZTM>y^$6FN!P z<)gXqJ2c3yZRRkX3A2@3R{7Ze6TwE0Q|;#q_~`FCxwmlZ(Rc3vsWW<>G?n`T>M@> z&*^8Ji3cBg2;aN&`}o&?{Z|}0WcS0p_0ylib=Ti064EE{7i$5Qc>?BH3B+~p-S|14 z4j(PZc)TK7&7zjZUM-T&Bm{g;!a8kKOJUtgI+MO`kd8k3xl_nZa8s(3k|Vnc`M+!d_cV2xd$bNp(KOhqpRM$j&d| z!X>phV@?7u?&-q|bfoeIme&WdW^OIM_xut3W=9WuoG~s$o* z7?iE|z%yHg+(zrUiLR`U?C^jkY9l1U_+yHz6-h#z+3NPZl^qs1$#x+5{g$T^(`IUA z(N&Py9#t70pF-QpOMVS~*ErAwE7fgHL;d*0iNXP@7K za5OF&mW#?u-8_2JLfF&>E;Wb?2w6@a9qEr$+iVBCWax$Lh4kzHeKP0BaY)g$a*9W# z|NY8Igtc60R7lOfUT<1?)nCNob?WXnw*DcvfBQd3M!JEnvxS47w6V9)bJrhx@^4>_ zhPrvaFV0^ubOrpI+B8d5EmFvmth8935FfNcVzh~PBl+!$MM=<1krSu2Lo^~M$I=)j zq0NoRGp;}m`{nHCa@8s z61I`e(oXhb<|P1Uq>)nPfEk0X>=D!Eh=f9@uBsvjAT%X_>l)L8nGEKy-$urB7Qd@-Ox~v?w%o}GjyM{BghVIr{`Yy$N=I1l`oQqH^F_Q$W<`8 z4@yC~?#dDK+?BIrJrn$tIijdK(&tTAxi zhB36%*|OCd%RnNhQrWr{*2_D7(WBO0>a& z6l!WCShBPgLn8&e_S#8-CzQW)RK_O zHK0_{6Mpub8uiEj@yXV@x`@`Qlvk33sSTNN`l8gQL~{Df9G^8)au_SCIJqA$UmMGx zi!QoI;cNcb$3Ax11NV$>Q$c zYam-**zRssrRg|cYnCeb+(s3%8YF0iN@s`*j7E|cetcgR_dmh?Xv-*R9i7klX6K#m z#l~wC)Yq^xG!6i!?>Nw5;Aaoz@bpW%U}2Cdz*`H^u!O5F^y0b?c@Xql#p+#AL98<) z@yQ8bw}K5)4!WqoHH(09sc(){Nkd%L*NHRNbKFPw1Q|j!u?Dmmp-|>tgu2Q1h-8+o zK`NsOmdYw=L?89E+BQ+@k5m-o7zp{2^qb zs<<{kqt#Ed9P%DbN@^7=5c6z2O+LBclk64q{Vn9ZYhx!+}7BEKkzw%C?tr2FbZNjdPYn zdYr3vU#~|$1A-&N$P5qQ=_7}5(M>m(0%(@qD{Q2z3r(+VLGx$|i^xu^va-nUi=#hK z4Q??VpwB-u*pEkOpImbJ6-8m|0=OsoNMfYNZ^VBtX~rV2B(0D~2b7SE6~S=)?W%Xeqc=hjTOduH0?J@nK3%AT%*RTZ-L^A=VAQd(4`l=G5d+<{%F(?>({Suud1s0 zK|@2sy2i#vKZ5~Gk?baru-(k}kpHGS)u}wUll2yM1ODZHaMF1Ib}njk8=jXwn+EmBq{t zfB3`i-+ue;(~?NIz6YrnecG0_EyD*l_wHTR+c^h~%{2&wRJ*c@6j34X5!F>*pG_;t z3exNI3jl<#oAW}3`-kwtUV<=bncEE!t1~U2NYaIi* zfBs`$Wm#3GyXTKal|1D$Y-SGQ?Hw?F@$WEqzADCTI`$O<6h-i>Fbe(YKLGpp!}HA_ zz|%grl8SZ;edfxe34ICOeu&2aamSCZtK$fM{fnO>ozCEvPk$cw{PKUJzpo27f8x`4 z`nk=5dF+c{{32rUI8B@8_Mw5k`~M~HJ>cXjuk+#O-s!z;FWMrldPRVdgfL*b4F+S3 zgN=K~f5+i-633sDFXZz-e<$&mI3x~^3yxddXl{TF7>g!^Kp+X#m9*0KK07mHu7l&=98A0Po*y zyCm|;$fuBaF>?Wz)9Cf6(NiU#rs$WD2sqH2cVc^1!48Tk50gKh(&krRsAfweF~m6q z`Xl3H0D{03i=ewSp%AD?$LPyzZ#9_%4*5O1MW%sNdTymJb2!8w*(PrjN;*E2ayZa;o}$fpdsYO z@v#)`4JAxxN{F}|^s|cbL>{{^g+w}s26ALdbgy?Do5sPx8N_K!ZnHot$V{iTMvSp}UWG2pVr^{xVbHemOZ@og*l{O8mCY4brU z(Y58hK$eeJX8O0;uU0a8;uh(5c}4VYmiQTyXybJlBqKlF-+EmzY^6r}Jk4pH)`>3b z70{dKH18XdW&C8IAAq>g!c?%JNX=2+`;P2#_@{&ZVU+J*T3wp(QE z3#z5Y@=DYGb3p!TQHUwP4y%VT+p#R!y2Ol%u_+BhV>am- zj=y?K6W)69n-S_g0>_c#z%$PS2PkCTxE4~+VmN$WL@4-N+vdlzMlardP8|2_oW_rz zOkiNFSk3Wih9o$If~nEIacy^)?CS{h{vwNvL#FXpWJwEB+3A&D8rF`bXHO5jz+QqO`Ha%#S}B-g(VmA6CBUe0D zPI5VAUA*!y+2)758iF2Ew2xc*2e6G_#O51^lNktyh)`KzQQjK zCBrC;!7t6Y+k(^aPkhc>??i#s`chxMuM{q;vJwf0DUK?8^Gv~_+Zhdckv#hE2zY1F z)Yybz%tymL2)R6na&ZLZaz=m|vZT@X$P_?%Dh%(^r3nW8^lSf0*EH$pCNjESo$AB!*64 z{K!8eH~n3__|U6kFDa-za&!z&@94wPqZ2sy+-~%pn8bZQe-;ztDJ*J@AxBQb&F|lg zgZoFY{pn*^)D}a1Ll8f`>p78lt~7R(s&bgR-I+9{+iSXQN(Ml&q`Tf740^@h!E$#y zcOJ+71Eb(M{G%T~i;m7XrlvBYkcxYF^MvQM-9X>pKajxMHEn0AHs)nlV28abZock3 zy!}r;j99}`aYeIJ$MNue-^LH_c?x4`_e&;(&cK7er19pPZ|+#KWXUqJYyQc}Nqp~n z-xJJRW)_t=FbsL%ZjM233L*+WrpHI2QSj^F9;-SQsOX2V2l1ect`--X>caG%5+GnPZ0y82M##
U$9|j=Pw_hNz!HgL5$(v6D9Nw>Uiuq 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 b|0BQv!J#ecXliMP00000NkvXXu0mjf1}(Z? literal 0 HcmV?d00001 diff --git a/public/assets/images/ng-emoji-picker/emoji_spritesheet_4.png b/public/assets/images/ng-emoji-picker/emoji_spritesheet_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ec146b27b055f7c0a888be3e28105292a873b278 GIT binary patch literal 544234 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
  • j(@*P&nr34`MC`G_hRG`dzNgYgK!xK~ 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 S3)Fs*Uy)?z2O0}k(lkuX3 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�IZM^19Mp&gH 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 z
    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