Руководство пользователя HubEx

Краткие инcтрукции по работе, основные понятия и первые шаги по освоению платформы.

MSG — схемы

Что здесь: определения типов запросов/ответов сервиса MSG. Ручки, ссылающиеся на них — endpoints/MSG.md.

type CallRemaining { remaining?: int /* Осталось попыток выполнения при неудачном результате */, total?: int /* Всего попыток выполнения */ }
type ContentTypes.ListResult { code?: str /* Код типа контента */, id?: int, name?: str }
type CriticalityForTrigger.MergeData { data?: int[], triggerID: int }
type ErrorModel { arguments?: map<str>, code?: str, message?: str, traceIdentifier?: str }
type IdCodeNameResult<Int16> { code?: str, id?: int, name?: str }
type IdNameDescriptionResult<Int16> { description?: str, id?: int, name?: str }
type IdNameResult<Byte> { id?: int, name?: str }
type IdNameResult<Int16> { id?: int, name?: str }
type IdNameResult<Int32> { id?: int, name?: str }
type IdNameResult<Nullable<Byte>> { id?: int, name?: str }
type LastCallSenderResult { completed?: datetime /* Дата и время последнего вызова mailbox'а */, exception?: str /* Последнее исключение, возникшее при неудачном выполнении mailbox'а */, hasError?: bool /* Флаг что у mailbox'a есть ошибка */, lastRecipient?: str /* Последний email отправителя для последнего вызова mailbox'a */, started?: datetime /* Дата и время начала выполнения mailbox'а */ }
type LastTaskCreationResult { id?: int /* Идентификатор последней заявки, созданной sender'ом */, number?: str /* Номер последней заявки, созданной sender'ом */ }
type MailBox.Base.BaseLastCallResult { completed?: datetime /* Дата и время последнего вызова mailbox'а */, exception?: str /* Последнее исключение, возникшее при неудачном выполнении mailbox'а */, hasError?: bool /* Флаг что у mailbox'a есть ошибка */ }
type MailBox.GetResult { calls?: CallRemaining, email?: str /* Email для выполнения mailbox-а */, host?: str /* Host для выполнения mailbox-а */, id?: int, isActive?: bool /* Является ли mailbox активным? */, lastCall?: MailBox.LastCallResult, login?: str /* Login для выполнения mailbox-а */, name?: str, password?: str /* Password для выполнения mailbox-а */, port?: int /* Порт для выполнения mailbox-а */, protocolID?: int /* Протокол для выполнения mailbox-а */, secureConnection?: bool /* Признак защищенности соединения */, senders?: MailBoxSender.ListResult[] /* Список событий, при которых webhook срабатывает */ }
type MailBox.LastCallResult { completed?: datetime /* Дата и время последнего вызова mailbox'а */, exception?: str /* Последнее исключение, возникшее при неудачном выполнении mailbox'а */, hasError?: bool /* Флаг что у mailbox'a есть ошибка */, started?: datetime /* Дата и время начала выполнения mailbox'а */ }
type MailBox.ListResult { calls?: CallRemaining, email?: str /* Email для выполнения mailbox-а */, id?: int, isActive?: bool /* Является ли mailbox активным? */, lastCall?: MailBox.Base.BaseLastCallResult, name?: str }
type MailBox.MergeData { description?: str, email: str, emailMessageReplyID?: int, host: str, id?: int, isActive: bool, login: str, mailBoxID?: int, name: str, password: str, port: int, protocolID: int, secureConnection: bool, senders?: MailBoxSenderMergeData[] }
type MailBoxSender.GetResult { calls?: CallRemaining, deleted?: datetime /* Дата удаления, в случае, если sender удален */, id?: int, isActive?: bool /* Является ли sender активным? */, lastCall?: LastCallSenderResult, lastTask?: LastTaskCreationResult, mailBoxID?: int /* Идентификатор mailbox'a sender'a */, recipient?: str /* Email sender-а */, regexNotMatchAction?: IdNameResult<Nullable<Byte>>, sendResponse?: bool /* Отправлять ли ответ на почту о статусе создания заявки */, taskSubjectRegex?: str /* Регулярное выражение для темы сообщения */, taskTemplateID?: str /* Шаблон заявки, по которому будет создаваться заявка sender'a */, taskTextBodyRegex?: str /* Регулярное выражение для тела сообщения */ }
type MailBoxSender.ListResult { calls?: CallRemaining, id?: int, isActive?: bool /* Является ли sender активным? */, lastCall?: LastCallSenderResult, lastTask?: LastTaskCreationResult, mailBoxID?: int /* Идентификатор mailbox'a sender'a */, recipient?: str /* Email sender-а */, regexNotMatchAction?: IdNameResult<Nullable<Byte>>, sendResponse?: bool /* Отправлять ли ответ на почту о статусе создания заявки */, taskSubjectRegex?: str /* Регулярное выражение для темы сообщения */, taskTemplateID?: str /* Шаблон заявки, по которому будет создаваться заявка sender'a */, taskTextBodyRegex?: str /* Регулярное выражение для тела сообщения */ }
type MailBoxSenderMergeData { id?: int, isActive: bool, recipient: str, regexNotMatchActionID?: int, sendResponse: bool, taskSubjectRegex?: str, taskTemplateID: str, taskTextBodyRegex?: str }
type MessageTemplate.AddData { applicationID?: int, content: str, contentTypeID: int, description: str, navigateToID?: int, providerID: int, subject?: str }
type MessageTemplate.UpdateData { applicationID?: int, content: str, contentTypeID: int, description: str, id?: int, navigateToID?: int, providerID: int, subject?: str }
type MessageTemplates.GetResult { application?: IdCodeNameResult<Int16>, content?: str /* Контент */, contentType?: IdCodeNameResult<Int16>, deleted?: datetime /* Дата удаления записи */, description?: str /* Описание шаблона уведомлений */, id?: int, isValid?: bool /* Флаг состояния валиадации */, navigateTo?: IdCodeNameResult<Int16>, provider?: IdCodeNameResult<Int16>, subject?: str /* Тема шаблона уведомления */, validated?: datetime /* Дата валидации */ }
type MessageTemplates.ListResult { applicationID?: int /* Идентификатор приложения */, contentTypeID?: int /* Идентификатор типа контента */, description?: str /* Описание шаблона уведомлений */, id?: int, isValid?: bool /* Флаг состояния валиадации */, navigateToID?: int /* Идентификатор перехода */, providerID?: int /* Идентификатор провайдера */, subject?: str /* Тема шаблона уведомления */, validated?: datetime /* Дата валидации */ }
type NavigateTo.ListResult { code?: str, id?: int, name?: str }
type Notification.ListResult { content?: str /* Контент уведомления */, contentTypeID?: int /* Идентификатор типа контента */, created?: datetime /* Время создания уведомления */, id?: int, isViewed?: bool /* Признак, что уведомление просмотрено */, navigateTo?: int /* Идентификатор провайдера */, providerID?: int /* Идентификатор провайдера */, sent?: datetime /* Время отправки уведомления */, subject?: str /* Заголовок */, taskID?: int /* Идентификатор провайдера */ }
type Protocols.ListResult { id?: int, name?: str }
type Providers.ListResult { code?: str /* Код провайдера */, descriptionRu?: str /* Описание на русском */, id?: int, name?: str }
type RecipientListResult { code?: str /* Код поля в таблице */, id?: int, name?: str /* Код поля в таблице */ }
type RecipientSelectionRule.AddData { customAssetResponsiblePerson?: int, customEmailList?: str, customOrgUnitID?: int, customPhoneList?: str, customRoleID?: int, customUserID?: int, description: str, isCaller: bool, isCustomOrgUnitManager?: bool, isCustomOrgUnitStaff?: bool, isForRelevantUsers: bool, isForRelevantUsersByWorkType: bool, isPreviousTaskAssignee: bool, isTaskAssetResponsiblePerson: bool, isTaskAssignee: bool, isTaskAssigneeManager: bool, isTaskContact: bool, isTaskRequestor: bool, isTaskWatchList: bool, isTenantPowerUser: bool, orgUnitsUpwardTillRoleID?: int, useUnverifiedContacts: bool }
type RecipientSelectionRule.UpdateData { customAssetResponsiblePerson?: int, customEmailList?: str, customOrgUnitID?: int, customPhoneList?: str, customRoleID?: int, customUserID?: int, description: str, id?: int, isCaller: bool, isCustomOrgUnitManager?: bool, isCustomOrgUnitStaff?: bool, isForRelevantUsers: bool, isForRelevantUsersByWorkType: bool, isPreviousTaskAssignee: bool, isTaskAssetResponsiblePerson: bool, isTaskAssignee: bool, isTaskAssigneeManager: bool, isTaskContact: bool, isTaskRequestor: bool, isTaskWatchList: bool, isTenantPowerUser: bool, orgUnitsUpwardTillRoleID?: int, useUnverifiedContacts: bool }
type RecipientSelectionRules.GetResult { customAssetResponsible?: IdNameResult<Int32>, customEmailList?: str /* Список адресов электронной почты */, customOrgUnit?: IdNameResult<Int32>, customPhoneList?: str /* Список номеров телефонов */, customRole?: IdNameDescriptionResult<Int16>, customUser?: UserResult, deleted?: datetime /* Дата удаления, в случае, если запись удалена */, description?: str /* Описание шаблона уведомлений */, id?: int, isCaller?: bool /* Флаг звонившего */, isCustomOrgUnitManager?: bool /* Флаг руководителя организационной единицы */, isCustomOrgUnitStaff?: bool /* Флаг принадлежности организационной единице */, isForRelevantUsers?: bool /* Флаг причастностых пользователй */, isForRelevantUsersByWorkType?: bool /* Флаг соответствия по виду работ */, isPreviousTaskAssignee?: bool /* Флаг предыдущего исполнителя */, isTaskAssetResponsiblePerson?: bool /* Флаг ответственного за объект по заявке */, isTaskAssignee?: bool /* Флаг исполнителя */, isTaskAssigneeManager?: bool /* Флаг руководителя исполнителя */, isTaskContact?: bool /* Флаг контакта по заявке */, isTaskRequestor?: bool /* Флаг заказчика */, isTaskWatchList?: bool /* Флаг подписки по заявке */, isTenantPowerUser?: bool /* Флаг power user'а тенанта */, orgUnitsUpwardTillRole?: IdNameDescriptionResult<Int16>, useUnverifiedContacts?: bool /* Флаг использования неподтверженного договора */ }
type RecipientSelectionRules.ListResult { customAssetResponsible?: IdNameResult<Int32>, customEmailList?: str /* Список адресов электронной почты */, customOrgUnit?: IdNameResult<Int32>, customPhoneList?: str /* Список номеров телефонов */, customRole?: IdNameDescriptionResult<Int16>, customUser?: UserResult, deleted?: datetime /* Дата удаления, в случае, если запись удалена */, description?: str /* Описание шаблона уведомлений */, id?: int, isCaller?: bool /* Флаг звонившего */, isCustomOrgUnitManager?: bool /* Флаг руководителя организационной единицы */, isCustomOrgUnitStaff?: bool /* Флаг принадлежности организационной единице */, isForRelevantUsers?: bool /* Флаг причастностых пользователй */, isForRelevantUsersByWorkType?: bool /* Флаг соответствия по виду работ */, isPreviousTaskAssignee?: bool /* Флаг предыдущего исполнителя */, isTaskAssetResponsiblePerson?: bool /* Флаг ответственного за объект по заявке */, isTaskAssignee?: bool /* Флаг исполнителя */, isTaskAssigneeManager?: bool /* Флаг руководителя исполнителя */, isTaskContact?: bool /* Флаг контакта по заявке */, isTaskRequestor?: bool /* Флаг заказчика */, isTaskWatchList?: bool /* Флаг подписки по заявке */, isTenantPowerUser?: bool /* Флаг power user'а тенанта */, orgUnitsUpwardTillRole?: IdNameDescriptionResult<Int16>, useUnverifiedContacts?: bool /* Флаг использования неподтверженного договора */ }
type RegexNotMatchAction.ListResult { id?: int, name?: str }
type SetViewedData { isViewed?: bool, notificationIDs?: int[] }
type Trigger.AddData { description?: str, eventID?: int, isEnabled?: bool, isNotifyDuringDutyHours: bool, isNotifyDuringOtherHours: bool, isNotifyDuringWorkHours: bool, messageTemplateID: int, timeoutSeconds?: int }
type Trigger.UpdateData { description?: str, eventID?: int, id?: int, isEnabled?: bool, isNotifyDuringDutyHours: bool, isNotifyDuringOtherHours: bool, isNotifyDuringWorkHours: bool, messageTemplateID: int, timeoutSeconds?: int }
type TriggerRecipientSelectionRule.MergeData { data?: int[], triggerID: int }
type Triggers.GetResult { deleted?: datetime /* Дата удаления, в случае, если запись удалена */, description?: str /* Описание */, event?: IdNameResult<Int16>, id?: int, isEnabled?: bool /* Включен ли триггер */, isNotifyDuringDutyHours?: bool /* Нужно ли уведомлять во время смены */, isNotifyDuringOtherHours?: bool /* Нужно ли уведомлять в прочее время */, isNotifyDuringWorkHours?: bool /* Нужно ли уведомлять во время работы */, messageTemplate?: IdNameDescriptionResult<Int16>, provider?: IdNameDescriptionResult<Int16>, timeoutSeconds?: int /* Таймаут в секундах */ }
type Triggers.ListResult { deleted?: datetime /* Дата удаления, в случае, если запись удалена */, description?: str /* Описание */, event?: IdNameResult<Int16>, id?: int, isEnabled?: bool /* Включен ли триггер */, isNotifyDuringDutyHours?: bool /* Нужно ли уведомлять во время смены */, isNotifyDuringOtherHours?: bool /* Нужно ли уведомлять в прочее время */, isNotifyDuringWorkHours?: bool /* Нужно ли уведомлять во время работы */, messageTemplate?: IdNameDescriptionResult<Int16>, provider?: IdNameDescriptionResult<Int16>, timeoutSeconds?: int /* Таймаут в секундах */ }
type UserResult { avatarUrl?: str, deleted?: datetime, firstName?: str, id?: int, lastName?: str, middleName?: str }
type Webhook.Base.BaseLastCallResult { completed?: datetime /* Дата и время последнего вызова webhook'а */, exception?: str /* Последнее исключение, возникшее при неудачном выполнении webhook'а */ }
type Webhook.GetResult { callsRemaining?: int /* Осталось попыток выполенения, при неудачном результате */, events?: IdNameResult<Byte>[] /* Список событий, при которых webhook срабатывает */, id?: int, isActive?: bool /* Является ли webhook активным? */, lastCall?: Webhook.LastCallResult, name?: str, taskStages?: IdNameResult<Int16>[] /* Список состояний заявок, при которых webhook срабатывает */, uri?: str /* Uri для выполнения webhook-а */ }
type Webhook.LastCallResult { completed?: datetime /* Дата и время последнего вызова webhook'а */, exception?: str /* Последнее исключение, возникшее при неудачном выполнении webhook'а */, started?: datetime /* Дата и время начала выполнения webhook'а */ }
type Webhook.ListResult { callsRemaining?: int /* Осталось попыток выполенения, при неудачном результате */, id?: int, isActive?: bool /* Является ли webhook активным? */, lastCall?: Webhook.Base.BaseLastCallResult, name?: str }
type Webhook.MergeData { description?: str, events?: int[], id?: int, isActive?: bool, name?: str, taskStages?: int[], uri?: str }