API Общий Версия 2.0 (НОВАЯ)

Последние изменения: 06.08.2020

Общая информация.

Все функции API доступны как при использовании HTTP-метода GET, так и POST (т.к. глагол уже содержится в названиях функций).
 
В случае POST аргументы можно передавать как с использованием Content-Type <i>x-www-form-urlencoded</i>, так и <i>application/json</i>.
 
Все функции, кроме <i>AddStudyRequest</i> требуют передачи ключа доступа через аргумент <i>authkey</i>. Получить ключ можно разделе Настройки->Интеграция->API.
При использовании ключа в URL не забудьте применить к нему urlencode(), т.к. в нём могут содержаться символы, которые нельзя указывать в URL как есть.
 
Любая из функций API может принимать аргумент <i>culture</i>. На данный момент поддерживаются два значения: «ru-RU» и «en-US». Если аргумент culture не указан, он запрашивается из cookies, в противном случае принимается равным «ru-RU». Передавать данный аргумент можно только через URL.
Его значение влияет на строковое представление дробных чисел, например, в названиях цен (разные десятичные разделители и разделители групп разрядов) и транслитерацию имён пользователей и филиалов.
В числовом виде дробные числа при любом <i>culture</i> всегда возвращаются с разделителем "."
 
Вызывать функции можно как с серверной стороны сайта (это предпочтительный вариант), так и с клиентской (поддерживается jsonp).
При вызове с клиентской стороны имейте в виду, что ключ размещается в открытом доступе. Поэтому используйте для этого специальный ключи (только для одной ф-ции) и только для ф-ций, не возвращающих конфиденциальную информацию.
 
Дату в качестве параметра необходимо указывать в формате YYYY-MM-DD, дату/время – в формате YYYY-MM-DDThh:mm.
 
В случае ошибки при вызове любой из функций возвращается поле: "<i>E</i><i>rror</i>" и, если вызов не в формате JSONP, устанавливается код состояния HTTP 500.
 
Пример:
 

{

"Error": "Неверный аргумент."

}
 

Запрос локаций.

Для получения списка локаций необходимо отправить GET-запрос на следующий url: https://schooldomain.t8s.ru//Api/V2/GetLocations (где schooldomain - субдомен школы).

Список параметров (ни один не является обязательным):

Название

Описание

id

Идентификатор локации

name

Наименование локации (по полному совпадению, без учёта регистра)

Пример результата:

{

"Locations":

[{

"Id": 5, // Идентификатор локации

"Name": "Главный филиал", // Наименование локации

},

...]

}

 

Запрос филиалов.

Url: https://schooldomain.t8s.ru//Api/V2/GetOffices

Список параметров (ни один не является обязательным):

Название

Описание

id

Идентификатор филиала

locationId

Идентификатор локации

name

Наименование филиала (по полному совпадению, без учёта регистра)

license

По номеру лицензии (по частичному совпадению, без учёта регистра)

Пример результата:

{

"Offices":

[{

"Id": 5, // Идентификатор филиала

"Name": "Главный филиал", // Наименование филиала

"Location": "Основная локация", // Наименование локации

"Address": "г. Москва", // Адрес филиала

"EMail": "school@school.ru", // E-mail филиала

"Phone": "+71111111111", // Телефон филиала

"NoClassrooms": false, // Признак филиала без аудиторий

"TimeZone": "+3:00", // Часовой пояс филиала

"License": "№123" // Номер лицензии филиала

},

...]

}

 

Запрос заявок на обучение.

Url: https://schooldomain.t8s.ru//Api/V2/GetStudyRequests

Список параметров (ни один не является обязательным):

Название

Описание

id

Идентификатор заявки

from

Начальные дата/время создания заявки

to

Конечные дата/время создания заявки

status

Битовая маска статуса заявки (1 - необработанная, 2 - обработанная, 4 - удалённая в архив без обработки, 8 - удалённая из архива)

location

Наименование локации в заявке

office

Наименование филиала в заявке

leadId

Идентификатор лида, подтверждённого по заявке

studentClientId

Идентификатор клиента-ученика, подтверждённого по заявке

Результат возвращается в формате json в виде массива объектов “StudyRequests”.

Пример результата:

{

"StudyRequests":

[{

"Id": 123, // Идентификатор заявки (отсутствует для удалённых из архива)

"Created": "2019-10-09T15:30:23", // Дата и время создания заявки в UTC

"Status": 1, // Статус заявки (0 - необработанная, 1 - обработанная, 2 - удалённая в архив без обработки, отсутствует для удалённых из архива)

"Location": "Москва", // Локация

"Office": "Основной филиал", // Филиал

"Name": "Иван Иванов", // Имя

"EMail": "ivan@company.ru", // E-mail

"Phone": "+71111111111" // Телефон

"Birthday": "1981-01-20", // Дата рождения ученика в формате YYYY-MM-DD

"AgentName": "Ольга Иванова", // Имя контактного лица

"AgentEMail": "olga@company.ru", // E-mail контактного лица

"AgentPhone": "+71111111112" // Телефон контактного лица

"Discipline": "Английский", // Дисциплина

"Level": "Начальный", // Уровень

"Maturity": "Дошкольники", // Возрастная категория

// Массив пользовательских полей в заявке

"ExtraFields": [

{

"Name": "Наименование пользовательского поля",

"Value": "Значение пользовательского поля"

},

...],

"Teacher": "Сидоров Иван", // Преподаватель

"BeginDate": "2019-10-20", // Желаемая дата начала занятий

"EndDate": "2019-11-01", // Желаемая дата окончания занятий

"Weekdays": 15, // Маска желаемых дней недели

"BeginTime": "15:30", // Желаемое время начала занятий

"EndTime": "16:30", // Желаемое время окончания занятий

"Type": "Заявка с сайта школы", // Тип заявки

"Description": "Примечание от ученика",

"ExtraData": "someData", // Произвольные пользовательские данные

// UTM-метки

"Utm": {

"Source": "SomeSource", // utm_source

"Medium": "SomeMedium", // utm_medium

"Campaign": "SomeCampaign", // utm_campaign

"Term": "SomeTerm", // utm_term

"Content": "SomeContent" // utm_content

},

"Referrer": "http://somesite.ru", // Ссылка на источник заявки

"Comment": "Комментарий от сотрудника",

"LeadId": 23, // Идентификатор лида, подтверждённого по заявке

"StudentClientId": 52 // Идентификатор клиента-ученика, подтверждённого по заявке

},

...]

}

Запрос лидов.

Url: https://schooldomain.t8s.ru//Api/V2/GetLeads

Список параметров (ни один не является обязательным):

Название

Описание

id

Идентификатор лида

officeOrCompanyId

Идентификатор филиала/компании

term

Общее выражение для поиска (ФИО, ФИ, ИФ, телефон или email)

byAgents

Булевский признак того, что выражение term будет использоваться и для поиска по конт. лицам. По умолчанию false.

attached

Булевский признак: true – только прикреплённые к ученикам, false – только неприкреплённые к ученикам, null – все. По умолчанию null.

studentClientId

Идентификатор клиента-ученика, к которому прикреплены лиды

addressDateFrom

Начальная дата диапазона дат обращения

addressDateTo

Конечная дата диапазона дат обращения

extraFieldName

Имя пользовательского поля

extraFieldValue

Значение пользовательского поля

Результат возвращается в формате json в виде массива объектов “Leads”.

Пример результата:

{

"Leads":

[{

"Id": 123, // Идентификатор лида

"Created": "2019-10-09T15:30:23", // Дата и время создания лида в UTC

"FirstName": "Иван", // Имя лида

"LastName": "Иванов", // Фамилия лида

"MiddleName": "Иванович", // Отчество лида

"AddressDate": "2019-10-30", // Дата обращения лида в формате YYYY-MM-DD

"Status": "В процессе", // Статус лида

"Birthday": "1981-01-20", // Дата рождения лида в формате YYYY-MM-DD

"Phone": "+71111111111" // Телефон лида

"Mobile": "+79611111111" // Мобильный лида ученика

"UseMobileBySystem": false, // Если true, то моб. телефон отмечен как разрешённый для использования системой для рассылок/уведомлений

"EMail": "ivan@company.ru", // E-mail лида

"UseEMailBySystem": true, // Если true, то e-mail отмечен как разрешённый для использования системой для рассылок/уведомлений

"Maturity": "Взрослые", // Возрастная категория лида

"Discipline": "Английский", // Дисциплина лида

"Level": "Начальный", // Уровень лида

// Массив контактных лиц

"Agents": [

{

"FirstName": "Ирина", // Имя контактного лица

"LastName": "Иванова", // Фамилия контактного лица

"MiddleName": "Ивановна", // Отчество контактного лица

"WhoIs": "Мать", // Кем приходится ученику

"Phone": "+71111111112" // Телефон контактного лица

"Mobile": "+79611111112" // Мобильный телефон контактного лица

"UseMobileBySystem": true, // Если true, то моб. телефон отмечен как разрешённый для использования системой для рассылок/уведомлений

"EMail": "irina@company.ru", // E-mail контактного лица

"UseEMailBySystem": false // Если true, то e-mail отмечен как разрешённый для использования системой для рассылок/уведомлений

},

...],

// Массив филиалов/компаний лица

"OfficesAndCompanies": [

{

"Id": 5, // Идентификатор филиала

"Name": "Главный филиал" // Наименование филиала

},

...],

// Массив пользовательских полей лица

"ExtraFields": [

{

"Name": "Наименование пользовательского поля",

"Value": "Значение пользовательского поля"

},

...],

"StudentClientId": 52 // Клиент-ученик, к которому прикреплён лид

},

...]

}

Запрос учеников.

Url: https://schooldomain.t8s.ru//Api/V2/GetStudents

Список параметров (ни один не является обязательным):

Название

Описание

clientId

Идентификатор ученика как клиента (клиентом может быть как ученик, так и компания)

id

Идентификатор ученика

officeOrCompanyId

Идентификатор филиала/компании

term

Общее выражение для поиска (ФИО, ФИ, ИФ, телефон или email)

byAgents

Булевский признак того, что выражение term будет использоваться и для поиска по конт. лицам. По умолчанию false.

addressDateFrom

Начальная дата диапазона дат обращения

addressDateTo

Конечная дата диапазона дат обращения

statuses

Имена статусов как они указаны в настройках через запятую («-» – поиск учеников без статуса)

extraFieldName

Имя пользовательского поля

extraFieldValue

Значение пользовательского поля

queryStudyRequests

Возвращать информацию по заявкам

Результат возвращается в формате json в виде массива объектов “Students”.

Пример результата:

{

"Students":

[{

"ClientId": 236, // Идентификатор ученика как клиента

"Id": 123, // Идентификатор ученика

"Created": "2019-10-09T15:30:23", // Дата и время создания ученика в UTC

"FirstName": "Иван", // Имя ученика

"LastName": "Иванов", // Фамилия ученика

"MiddleName": "Иванович", // Отчество ученика

"PhotoUrls": ["/Files/Default/Photos/ghahnhlx-100x100.jpg"], // Коллекция фото ученика в различных разрешениях

"AddressDate": "2019-10-30", // Дата обращения ученика в формате YYYY-MM-DD

"Status": "Занимается", // Статус ученика

"Birthday": "1981-01-20", // Дата рождения ученика в формате YYYY-MM-DD

"Mobile": "+79611111111" // Мобильный телефон ученика

"UseMobileBySystem": false, // Если true, то моб. телефон отмечен как разрешённый для использования системой для рассылок/уведомлений

"Phone": "+71111111111" // Телефон ученика

"EMail": "ivan@company.ru", // E-mail ученика

"UseEMailBySystem": true, // Если true, то e-mail отмечен как разрешённый для использования системой для рассылок/уведомлений

"Skype": "SomeSkype", // Skype ученика

"Address": "г. Москва", // Адрес ученика

"SocialNetworkPage": "http://facebook.com/...", // Адрес ученика в соц. сети

"JobOrStudyPlace": "ООО \"Microsoft\"", // Место работы ученика

"Position": "Директор", // Должность ученика

// Массив контактных лиц

"Agents": [

{

"FirstName": "Ирина", // Имя контактного лица

"LastName": "Иванова", // Фамилия контактного лица

"MiddleName": "Ивановна", // Отчество контактного лица

"WhoIs": "Мать", // Кем приходится ученику

"Mobile": "+79611111112" // Мобильный телефон контактного лица

"UseMobileBySystem": true, // Если true, то моб. телефон отмечен как разрешённый для использования системой для рассылок/уведомлений

"Phone": "+71111111112" // Телефон контактного лица

"EMail": "irina@company.ru", // E-mail контактного лица

"UseEMailBySystem": false, // Если true, e-mail отмечен как разрешённый для использования системой для рассылок/уведомлений

"Skype": "SomeSkype", // Skype контактного лица

"JobOrStudyPlace": "ООО \"Microsoft\"", // Место работы контактного лица

"Position": "Директор", // Должность контактного лица

"IsCustomer": false, // Признак того, что контактное лицо является заказчиком

"Birthday": "1980-02-01" // Дата рождения контактного лица

},

...],

"Maturity": "Взрослые", // Возрастная категория ученика

// Массив пар дисциплина-уровень

"Disciplines": [

{

"Discipline": "Английский",

"Level": "Средний"

},

...],

// Массив филиалов/компаний ученика

"OfficesAndCompanies": [

{

"Id": 5, // Идентификатор филиала

"Name": "Главный филиал" // Наименование филиала

},

...],

// Массив пользовательских полей ученика

"ExtraFields": [

{

"Name": "Наименование пользовательского поля",

"Value": "Значение пользовательского поля"

},

...]

// Массив заявок ученика (и непосредственно связанных с учеником, и через лида, возвращается только при queryStudyRequests = true)

"StudyRequests": [

{

"Id": 123, // Идентификатор заявки (отсутствует для удалённых из архива)

"Created": "2019-10-09T15:30:23", // Дата и время создания заявки в UTC

// UTM-метки

"Utm": {

"Source": "SomeSource", // utm_source

"Medium": "SomeMedium", // utm_medium

"Campaign": "SomeCampaign", // utm_campaign

"Term": "SomeTerm", // utm_term

"Content": "SomeContent" // utm_content

},

"Referrer": "http://somesite.ru", // Ссылка на источник заявки

"LeadId": 23 // Идентификатор лида, подтверждённого по заявке

},

...]

},

...]

}

Запрос компаний (корп. клиентов).

Url: https://schooldomain.t8s.ru//Api/V2/GetCompanies

Список параметров (ни один не является обязательным):

Название

Описание

clientId

Идентификатор компании как клиента (клиентом может быть как ученик, так и компания)

id

Идентификатор компании

name

Наименование компании (по полному совпадению, без учёта регистра)

Пример результата:

{

"Companies":

[{

"ClientId": 10, // Идентификатор компании как клиента

"Id": 8, // Идентификатор компании

"Name": "Microsoft", // Наименование компании

"Address": "г. Москва", // Адрес компании

"EMail": "company@company.ru", // E-mail компании

"Phone": "+71111111111" // Телефон компании

},

...]

}

 

Запрос файлов клиента.

Url: https://schooldomain.t8s.ru//Api/V2/GetClientFiles

Список параметров (обязательные поля отмечены звёздочкой):

Название

Описание

clientId *

Идентификатор клиента (клиентом может быть как ученик, так и компания)

edUnitId

Идентификатор уч. единицы (если указан, возвращаются только файлы, связанные с ней)

Пример результата:

{

"Files":

[{

"Created": "2020-03-23T10:10:00", // Дата и время создания файла (отсутствует для динамических документов)

"Title": "Договор №1", // Заголовок файла

"Extension": "docx", // Расширение файла

"Dynamic": false, // Если true, то данный файл является динамическим документом

"Url": "/File/Download/1210", // URL для скачивания файла

"Type": "Contract", // Тип файла (Contract – договор, Act – документ, Custom – пользовательский файл)

"CommentHtml": "Примечание<br/>к договору", // Примечание к договору в HTML

"CommentText": "Примечание\r\nк договору" // Примечание к договору, преобразованное в текст

},

...]

}

Динамическими документами являются документы, которые не хранятся на сервере, а создаются динамически при их запросе. В CRM такие документы отображаются во вкладке «Автоматические». На данный момент такие документы возможны только для конкретной уч. единицы, поэтому данный метод может вернуть их только при наличии параметра «edUnitId».

Для скачивания файла также необходимо указать в параметрах authkey.

 

Запрос настроек личного кабинета ученика.

Url: https://schooldomain.t8s.ru//Api/V2/GetStudentPersonalOfficeSettings

Пример результата:

{

"ShowFinances": false, // Отображать в ЛК финансовую информацию

"ShowDayDescriptions": true, // Отображать в ЛК комментарии к дням

"AllowFillEmptyPersonalInfo": false, // Позволять ученикам добавлять свою личную информацию

"AllowFillEmptyContacts": true, // Позволять ученикам добавлять свои контактные данные

"AllowAddAgents": false, // Позволять ученикам добавлять контактных лиц

"AllowEditOwnPhoto": true, // Позволять ученикам загружать и удалять свою фотографию

"CommunicationWithClassmates": false, // Возможность переписки с одногруппниками

"HideManagerNames": true, // Скрывать имена менеджеров для учеников

"AboutSchoolHtml": "Какая-либо информация о <b>школе</b> для ученика",

// Массив закладок

"Bookmarks":
[{

"Name": "Гугл",

"Url": "https://google.com",

"IconUrl": "/Files/Default/Uploads/SavedIcons/google.com.png"

},

...],

}

Динамическими документами являются документы, которые не хранятся на сервере, а создаются динамически при их запросе. В CRM такие документы отображаются во вкладке «Автоматические». На данный момент такие документы возможны только для конкретной уч. единицы, поэтому данный метод может вернуть их только при наличии параметра «edUnitId».

Для скачивания файла также необходимо указать в параметрах authkey.

 

Запрос преподавателей.

Url: https://schooldomain.t8s.ru//Api/V2/GetTeachers

Список параметров (ни один не является обязательным):

Название

Описание

id

Идентификатор преподавателя

officeOrCompanyId

Идентификатор филиала/компании

term

Общее выражение для поиска (ФИО, ФИ, ИФ, телефон или email)

byAgents

Булевский признак того, что выражение term будет использоваться и для поиска по конт. лицам. По умолчанию false.

Результат возвращается в формате json в виде массива объектов “Teachers”.

Пример результата:

{

"Teachers":

[{

"Id": 123, // Идентификатор преподавателя

"Created": "2019-10-09T15:30:23", // Дата и время создания преподавателя в UTC

"FirstName": "Иван", // Имя преподавателя

"LastName": "Иванов", // Фамилия преподавателя

"MiddleName": "Иванович", // Отчество преподавателя

"PhotoUrls": ["/Files/Default/Photos/ghahnhlx-100x100.jpg"], // Коллекция фото преподавателя в различных разрешениях

"Status": "Работает", // Статус преподавателя

"Fired": false, // Если true, то преподаватель уволен

"Birthday": "1981-01-20", // Дата рождения преподавателя в формате YYYY-MM-DD

"Mobile": "+79611111111" // Мобильный телефон преподавателя

"UseMobileBySystem": false, // Если true, то моб. телефон отмечен как разрешённый для использования системой для рассылок/уведомлений

"Phone": "+71111111111" // Телефон преподавателя

"EMail": "ivan@company.ru", // E-mail преподавателя

"UseEMailBySystem": true, // Если true, то e-mail отмечен как разрешённый для использования системой для рассылок/уведомлений

"Skype": "SomeSkype", // Skype преподавателя

"Address": "г. Москва", // Адрес преподавателя

"SocialNetworkPage": "http://facebook.com/...", // Адрес преподавателя в соц. сети

"JobOrStudyPlace": "ООО \"Microsoft\"", // Другое место работы преподавателя

"Position": "Директор", // Должность преподавателя в другом месте работы

// Массив контактных лиц

"Agents": [

{

"FirstName": "Ирина", // Имя контактного лица

"LastName": "Иванова", // Фамилия контактного лица

"MiddleName": "Ивановна", // Отчество контактного лица

"WhoIs": "Мать", // Кем приходится ученику

"Mobile": "+79611111112" // Мобильный телефон контактного лица

"UseMobileBySystem": true, // Если true, то моб. телефон отмечен как разрешённый для использования системой для рассылок/уведомлений

"Phone": "+71111111112" // Телефон контактного лица

"EMail": "irina@company.ru", // E-mail контактного лица

"UseEMailBySystem": false, // Если true, e-mail отмечен как разрешённый для использования системой для рассылок/уведомлений

"Skype": "SomeSkype", // Skype контактного лица

"JobOrStudyPlace": "ООО \"Microsoft\"", // Место работы контактного лица

"Position": "Директор", // Должность контактного лица

"IsCustomer": false, // Признак того, что контактное лицо является заказчиком

"Birthday": "1980-02-01" // Дата рождения контактного лица

},

...],

// Массив филиалов преподавателя

"Offices": [

{

"Id": 5, // Идентификатор филиала

"Name": "Главный филиал" // Наименование филиала

},

...],

"Corporative": false // Признак того, что преподаватель может работать в корпоративном отделе

},

...]

}

Запрос учебных единиц.

Url: https://schooldomain.t8s.ru//Api/V2/GetEdUnits

Список параметров (ни один не является обязательным):

Название

Описание

id

Идентификатор учебной единицы

types

Типы единиц обучения, которые необходимо получить. Возможные значения: Group (группы), MiniGroup (мини-группы), OpenLesson (открытые уроки), Exam (экзамены), Tour (поездки), Individual (инд. занятия) , TrialLesson (инд. пробные уроки).

dateFrom

Начальная дата диапазона занятий.

dateTo

Конечная дата диапазона занятий.

timeFrom

Начальное время диапазона занятий.

timeTo

Конечное время диапазона занятий.

weekdays

Дни недели. Целое число, которое формируется следующим образом: каждому дню недели соответствует определённая степень двойки. Для того, чтобы получить набор дней необходимо их просуммировать.

Пн: 1, Вт: 2, Ср: 4, Чт: 8, Пт: 16, Сб: 32, Вс: 64

Например, Пн/Ср = 1 + 4 = 5

statuses

Статусы групп и поездок через запятую (Reserve, Forming, Working, Stopped, Finished). На другие типы обучения не влияет.

officeOrCompanyId

Идентификатор филиала/компании.

officeOrCompany

Название филиала/компании.

locationId

Идентификатор локации.

corporative

Если true, то возвращаются только корпоративные единицы обучения, false – только некорпоративные. По умолчанию не задано (возвращаются и те, и другие).

disciplines

Названия дисциплин через запятую.

levels

Название уровней через запятую.

maturities

Название возрастных категорий через запятую.

learningTypes

Названия типов обучения через запятую.

teacherId

Идентификатор преподавателя.

lastUpdatedFrom *

Минимальные дата и время изменения уч. единицы в UTC.

queryDays

Булевский признак необходимости в запросе информации по дням (занятиям) уч. единицы.

queryFiscalInfo

Булевский признак необходимости в запросе финансовой информации (будут возвращён объект «FiscalInfo»). Принимает значения false и true, по умолчанию false. Может замедлить выполнение запроса.

queryTeacherPrices

Булевский признак необходимости в запросе ставок преподавателей по группе (будут возвращён объект «TeacherPrices»). Принимает значения false и true, по умолчанию false. Может замедлить выполнение запроса.

* На данный момент изменением уч. единицы считаются: изменения элементов расписания (добавление/редактирование/удаление) и изменения дней (установка занятия/пропуска, изменение оплачиваемости).

Примеры использования:

Все группы с 15:00 до 21:00:

http://schooldomain.t8s.ru/Api/V2/GetEdUnits?types=Group&timeFrom=15:00&timeTo=21:00&authkey=Eej8B5knUDbiE%2By7cy9sRmU7eLOyzc9vjpLQVDczZ2ZNLl9zP1ckvTpKBgnXI5cN

Все группы и открытые уроки в Главном филиале:

http://schooldomain.t8s.ru/Api/V2/GetEdUnits?types=Group,OpenLesson&officeOrCompany=Главный+филиал&authkey=Eej8B5knUDbiE%2By7cy9sRmU7eLOyzc9vjpLQVDczZ2ZNLl9zP1ckvTpKBgnXI5cN

Все английские группы с уровнями Intermediate и Upper-Intermediate:

http://schooldomain.t8s.ru/Api/V2/GetEdUnits?types=Group&levels=Intermediate,Upper-Intermediate&authkey=Eej8B5knUDbiE%2By7cy9sRmU7eLOyzc9vjpLQVDczZ2ZNLl9zP1ckvTpKBgnXI5cN

Результат возвращается в формате json в виде массива объектов “EdUnits”. У каждого объекта есть ряд свойств и вложенный массив элементов расписания

Пример результата:

{

"EdUnits":

[{

"Id": 1535, // Идентификатор учебной единицы

"Type": "Group", // Тип учебной единицы

"Name": "General Intermediate 108", // Название учебной единицы

"Corporative": false, // Если true, то уч. единица корпоративная, а в поле OfficeOrCompanyName указано наименование компании

"OfficeOrCompanyId": 5, // Идентификатор филиала/компании

"OfficeOrCompanyName": "Главный филиал", // Наименование филиала/компании

"OfficeOrCompanyAddress": "Адрес филиала/компании",

"OfficeTimeZone": "+3:00", // Часовой пояс филиала учебной единицы

"Discipline": "Английский", // Дисциплина

"Level": "Intermediate", // Уровень владения дисциплиной

"Maturity": "Взрослые", // Возрастная категория

"LearningType": "Общий", // Тип обучения

"StudentsCount": 5, // Количество учеников в группе/экзамене

"Vacancies": 2, // Количество свободных мест

"StudyUnitsInRange": "12 а.ч.", // Количество посещаемых (не пропусков) единиц в рамках диапазона [dateFrom, dateTo]

"Description": "Лучшая группа", // Примечание к учебной единице

// Массив расписаний

"ScheduleItems": [

{

"BeginDate": "2014-01-01 ", // Начальная дата

"EndDate": "2015-02-03", // Конечная дата

"Weekdays": 10, // Дни недели (в том же формате, что и в фильтре)

"BeginTime": "19:30", // Начальное время

"EndTime": "21:30", // Конечное время

"TeacherId": 123, // Идентификатор преподавателя

"Teacher": "Иванов И.И.", // ФИО преподавателя

"ClassroomId": 2, // Идентификатор аудитории (если отсутствует, то занятия проводятся на территории учащегося)

"ClassroomName": "№2", // Наименование аудитории (если отсутствует, то занятия проводятся на территории учащегося)

"ClassroomLink": "https://zoom.us/j/1234567", // Соответствующая аудитории ссылка

"Description": "Какой-либо комментарий к элементу расписания"

},

...],

// Массив дней (при queryDays = true)

"Days": [

{

"Date": "2014-01-01", // Дата

"Minutes": 45.0, // Длительность занятия в минутах

"Pass": false, // Признак пропуска

"StudentPayableMinutes": 22.5, // Количество оплачиваемых учеником минут

"TeacherPayableMinutes": 45.0, // Количество оплачиваемых преподавателю минут

"Description": "Комментарий к занятию"

},

...],

// Финансовая информация (при queryFiscalInfo = true)

"FiscalInfo":

{

"Units": "24 а.ч.", // Кол-во оплачиваемых единиц (а.ч., дней) за весь период обучения (может отсутствовать, если расписание бесконечно)

"Units7": "2 а.ч.", // Кол-во оплачиваемых единиц за первые 7 дней обучения

"Units28": "8 а.ч.", // Кол-во оплачиваемых единиц за первые 28 дней обучения

                  "PriceId": 9, // Идентификатор цены по умолчанию
                  "PriceName": "Пакет (5 000,00 руб. за 10 а.ч.)", // Наименование цены по умолчанию
                  "PriceValue": "5 000,00 руб.", // Значение цены по умолчанию

"Value": "10 000 руб.", // Стоимость всего периода обучения по цене по умолчанию (может отсутствовать, если расписание бесконечно или не задана цена)

"Value7": "1 000 руб.", // Стоимость первых 7 дней обучения по цене по умолчанию (может отсутствовать, если не задана цена)

"Value28": "4 000 руб." // Стоимость первых 28 дней обучения по цене по умолчанию (может отсутствовать, если не задана цена)

},

// Массив всех ставок по группе всех преподавателей (при queryTeacherPrices = true)

// Если отсутствует, ставки для группы не заданы: стоимость преподавателя входит в оклад

"TeacherPrices": [

{

"TeacherId": 5, // Идентификатор преподавателя

"Date": "2014-01-01", // Дата вступления ставки в силу (если отсутствует, ставка действует с самого начала)

"PriceId": 10, // Идентификатор ставки (если данное поле и все поля ниже отсутствуют, это означает, что ставка по группе на данный период не задана)

"PriceName": "Главная ставка", // Наименование ставки

// Массив значений ставки в зависимости от кол-ва посетивших занятие учеников (если ставка не плавающая, данный массив всегда содержит единственный элемент со Students = 0)

"PriceValues": [

{

"Students": 0, // Кол-во посетивших учеников

"Value": "2 000,00 руб.", // Значение ставки строкой

"ValueQuantity": 2000.00, // Значение ставки числом

"ValueCurrency": "Рубли" // Валюта ставки

},

...],

"PriceUnits": "1 а.ч.", // Количество единиц, входящих в ставку, строкой (на данный момент всегда 1)

"PriceUnitsQuantity": 45.0, // Количество единиц, входящих в ставку, числом (кол-во минут, зависит от типа ак. часа)

"PriceUnitsType": "Minutes", // Тип единиц (на данный момент всегда “Minutes”)

},

...]

},

...]

}

 

Запрос связок «Учебная единица - ученик».

Url: https://schooldomain.t8s.ru//Api/V2/GetEdUnitStudents

Список параметров (ни один не является обязательным):

Название

Описание

edUnitId

Идентификатор учебной единицы (для получения всех учеников одной уч. единицы).

edUnitTypes

Типы уч. единиц. Возможные значения: Group (группы), MiniGroup (мини-группы), OpenLesson (открытые уроки), Exam (экзамены), Tour (поездки), Individual (инд. занятия).

edUnitOfficeOrCompanyId

Идентификатор филиала/компании уч. единицы.

edUnitOfficeOrCompany

Название филиала/компании уч. единицы. Например, «Главный филиал».

edUnitCorporative

Если true, то возвращаются только корпоративные уч. единицы, false – только некорпоративные. По умолчанию не задано (возвращаются и те, и другие).

edUnitDisciplines

Названия дисциплин уч. единицы через запятую.

edUnitLevels

Название уровней уч. единицы через запятую.

edUnitMaturities

Название возрастных категорий уч. единицы через запятую.

studentClientId

Идентификатор ученика как клиента (для получения всех единиц обучения одного ученика)

dateFrom

Начальная дата диапазона занятий.

dateTo

Конечная дата диапазона занятий.

statuses

Статусы ученика в уч. единице через запятую (могут быть «Reserve», «Normal», «WorkingOff» или «Stopped»)

contractExists

Если true, то возвращаются только связки, по которым в данный момент имеется заключенный договор. false – только без договора. По умолчанию не задано (возвращаются и те, и другие).

queryDays

Булевский признак необходимости в запросе информации по дням (занятиям) связки.

queryPayers

Булевский признак необходимости в запросе информации по плательщикам (будут возвращён объект «Payers»). Принимает значения false и true, по умолчанию false. Может замедлить выполнение запроса.

Результат возвращается в формате json в виде массива объектов “EdUnitStudents”.

Пример результата:

{

"EdUnitStudents":

[{

"EdUnitId": 1535, // Идентификатор учебной единицы

"EdUnitType": "Group", // Тип учебной единицы

"EdUnitName": "General Intermediate 108", // Название учебной единицы

"EdUnitCorporative": false, // Если true, то уч. единица корпоративная, а в поле EdUnitOfficeOrCompanyName указано наименование компании

"EdUnitOfficeOrCompanyId": 5, // Идентификатор филиала/компании учебной единицы

"EdUnitOfficeOrCompanyName": "Главный филиал", // Наименование филиала/компании учебной единицы

"EdUnitDiscipline": "Английский", // Дисциплина учебной единицы

"EdUnitLevel": "Intermediate", // Уровень владения дисциплиной, заданный для учебной единицы

"EdUnitMaturity": "Взрослые", // Возрастная категория учебной единицы

"EdUnitLearningType": "Общий", // Тип обучения учебной единицы

"StudentClientId": 236, // Идентификатор ученика как клиента

"StudentName": "Иванов Иван Иванович", // ФИО ученика

"BeginDate": "2017-01-20", // Начальная дата диапазона занятий связки

"EndDate": "2017-02-01", // Конечная дата диапазона занятий связки

"BeginTime": "7:40", // Время начала занятий в указанном диапазоне

"EndTime": "8:25", // Время окончания занятий в указанном диапазоне

"Weekdays": 10, // Дни недели занятий (в том же формате, что и в фильтре GetEdUnits)

"Status": "Reserve", // Статус ученика в учебной единице (может быть «Reserve», «Normal», «WorkingOff» или «Stopped»)

"StudyUnits": "16 а.ч.", // Количество единиц занятий (может отсутствовать)

// Массив дней (только если указан диапазон, и queryDays = true)

"Days": [

{

"Date": "2016-07-11", // Дата

"Minutes": 45.0, // Длительность занятия в минутах

"Pass": false, // Признак пропуска

"StudentPayableMinutes": 22.5, // Количество оплачиваемых учеником минут

"TeacherPayableMinutes": 45.0, // Количество оплачиваемых преподавателю минут

"Description": "Опоздал", // Комментарий к занятию

"Accepted": true, // Признак того, что посещение подтверждено

"AcceptedDescription": "Установлено через API" // Примечание к подтверждению посещения/пропуска (устанавливается только через API)

},

...]

// Массив плательщиков за занятия связки (только если учебная единица некорпоративная, и queryPayers = true)

"Payers": [

{

"ClientId": 3264, // Идентификатор клиента (ученика или компании)

"IsCompany": false, // Признак того, что клиент-плательщик (ClientId) является компанией

"Name": "Иванов Иван", // Имя плательщика

"Actual": true, // Если false, то данный плательщик является учеником, но, при этом, плательщик-компания полностью оплачивает его занятия

"ContractNumber": "№24-46", // Номер заключенного на данный момент договора с данным плательщиком (может отсутствовать)

"ContractDate": "2017-01-20", // Дата заключенного на данный момент договора с данным плательщиком (может отсутствовать)

// Массив расторгнутых договоров с данным плательщиком (если таковых нет, отсутствует)

"TerminatedContracts": [

{

"Number": "№24-45", // Номер договора

"Date": "2016-07-11", // Дата заключения договора

"TerminateDateTime": "2016-08-19T15:16:17", // Дата и время расторжения договора в UTC

"Reason": "Отказался заниматься", // Причина расторжения договора

"ReasonDescription": "Заболел" // Комментарий к причине расторжения договора

},

...]

"PriceId": 9, // Идентификатор цены по договору (может отсутствовать)

"PriceName": "Основная (250,00 руб./а.ч.)", // Наименование цены по договору (может отсутствовать)

"PayableUnits": "16 а.ч.", // Количество оплачиваемых единиц (может отсутствовать)

"PayableUnitsRanged": "12 а.ч.", // Количество оплачиваемых единиц в указанном диапазоне дат (может отсутствовать)

"Value": "4 000,00 руб.", // Фактическая стоимость занятий (может отсутствовать)

"ValueRanged": "3 000,00 руб.", // Фактическая стоимость занятий в указанном диапазоне дат (может отсутствовать)

"ContractValue": "4 000,00 руб.", // Стоимость занятий по договору (может отсутствовать)

"ContractValueRanged": "3 000,00 руб.", // Стоимость занятий по договору в указанном диапазоне дат (может отсутствовать)

"DebtDate": "2017-03-01", // Дата возникновения задолженности (может отсутствовать)

// Массив оплат (списаний) за обучение от данного плательщика (если таковых нет, отсутствует)

"EdUnitPayments": [

{

"Paid": true, // Признак того, что оплата имеет статус «Оплачено»

"Date": "2017-02-09", // Дата оплаты

"PaidDate": "2017-02-10", // Дата принятия оплаты (может отсутствовать)

"BillNumber": "211", // Номер счёта (отсутствует, если со списанием не связано поступление)

"Units": "2 а.ч.", // Количество единиц оплаты

"PriceId": 9, // Идентификатор цены оплаты

"PriceName": "Основная (250,00 руб./а.ч.)", // Наименование цены оплаты

"Value": "1 000,00 руб." // Сумма оплаты

},

...]

},

...]

},

...]

}

 

Запрос планов занятий (домашних заданий).

Url: https://schooldomain.t8s.ru//Api/V2/GetLessonPlans

Список параметров (ни один не является обязательным):

Название

Описание

id

Идентификатор плана занятий.

edUnitId

Идентификатор уч. единицы.

officeOrCompanyId

Идентификатор филиала/компании.

dateFrom

Начальная дата диапазона занятий.

dateTo

Конечная дата диапазона занятий.

visibleForClients

Признак того, что план занятия видим для клиентов (т.е. является домашним заданием).

Пример результата:

{

"LessonPlans":

[{

"Id": 2, // Идентификатор плана занятий

"EdUnitId": 123, // Идентификатор уч. единицы

"Date": "2019-08-01", // Дата занятия, для которого создан данный план/ДЗ

"VisibleForClients": false, // Признак того, что план занятия видим для клиентов (т.е. является домашним заданием).

"Content": "Глаголы и времена", // Содержимое плана/ДЗ (может содержать теги HTML)

}

...]

}

 
 

Запрос вступительных тестов.

Url: https://schooldomain.t8s.ru//Api/V2/GetEntranceTests

Список параметров (ни один не является обязательным):

Название

Описание

from

Начальные дата и время диапазона проведения тестов.

to

Конечные дата и время диапазона проведения тестов.

leadOrStudentOfficeOrCompanyId

Идентификатор филиала/компании лида или ученика.

leadId

Идентификатор лида.

studentClientId

Идентификатор клиента-ученика.

Пример результата:

{

"EntranceTests":

[{

"DateTime": "2019-08-01T15:00:00", // Дата и время проведения теста

"LeadId": 123, // Идентификатор лида (если тест проходил лид)

"LeadName": "Иванов Иван Иванович", // ФИО лида (если тест проходил лид)

"StudentClientId": 236, // Идентификатор ученика как клиента (если тест проходил ученик)

"StudentName": "Иванов Иван Иванович", // ФИО ученика (если тест проходил ученик)

"Discipline": "Английский", // Дисциплина теста

"LearningType": "Общий", // Тип обучения теста

"TeacherId": 10, // Идентификатор преподавателя, который проводит тестирование

"TeacherName": "Петров Пётр Петрович", // Имя преподавателя, который проводит тестирование

"Level": "Продвинутый", // Полученный после прохождения теста уровень владения дисциплиной (отсутствует, если тест не пройден)

"CommentHtml": "Хорошо ответил", // Примечание к тесту в HTML

"CommentText": "Хорошо ответил" // Примечание к тесту, преобразованное в текст

}

...]

}

 
 

Запрос типов оффлайн-тестов (а также их категорий и навыков).

Url: https://schooldomain.t8s.ru//Api/V2/GetOfflineTestTypes

Список параметров (ни один не является обязательным):

Название

Описание

testTypeCategoryId

Идентификатор категории теста

testTypeCategoryName

Наименование категории теста

testTypeId

Идентификатор типа теста

testTypeName

Наименование типа теста

Пример результата:

{

"Categories":

[{

"Id": 2, // Идентификатор категории тестов

"Name": "Основная категория", // Наименование категории тестов

// Массив типов тестов в данной категории

"TestTypes": [

{

"Id": 3, // Идентификатор типа теста

"Name": "Основной тип", // Наименование типа теста

// Массив навыков данного теста

"Skills": [

{

"Id": 5, // Идентификатор навыка

"Name": "Основной навык", // Наименование навыка

"MaxScore": 20, // Максимально возможное кол-во баллов

"ValidScore": 15 // Кол-во баллов, считающееся успешным

},

...],

},

...],

}

...]

}

 
 

Запрос результатов персональных тестов.

Url: https://schooldomain.t8s.ru//Api/V2/GetPersonalTestResults

Список параметров (ни один не является обязательным):

Название

Описание

from

Начальные дата и время диапазона проведения тестов.

to

Конечные дата и время диапазона проведения тестов.

studentOfficeOrCompanyId

Идентификатор филиала/компании ученика.

studentClientId

Идентификатор клиента-ученика.

Пример результата:

{

"PersonalTestResults":

[{

"DateTime": "2019-08-01T15:00:00", // Дата и время проведения теста

"StudentClientId": 236, // Идентификатор ученика как клиента

"StudentName": "Иванов Иван Иванович", // ФИО ученика

"Discipline": "Английский", // Дисциплина теста

"TeacherId": 10, // Идентификатор преподавателя, который проводит тестирование

"TeacherName": "Петров Пётр Петрович", // Имя преподавателя, который проводит тестирование

"TestTypeCategoryId": 2, // Идентификатор категории теста

"TestTypeCategoryName": "Основная категория", // Наименование категории теста

"TestTypeId": 3, // Идентификатор типа теста

"TestTypeName": "Основной тип", // Наименование типа теста

// Массив оценок по навыкам

"Skills": [

{

"SkillId": 5, // Идентификатор навыка

"SkillName": "Основной навык", // Наименование навыка

"Score": 15.5, // Кол-во баллов, набранных учеником

"MaxScore": 20, // Максимально возможное кол-во баллов

"ValidScore": 15 // Кол-во баллов, считающееся успешным

},

...],

"CommentHtml": "Хорошо ответил", // Примечание к результату теста в HTML

"CommentText": "Хорошо ответил" // Примечание к результату теста, преобразованное в текст

}

...]

}

 
 

Запрос результатов групповых тестов.

Url: https://schooldomain.t8s.ru//Api/V2/GetEdUnitTestResults

Список параметров (ни один не является обязательным):

Название

Описание

dateFrom

Начальная дата диапазона проведения тестов.

dateTo

Конечная дата диапазона проведения тестов.

edUnitId

Идентификатор уч. единицы.

officeOrCompanyId

Идентификатор филиала/компании.

studentClientId

Идентификатор клиента-ученика.

testTypeCategoryId

Идентификатор категории теста

testTypeCategoryName

Наименование категории теста

testTypeId

Идентификатор типа теста

testTypeName

Наименование типа теста

Пример результата:

{

"EdUnitTestResults":

[{

"Date": "2019-08-01", // Дата занятия, для которого создан результат теста

"EdUnitId": 123, // Идентификатор уч. единицы

"EdUnitType": "Group", // Тип уч. единицы

"EdUnitName": "Some group name", // Наименование уч. единицы

"EdUnitCorporative": false, // Если true, то уч. единица корпоративная, а в поле EdUnitOfficeOrCompanyName указано наименование компании

"EdUnitOfficeOrCompanyId": 2, // Идентификатор филиала/компании уч. единицы

"EdUnitOfficeOrCompanyName": "Главный филиал", // Наименование филиала/компании уч. единицы

"StudentClientId": 236, // Идентификатор ученика как клиента

"StudentName": "Иванов Иван Иванович", // ФИО ученика

"TestTypeCategoryId": 2, // Идентификатор категории теста

"TestTypeCategoryName": "Основная категория", // Наименование категории теста

"TestTypeId": 3, // Идентификатор типа теста

"TestTypeName": "Основной тип", // Наименование типа теста

// Массив оценок по навыкам

"Skills": [

{

"SkillId": 5, // Идентификатор навыка

"SkillName": "Основной навык", // Наименование навыка

"Score": 15.5, // Кол-во баллов, набранных учеником

"MaxScore": 20, // Максимально возможное кол-во баллов

"ValidScore": 15 // Кол-во баллов, считающееся успешным

},

...],

"CommentHtml": "Хорошо ответил", // Примечание к результату теста в HTML

"CommentText": "Хорошо ответил" // Примечание к результату теста, преобразованное в текст

}

...]

}

 
 

Запрос результатов онлайн-тестов.

Url: https://schooldomain.t8s.ru//Api/V2/GetOnlineTestResults

Список параметров (ни один не является обязательным):

Название

Описание

from

Начальные дата и время прохождения теста в UTC.

to

Конечные дата и время прохождения теста в UTC.

studentOfficeOrCompanyId

Идентификатор филиала/компании ученика.

studentClientId

Идентификатор клиента-ученика.

Пример результата:

{

"OnlineTestResults":

[{

"Created": "2019-08-01T15:34:12", // Дата и время прохождения теста в UTC

"StudentClientId": 236, // Идентификатор ученика как клиента

"StudentName": "Иванов Иван Иванович", // ФИО ученика

"Discipline": "Английский", // Дисциплина теста

"CourseTitle": "Курс #1", // Наименование курса

"ChapterTitle": "Глава #1", // Наименование главы

"LessonTitle": "Занятие #1", // Наименование занятия

"LessonType": "Normal", // Тип урока (Normal – обычное прохождение курса, Intermediate – промежуточный тест, Final – итоговый тест)

"Score": 15, // Набранное количество баллов

"Total": 25, // Максимально возможное количество баллов

"Level": "Продвинутый", // Полученный после прохождения теста уровень владения дисциплиной (только для тестов на уровень)

"RewardPoints": 5, // Количество призовых баллов, полученных после прохождения теста

"CommentHtml": "Хорошо ответил", // Примечание к результату теста в HTML

"CommentText": "Хорошо ответил" // Примечание к результату теста, преобразованное в текст

}

...]

}

 
 

Запрос отчётов об успеваемости.

Url: https://schooldomain.t8s.ru//Api/V2/GetEdUnitStudentReports

Список параметров (ни один не является обязательным):

Название

Описание

createdFrom

Начальные дата и время создания отчёта.

createdTo

Конечные дата и время создания отчёта.

month

Месяц отчёта в формате YYYYMM.

edUnitId

Идентификатор уч. единицы.

edUnitOfficeOrCompanyId

Идентификатор филиала/компании уч. единицы.

studentClientId

Идентификатор клиента-ученика.

Пример результата:

{

"EdUnitStudentReports":

[{

"Created": "2016-12-22T14:07:18", // Дата и время создания отчёта

"Month": 202003, // Месяц отчёта

"EdUnitId": 123, // Идентификатор уч. единицы

"EdUnitType": "Group", // Тип уч. единицы

"EdUnitName": "Some group name", // Наименование уч. единицы

"EdUnitCorporative": false, // Если true, то уч. единица корпоративная, а в поле EdUnitOfficeOrCompanyName указано наименование компании

"EdUnitOfficeOrCompanyId": 2, // Идентификатор филиала/компании уч. единицы

"EdUnitOfficeOrCompanyName": "Главный филиал", // Наименование филиала/компании уч. единицы

"StudentClientId": 236, // Идентификатор ученика как клиента

"StudentName": "Иванов Иван Иванович", // ФИО ученика

// Массив оценок по критериям

"Criterions": [

{

"CriterionName": "Усвоение материала", // Наименование критерия

"Value": 4, // Оценка по пятибалльной шкале

},

...],

"CommentHtml": "Примечание<br/>к отчёту", // Примечание к отчёту в HTML

"CommentText": "Примечание\r\nк отчёту" // Примечание к отчёту, преобразованное в текст

}

...]

}

 
 

Запрос цен.

Url: https://schooldomain.t8s.ru//Api/V2/GetPrices

Список параметров (ни один не является обязательным):

Название

Описание

id

Идентификатор цены.

officeId

Идентификатор филиала

corporative

Корпоративные цены. Булевский признак, по умолчанию null.

calendar

Календарные цены. Булевский признак, по умолчанию null.

packet

Пакетные цены. Булевский признак, по умолчанию null.

Пример результата:

{

"Prices":

[{

"Id": 9, // Идентификатор цены

"Name": "Общая", // Наименование цены

"Value": "5 000,50 руб.", // Значение цены строкой

"ValueQuantity": 5000.5, // Значение цены числом

"ValueCurrency": "Рубли", // Валюта цены

"Calendar": false, // Признак календарной цены

"Units": "10 а.ч.", // Количество единиц, входящих в цену, строкой

"UnitsQuantity": 450, // Количество единиц, входящих в цену, числом (для некалендарных цен)

"UnitsType": "Minutes", // Тип единиц (Minutes/Days, для некалендарных цен)

"Months": 450, // Количество месяцев, входящих в цену (для календарных цен)

"Days": 450, // Количество дней, входящих в цену (для календарных цен)

"Packet": true, // Признак пакетной цены (отсутствует для календарной цены)

"PartlyPayable": true, // Может оплачиваться частично

"DaysActual": 15, // Срок действия, дней (может отсутствовать)

"Corporative": true, // Признак того, что цена может использоваться в корп. отделе

// Массив филиалов, в которых может используется цена (если таковых нет, отсутствует)

"Offices": [

{

"Id": 5, // Идентификатор филиала

"Name": "Главный филиал" // Наименование филиала

},

}

...]

}

 
 

Запрос платежей.

Url: https://schooldomain.t8s.ru//Api/V2/GetPayments

Список параметров (ни один не является обязательным):

Название

Описание

id

Идентификатор платежа

types

Наименования типов платежей (как они именуются в настройках) через запятую

dateFrom

Начальная дата платежа

dateTo

Конечная дата платежа

paidDateFrom

Начальная дата установки для платежа статуса "Оплачено"

paidDateTo

Конечная дата установки для платежа статуса "Оплачено"

officeOrCompanyId

Идентификатор филиала/компании, к которому прикреплён платёж

state

Битовая маска состояния платежа (1 - не оплачен, 2 - не подтверждён, 4 - оплачен)

clientId

Идентификатор клиента-плательщика

Результат возвращается в формате json в виде массива объектов “Payments”.

Пример результата:

{

"Payments":

[{

"Id": 123, // Идентификатор платежа

"Created": "2019-10-09T15:30:23", // Дата и время создания платежа в UTC

"Type": "Обучение", // Тип платежа

"Date": "2019-10-01", // Дата платежа в формате YYYY-MM-DD

"PaidDate": "2019-10-09", // Дата оплаты платежа в формате YYYY-MM-DD (отсутствует у неоплаченных платежей)

"RequiredPaidDate": "2019-10-09", // Требуемая дата оплаты (срок оплаты) в формате YYYY-MM-DD

"OfficeOrCompanyId": 7, // Идентификатор филиала/компании, к которому прикреплён платёж

"OfficeOrCompanyName": "Основной филиал", // Наименование филиала/компании, к которому прикреплён платёж

"State": "Paid", // Состояние платежа (“Unpaid”, “Unconfirmed” или “Paid”)

"ClientId": 23, // Идентификатор клиента-плательщика

"ClientName": "Иванов Иван", // Имя клиента-плательщика

"Value": "1 000,00 руб.", // Сумма платежа

"ValueQuantity": 1000, // Значение суммы числом

"ValueCurrency": "Рубли", // Валюта платежа

"Description": "Комментарий к платежу"

},

...]

}

 
 

Поступления и списания.

Url: https://schooldomain.t8s.ru//Api/V2/GetIncomesAndOutgoes

Список параметров:

Название

Описание

clientId

Идентификатор клиента-плательщика

Результат возвращается в формате json в виде объектов “Study” и “OtherPayments”.

Пример результата:

{

"Study": // Поступления и списания за обучение

{

"Items":

[{

"Type": "Study", // Тип поступления/списания

"Begin": "2019-10-01", // Начальная дата в формате YYYY-MM-DD (отсутствует для Type=PointsEarning)

"End": "2019-10-01", // Конечная дата в формате YYYY-MM-DD (отсутствует для Type=PointsEarning)

"Income": false, // true – поступление, false - списание

"Value": "1 000,00 руб.", // Сумма поступления/списания

"PaymentTypeName": "Обучение", // Тип платежа (только для Type=Payment)

"PaymentDetails": "Оплата для Группа Для тестов (60 а.ч.)", // Детали платежа (только для Type=Payment)

"EdUnitId": 123, // Идентификатор уч. единицы (только для Type=Pass|Study|Other)

"EdUnitType": "Group", // Тип уч. единицы (только для Type=Pass|Study|Other|NonActual|Nulling)

"EdUnitName": "General Intermediate 108", // Название уч. единицы (только для Type=Pass|Study|Other|NonActual|Nulling)

"Units": "10 а.ч." // Количество единиц (только для Type=Pass|Study|NonActual|Nulling)

},

...]

"Incomes": "5 000,00 руб.", // Сумма всех поступлений

"Outgoes": "2 000,00 руб.", // Сумма всех списаний

"Balance": "3 000,00 руб." // Баланс

},

"OtherPayments": // Другие платежи (уч. материалы, курсы и т.п.)

{

"Items":

[{

"Type": "Payment",

"Begin": "2019-10-01", // Дата платежа в формате YYYY-MM-DD

"End": "2019-10-01", // Дата платежа в формате YYYY-MM-DD

"Income": true, // true – поступление, false - списание

"Value": "1 000,00 руб.", // Сумма поступления/списания

"PaymentTypeName": "Учебные материалы", // Тип платежа

"PaymentDetails": "\"Книга 1\", \"Книга 4\"" // Детали платежа

},

...]

"Incomes": "2 000,00 руб." // Сумма всех поступлений

}

}

Возможные типы поступлений/списаний:

Payment – Платёж
Study – Занятие
Pass – Пропуск
Other – Излишки по абонементам, округления и т.п.
NonActual – Возврат на ЛС / Списание за обучение по уч. единице, в которой ученик уже не состоит

Nulling – Обнуление остатка по уч. единице (списание в счёт школы)

PointsEarning – Начисление баллов

 

Запрос учебных материалов, доступных пользователю.

Url: https://schooldomain.t8s.ru//Api/V2/GetEdMaterials

Список параметров:

Название

Описание

type

Тип уч. материала (Image, Book, Audio или Video). Если не указан, возвращаются все типы.

Пример результата:

{

"EdMaterials":

[{

"Title": "Таблица неправильных глаголов", // Заголовок уч. материала

"Type": "Image", // Тип уч. материала

"ThumbnailUrl": "/Files/Default/Images/4lnbjzvc-100x100.jpg", // URL миниатюры уч. материала

"Url": "/Files/Default/Images/4lnbjzvc-700x480.jpg", // URL уч. материала

"VideoHostingPlayerUrl": "

", // URL плеера видеохостинга для встройки в HTML

"Description": "Примечание к уч. материалу"

},

...]

}

Набор возвращаемых уч. материалов зависит от пользователя, который их запрашивает (т.е. от authkey). Если authkey не привязан к пользователю (GetMemberAuthKey), возвращаются все уч. материалы.

При использовании URL для скачивания книги необходимо так же указать в нём authkey.

URL видео может ссылаться как на файл на сервере (например, "/Files/Default/Video/xza3q3z5.mp4"), так и на видеохостинг (например, "http://www.youtube.com/v/qwerty").

 

Запрос объявлений.

Url: https://schooldomain.t8s.ru//Api/V2/GetAnnouncements

Список параметров:

Название

Описание

targets **

Типы адресатов объявлений через запятую. Допустимые значения: Inside, Students, CompanyMembers.

createdFrom

Минимальные дата и время создания объявления в UTC.

lastOnly ***

Возвращать только последнее объявление. По умолчанию false.

** Если объявление запрашиваются под определённым пользователем, то указывать параметр не обязательно, он будет соответствовать типу пользователя. В противном случае, параметр обязателен.

*** Не влияет на возвращаемое поле Count.

Объявления всегда возвращаются отсортированным от позднего к раннему.

Пример результата:

{

"Announcements":

[{

"Id": 123, // Идентификатор объявления

"Created": "2019-04-30T15:30:23", // Дата и время создания объявления в UTC

"ContentHtml": "Завтра<br/>выходной", // Содержимое объявления в HTML

"ContentText": "Завтра\r\nвыходной" // Содержимое объявления, преобразованное в текст

},

...],

"Count": 5,

"Now": "2019-04-30T18:25:00" // Текущие дата и время сервера в UTC (для последующей передачи в createdFrom)

}

 

Запрос собеседников пользователя.

Url: https://schooldomain.t8s.ru//Api/V2/GetCollocutors

Список параметров:

Название

Описание

memberId **

Идентификатор пользователя

studentClientId **

Идентификатор клиента-ученика (вместо memberId)

** Если запрос происходит под определённым пользователем, то указывать данные параметры не обязательно. В противном случае, обязательно наличие одного из данных параметров.

Пример результата:

{

"Collocutors":

[{

"Id": 123, // Идентификатор собеседника

"FirstName": "Иван", // Имя собеседника

"LastName": "Иванов", // Фамилия собеседника

"MiddleName": "Иванович", // Отчество собеседника

"Type": "Employee", // Тип собеседника (“Employee”, “Teacher” или “Student”)

"PhotoUrls": ["/Files/Default/Photos/ghahnhlx-100x100.jpg"], // Коллекция фото собеседника в различных разрешениях

"Gender": false // Пол (true – мужской, false - женский)

"UnreadCount": 5, // Количество непрочитанных учеником сообщений от данного собеседника (если 0, не возвращается)

"LastMessageId": 25, // Идентификатор последнего сообщения

"LastMessageCreated": "2019-04-30T15:30:23", // Дата создания (отправки) последнего сообщения в UTC

"LastMessageIncoming": true, // true – входящее, false - исходящее

"LastMessageText": "Привет!", // Текст последнего сообщения

"ReadOnly": false // Если true, то собеседник остался в данном списке только из-за наличия переписки с ним, и разрешать отправлять ему сообщения нежелательно

},

...]

}

 

Запрос переписки.

Url: https://schooldomain.t8s.ru//Api/V2/GetCorrespondence

Список параметров (обязательные поля отмечены звёздочкой):

Название

Описание

memberId **

Идентификатор пользователя

studentClientId **

Идентификатор клиента-ученика (вместо memberId)

collocutorId *

Идентификатор собеседника

createdFrom

Минимальные дата и время создания сообщения

** Если запрос происходит под определённым пользователем, то указывать данные параметры не обязательно. В противном случае, обязательно наличие одного из данных параметров.

Пример результата:

{

"Messages":

[{

"Id": 123, // Идентификатор сообщения

"Created": "2019-04-30T15:30:23", // Дата создания (отправки) сообщения в UTC

"Incoming": true, // true – входящее, false – исходящее (относительно memberId/clientId)

"New": true, // true – сообщение не прочитано получателем

"Text": "Привет!" // Текст сообщения

},

...]

}

 

Запрос групповых чатов ученика.

Url: https://schooldomain.t8s.ru//Api/V2/GetEdUnitChats

Список параметров:

Название

Описание

memberId **

Идентификатор пользователя

studentClientId **

Идентификатор клиента-ученика

countsFrom ***

Минимальные дата и время создания сообщений для подсчёта поля Count, в UTC

countsFromByLearners ***

countsFrom по уч. единицам

countsFromByLearners[].EdUnitId

Идентификатор уч. единицы

countsFromByLearners[].CountsFrom

Минимальные дата и время создания сообщений для подсчёта поля Count, в UTC

** Если запрос происходит под определённым пользователем, то указывать данные параметры не обязательно. В противном случае, обязательно наличие одного из данных параметров.

*** Если дата/время для уч. единицы не указаны, поле Count для неё не возвращается.
Если какая-либо уч. единица отсутствует в массиве countsFromByLearners, дата/время для неё берётся из countsFrom.
При использовании GET-запроса countsFromByLearners можно указать след. образом:
…countsFromByLearners[0].EdUnitId=123&countsFromByLearners[0].CountsFrom=2020-06-23&countsFromByLearners[1]…

Пример результата:

{

"Chats":

[{

"EdUnitId": 15, // Идентификатор уч. единицы

"EdUnitType": "Group", // Тип учебной единицы

"EdUnitName": "General Intermediate 108", // Название учебной единицы

"Count": 5, // Количество сообщений, начиная с countsFrom (если 0, не возвращается)

"LastMessageId": 25, // Идентификатор последнего сообщения

"LastMessageCreated": "2019-04-30T15:30:23", // Дата создания (отправки) последнего сообщения в UTC

"LastMessageFromId": 25, // Идентификатор пользователя – автора последнего сообщения

"LastMessageFromFirstName": "Иван", // Имя автора последнего сообщения

"LastMessageFromLastName": "Иванов", // Фамилия автора последнего сообщения

"LastMessageFromMiddleName": "Иванович", // Отчество автора последнего сообщения

"LastMessageFromType": "Teacher", // Тип автора последнего сообщения (“Employee”, “Teacher” или “Student”)

"LastMessageFromPhotoUrls": ["/Files/Default/Photos/ghahnhlx-100x100.jpg"], // Коллекция фото автора последнего сообщения в различных разрешениях

"LastMessageFromGender": false // Пол (true – мужской, false - женский)

"LastMessageHtml": "Привет!<br/>Это преподаватель.", // Содержимое последнего сообщения в HTML

"LastMessageText": "Привет!\r\nЭто преподаватель." // Содержимое последнего сообщения, преобразованное в текст

},

...],

"Now": "2019-04-30T18:25:00" // Текущие дата и время сервера в UTC (для последующей передачи в countsFrom)

}

 

Запрос сообщений группового чата.

Url: https://schooldomain.t8s.ru//Api/V2/GetEdUnitChatMessages

Список параметров (обязательные поля отмечены звёздочкой):

Название

Описание

edUnitId *

Идентификатор уч. единицы.

createdFrom

Минимальные дата и время создания сообщения.

Пример результата:

{

"Messages":

[{

"Id": 15, // Идентификатор сообщения

"Created": "2019-04-30T15:30:23", // Дата создания (отправки) последнего сообщения в UTC

"FromId": 25, // Идентификатор пользователя – автора последнего сообщения

"FromFirstName": "Иван", // Имя автора последнего сообщения

"FromLastName": "Иванов", // Фамилия автора последнего сообщения

"FromMiddleName": "Иванович", // Отчество автора последнего сообщения

"FromType": "Teacher", // Тип автора последнего сообщения (“Employee”, “Teacher” или “Student”)

"FromPhotoUrls": ["/Files/Default/Photos/ghahnhlx-100x100.jpg"], // Коллекция фото автора последнего сообщения в различных разрешениях

"FromGender": false // Пол (true – мужской, false - женский)

"Html": "Привет!<br/>Это преподаватель.", // Содержимое последнего сообщения в HTML

"Text": "Привет!\r\nЭто преподаватель." // Содержимое последнего сообщения, преобразованное в текст

},

...],

"Now": "2019-04-30T18:25:00" // Текущие дата и время сервера в UTC (для последующей передачи в createdFrom)

}

 

Добавление лида.

Url: https://schooldomain.t8s.ru//Api/V2/AddLead

Список параметров (обязательные поля отмечены звёздочкой):

Название

Описание

firstName

Имя

middleName

Отчество

lastName

Фамилия

gender *

Пол (true – мужской, false - женский)

birthday

Дата рождения в формате YYYY-MM-DD

age

Возраст (игнорируется при указании birthday)

officeOrCompanyId

Идентификатор филиала или компании

status

Наименование статуса лида

discipline

Наименование дисциплины

level

Наименование уровня

maturity

Наименование возрастной категории

learningType

Наименование типа обучения

comment

Комментарий к лиду (HTML не поддерживается)

studyRequestId

Идентификатор заявки, к которой необходимо прикрепить созданного лида

Обязательных полей может быть больше, если в настройках соответствующие поля отмечены как обязательные.

При указании studyRequestId заявка переводится в статус «Подтверждённая», т.е. переходит в архив.

Пример POST-вызова с использованием jQuery:

$.ajax({

url: "http://schooldomain.t8s.ru/Api/V2/AddLead",

data: {

authkey: ...,

firstName: "Иван",

lastName: "Иванов",

gender: true

},

type: "post"

});

 

Пример результата:

{

"LeadId": 123 // Идентификатор добавленного лида

}

 
 

Добавление ученика.

Url: https://schooldomain.t8s.ru//Api/V2/AddStudent

Список параметров (обязательные поля отмечены звёздочкой):

Название

Описание

firstName *

Имя

middleName

Отчество

lastName *

Фамилия

gender *

Пол (true – мужской, false - женский)

birthday

Дата рождения в формате YYYY-MM-DD

age

Возраст (игнорируется при указании birthday)

officeOrCompanyId

Идентификатор филиала или компании

status

Наименование статуса ученика

discipline

Наименование дисциплины

level

Наименование уровня

maturity

Наименование возрастной категории

learningType

Наименование типа обучения

comment

Комментарий к лиду (HTML не поддерживается)

studyRequestId

Идентификатор заявки, к которой необходимо прикрепить созданного ученика

Обязательных полей может быть больше, если в настройках соответствующие поля отмечены как обязательные.


При указании studyRequestId заявка переводится в статус «Подтверждённая», т.е. переходит в архив.

Пример POST-вызова с использованием jQuery:

$.ajax({

url: "http://schooldomain.t8s.ru/Api/V2/AddStudent",

data: {

authkey: ...,

firstName: "Иван",

lastName: "Иванов",

gender: true

},

type: "post"

});

 

Пример результата:

{

"ClientId": 123 // Идентификатор добавленного ученика как клиента

}

 
 

Создание ученика из лида.

Url: https://schooldomain.t8s.ru//Api/V2/AddStudentFromLead

Список параметров (обязательные поля отмечены звёздочкой):

Название

Описание

leadId *

Идентификатор лида

Пример POST-вызова с использованием jQuery:

$.ajax({

url: "http://schooldomain.t8s.ru/Api/V2/AddStudentFromLead",

data: {

authkey: ...,

leadId: 15,

},

type: "post"

});

 

Пример результата:

{

"ClientId": 123 // Идентификатор добавленного ученика как клиента

}

 
 

Редактирование персональной информации ученика.

Url: https://schooldomain.t8s.ru//Api/V2/EditPersonal

Список параметров (обязательные поля отмечены звёздочкой):

Название

Описание

studentClientId *

Идентификатор клиента-ученика

firstName *

Имя

middleName

Отчество

lastName *

Фамилия

gender *

Пол (true – мужской, false - женский)

birthday

Дата рождения в формате YYYY-MM-DD

age

Возраст (игнорируется при указании birthday)

comment

Комментарий к ученику (HTML не поддерживается)

Обязательных полей может быть больше, если в настройках соответствующие поля отмечены как обязательные.

Пример POST-вызова с использованием jQuery:

$.ajax({

url: "http://schooldomain.t8s.ru/Api/V2/EditPersonal",

data: {

authkey: ...,

studentClientId: 34,

firstName: "Иван",

lastName: "Иванов",

gender: true

},

type: "post"

});

 
 

Редактирование основных контактов лида/ученика.

Url: https://schooldomain.t8s.ru//Api/V2/EditContacts

Список параметров (обязательные поля отмечены звёздочкой):

Название

Описание

leadId **

Идентификатор лида

studentClientId **

Идентификатор клиента-ученика

mobile

Номер мобильного телефона

useMobileBySystem *

Признак того, что Mobile может использоваться системой (например, для отправки SMS)

phone

Номер телефона

eMail

E-mail

useEMailBySystem *

Признак того, что EMail может использоваться системой

skype

Skype

address

Адрес

socialNetworkPage

Адрес в соц. сети

jobOrStudyPlace

Место работы

position

Должность

** Обязательно должен быть указан один из данных параметров

Обязательных полей может быть больше, если в настройках соответствующие поля отмечены как обязательные.

Редактирование контактов лида, прикреплённого к ученику, не допускается (метод вернёт ошибку).
Также обратите внимание, что если несколько лидов связаны друг с другом, то контакты изменятся у всех.

Пример POST-вызова с использованием jQuery:

$.ajax({

url: "http://schooldomain.t8s.ru/Api/V2/EditContacts",

data: {

authkey: ...,

studentClientId: 34,
mobile: "+79121234567",
useMobileBySystem: true,

eMail: "some@mail.com",
useEMailBySystem: true

},

type: "post"

});

 
 

Редактирование контактных лиц лида/ученика.

Url: https://schooldomain.t8s.ru//Api/V2/EditAgentContacts

Список параметров (обязательные поля отмечены звёздочкой):

Название

Описание

leadId **

Идентификатор лида

studentClientId **

Идентификатор клиента-ученика

agents

Массив контактных лиц

agents.firstName

Имя

agents.middleName

Отчество

agents.lastName

Фамилия

agents.whoIs

Кем приходится ученику конт. лицо

agents.mobile

Номер мобильного телефона

agents.useMobileBySystem *

Признак того, что Mobile может использоваться системой (например, для отправки SMS)

agents.phone

Номер телефона

agents.eMail

E-mail

agents.useEMailBySystem *

Признак того, что EMail может использоваться системой

agents.skype

Skype

agents.jobOrStudyPlace

Место работы

agents.position

Должность

agents.isCustomer *

Признак того, что контактное лицо является заказчиком

agents.birthday

Дата рождения в формате YYYY-MM-DD

** Обязательно должен быть указан один из данных параметров

Обязательных полей может быть больше, если в настройках соответствующие поля отмечены как обязательные.

Добавить/Отредактировать/Удалить отдельное конт. лицо нельзя. Весь набор конт. лиц всегда отправляется полностью. Если конт. лица не указаны, все имеющиеся конт. лица лида/ученика будут удалены.

Редактирование конт. лиц лида, прикреплённого к ученику, не допускается (метод вернёт ошибку).
Также обратите внимание, что если несколько лидов связаны друг с другом, то конт. лица изменятся у всех.


Пример POST-вызова с использованием jQuery:

$.ajax({

url: "http://schooldomain.t8s.ru/Api/V2/EditAgentContacts",

data: {

authkey: ...,

studentClientId: 34,
agents: [{

whoIs: "Отец",
mobile: "+79121234567",
useMobileBySystem: true,

eMail: "some@mail.com",
useEMailBySystem: true,

isCustomer: true

},

...]

},

type: "post"

});

 
 

Редактирование пользовательских полей лида/ученика.

Url: https://schooldomain.t8s.ru//Api/V2/EditUserExtraFields

Список параметров:

Название

Описание

leadId **

Идентификатор лида

studentClientId **

Идентификатор клиента-ученика

fields

Массив полей

fields.name

Наименование поля

fields.value

Значение поля

** Обязательно должен быть указан один из данных параметров

Добавить/Отредактировать/Удалить отдельное поле нельзя. Весь набор полей всегда отправляется полностью.
Если какое-то из полей не указано, то оно будет удалено у лида/ученика.

Также обратите внимание, что если несколько лидов связаны друг с другом, то польз. поля изменятся у всех.


Пример POST-вызова с использованием jQuery:

$.ajax({

url: "http://schooldomain.t8s.ru/Api/V2/EditUserExtraFields",

data: {

authkey: ...,

studentClientId: 34,
fields: [{

name: "Поле типа «Текст»",
value: "Какой-либо текст"

}, {

name: "Поле типа «Число»",
value: 1234

}, {

name: "Поле типа «Флажок»",
value: true // Допустимые значения: true и false

}, {

name: "Поле типа «Дата»",
value: "2020-03-25"

}, {

name: "Поле типа «Описание»",
value: "Какое-либо <b>Описание</b> в HTML"

}, {

name: "Поле типа «Список»",
value: "Элемент 1"

},

...]

},

type: "post"

});

 
 

Загрузка фотографии ученика.

Url: https://schooldomain.t8s.ru//Api/V2/UploadPhoto

Список параметров (обязательные поля отмечены звёздочкой):

Название

Описание

studentClientId *

Идентификатор клиента-ученика

Пример POST-вызова с использованием jQuery:

<form>

<input type="file" name="file" onchange="window.onFileChange(this);" />

</form>

window.onFileChange = function(file) {

var xhr = new XMLHttpRequest();

xhr.open("POST", "http://schooldomain.t8s.ru/Api/V2/UploadPhoto?studentClientId=34&authkey=...");

xhr.send(new FormData($(file).closest("form")[0]));

xhr.onload = function () { … };

};

 

Пример результата:

{

"PhotoUrls": ["/Files/Default/Photos/ghahnhlx-100x100.jpg"] // Коллекция фото ученика в различных разрешениях

}

 

Удаление фотографии ученика.

Url: https://schooldomain.t8s.ru//Api/V2/RemovePhoto

Список параметров (обязательные поля отмечены звёздочкой):

Название

Описание

studentClientId *

Идентификатор клиента-ученика

Пример POST-вызова с использованием jQuery:

$.ajax({

url: "http://schooldomain.t8s.ru/Api/V2/RemovePhoto",

data: {

authkey: ...,

studentClientId: 34
},

type: "post"

});

 
 

Добавление пробного урока.

Url: https://schooldomain.t8s.ru//Api/V2/AddEdUnitLead

Список параметров (обязательные поля отмечены звёздочкой):

Название

Описание

edUnitId *

Идентификатор уч. единицы

leadId *

Идентификатор лида

date *

Дата пробного урока в формате YYYY-MM-DD

comment

Комментарий к пробному уроку

Пример POST-вызова с использованием jQuery:

$.ajax({

url: "http://schooldomain.t8s.ru/Api/V2/AddEdUnitLead",

data: JSON.stringify({

authkey: ...,

edUnitId: 12,

leadId: 25,

date: "2020-03-25",

comment: "Примечание к пробному уроку"

}),

type: "post"

});

 
 

Добавление ученика в учебную единицу.

Url: https://schooldomain.t8s.ru//Api/V2/AddEdUnitStudent

Список параметров (обязательные поля отмечены звёздочкой):

Название

Описание

edUnitId *

Идентификатор уч. единицы

studentClientId *

Идентификатор клиента-ученика

begin

Дата начала занятий ученика в группе в формате YYYY-MM-DD (если параметр не указан, берётся начало занятий уч. единицы)

end

Дата окончания занятий ученика в группе в формате YYYY-MM-DD (если параметр не указан, берётся окончание занятий уч. единицы)

weekdays

Маска дней недели занятий ученика в группе (если параметр не указан, берутся все дни недели уч. единицы)

status

Статус связки (может быть «Reserve», «Normal», «WorkingOff» или «Stopped», отсутствие параметра равносильно «Normal»)

priceId

Идентификатор цены

comment

Комментарий

Для добавления ученика «Без занятий» необходимо указать любые значения begin и end, такие, чтобы begin > end.

Пример POST-вызова с использованием jQuery:

$.ajax({

url: "http://schooldomain.t8s.ru/Api/V2/AddEdUnitStudent",

data: JSON.stringify({

authkey: ...,

edUnitId: 12,

studentClientId: 34,

begin: "2020-03-01",

end: "2020-03-25",

weekdays: 10, // 2 + 8 = Вт/Чт

status: "Reserve",

priceId: 10,

comment: "Примечание к связке"

}),

type: "post"

});

 
 

Редактирование связки Учебная единица - Ученик.

Url: https://schooldomain.t8s.ru//Api/V2/EditEdUnitStudent

Список параметров (обязательные поля отмечены звёздочкой):

Название

Описание

edUnitId *

Идентификатор уч. единицы

studentClientId *

Идентификатор клиента-ученика

status **

Статус связки (может быть «Reserve», «Normal», «WorkingOff» или «Stopped»)

comment **

Комментарий

** Если данный параметр не указан или равен null, его значение не меняется.

Пример POST-вызова с использованием jQuery:

$.ajax({

url: "http://schooldomain.t8s.ru/Api/V2/EditEdUnitStudent",

data: JSON.stringify({

authkey: ...,

edUnitId: 12,

studentClientId: 34,

status: "Normal",

comment: "Примечание к связке"

}),

type: "post"

});

 
 

Установка информации о занятиях/пропусках.

Url: https://schooldomain.t8s.ru//Api/V2/SetStudentPasses

Метод принимает параметр authkey (через URL), а также массив объектов, каждый из которых состоит из следующих полей:

Название

Описание

date

Дата занятия

edUnitId

Идентификатор учебной единицы

studentClientId

Идентификатор клиента-ученика

pass

Булевский признак пропуска

payable

Булевский признак оплачиваемости для учеников и преподавателей *

description

Примечание к занятию *

acceptedDescription

Примечание к подтверждению посещения/пропуска (отображается в интерфейсе, но устанавливается только через данный метод) *

overwriteAcceptedManually

Булевский признак, позволяющий перезаписывать подтверждённое вручную занятие, по умолчанию: true

* Если данный параметр не указан или равен null, его значение не меняется.

Пример POST-вызова с использованием jQuery:

$.ajax({

url: "http://schooldomain.t8s.ru/Api/V2/SetStudentPasses?authkey=...",

data: JSON.stringify([

{ Date: '2017-03-26', EdUnitId: 4563, StudentClientId: 3206, Pass: false, Payable: false },

{ Date: '2017-04-02', EdUnitId: 4563, StudentClientId: 3206, Pass: false, Payable: true }

]),

contentType: "application/json; charset=utf-8",

type: "post"

});

Пример GET-вызова с теми же параметрами:

http://schooldomain.t8s.ru/Api/V2/SetStudentPasses?[0].Date=2017-03-26&[0].EdUnitId=4563&[0].StudentClientId=3206&[0].Pass=false&[0].Payable=false&[1].Date=2017-04-02&[1].EdUnitId=4563&[1].StudentClientId=3206&[1].Pass=false&[1].Payable=true&authkey=...

Если в процессе работы метода возникли ошибки, возвращается массив Errors, содержащий ошибки по каждому из занятий, например:

{"Errors": [

{

"errorType": "Exception",

"errorMessage": "The day info was set manually",

"Date": "2017-04-02",

"EdUnitId": 4563,

"StudentClientId": 3206

},

...]}

Если состояние пропуска объединённого дня (дня уч. единицы, объединённого с днём ученика) в результате вызова метода остаётся неизменным, то возвращается ошибка «The pass state will not be changed», и параметры этого дня не изменяются. Однако подтверждение пропуска/занятия всё равно устанавливается, но только если значение параметра Pass совпадает с текущим состоянием пропуска объединённого дня.

 
 

Добавление платежа (прихода на ЛС).

Url: https://schooldomain.t8s.ru//Api/V2/AddPayment

Список параметров (обязательны параметры clientId, officeOrCompanyId и value):

Название

Описание

clientId

Идентификатор клиента

officeOrCompanyId

Идентификатор филиала/компании

date

Дата платежа. Если не указана, берётся текущая.

value

Сумма и валюта платежа. Валюта должна указываться в том же виде, что используется для возврата денежных сумм (например, в GetPrices).
Если валюта не указана, берётся основная.
Десятичный разделитель должен соответствовать текущей культуре. Допускаются разделители групп разрядов.

paymentMethodId

Идентификатор способа оплаты. Если не указан, берётся в первый в соответствии с установленным в настройках порядком.

state

Состояние платежа: «Unpaid», «Unconfirmed» или «Paid». Если не указан, принимается равным «Paid».

description

Комментарий к платежу.

requiredPaidDate

Требуемая дата оплаты. Имеет смысл только при State = «Unpaid».

paidDate

Дата оплаты платежа (приёма средств). Имеет смысл только при State = «Paid». Если не указана, берётся текущая дата.

paidEmployeeId

Идентификатор принявшего платёж сотрудника.

notifyClient

Булевский признак, позволяющий уведомить клиента об успешной оплате или выставлении счёта (в зависимости от State).
По умолчанию: false.

Пример POST-вызова с использованием jQuery:

$.ajax({

url: "http://schooldomain.t8s.ru/Api/V2/AddPayment",

data: {

authkey: ...,

clientId: 236,

officeOrCompanyId: 5,

date: "2018-10-15",

value: "1 234,12 руб.",

state: "Paid",

description: "Какое-то описание",

paidEmployeeId: 40,

notifyClient: true

},

type: "post"

});

Пример успешного результата:

{

"Id": 1425 // Идентификатор добавленного платежа

}
 
 

Редактирование платежа.

Url: https://schooldomain.t8s.ru//Api/V2/EditPayment

Список параметров (обязательны только параметр id):

Название

Описание

id

Идентификатор платежа (можно передавать в виде EditPayment/id)

state

Состояние платежа: «Unpaid», «Unconfirmed» или «Paid» *

description

Комментарий (чтобы добавить текст к существующему комментарию, необходимо начать параметр с «+», а чтобы удалить – передать пустую строку) *

chequeNumber

Номер добавляемого к платежу чека (если к платежу уже прикреплён чек, возвращается ошибка) *

acquiring

Булевский признак того, что оплата произведена посредством эквайринга (свойство чека. не имеет смысла без chequeNumber) *

* Если данный параметр не указан или равен null, его значение не меняется.

Пример POST-вызова с использованием jQuery:

$.ajax({

url: "http://schooldomain.t8s.ru/Api/V2/EditPayment",

data: {

authkey: ...,

id: 1234,

state: "Paid",

description: "+Оплачено через Сбербанк",

chequeNumber: 123,

acquiring: true

},

type: "post"

});

 
 

Добавление оплаты за уч. единицу (расхода с ЛС).

Url: https://schooldomain.t8s.ru//Api/V2/AddEdUnitPayment

Список параметров (обязательны параметры clientId, edUnitId, priceId, beginDate для календарных оплат, multiplier или units):

Название

Описание

clientId

Идентификатор клиента

edUnitId

Идентификатор уч. единицы

date

Дата платежа. Если не указана, берётся текущая.

priceId

Идентификатор цены.

Цена должна соответствовать типу уч. единицы (календарной, либо некалендарной) и типу добавляемой оплаты (параметр Multiplier).

beginDate

Начальная дата диапазона оплачиваемых занятий. Имеет смысл только для календарных оплат.

multiplier

Множитель целой (не частичной) пакетной оплаты.

По наличию данного параметра определяется тип добавляемой оплаты: частичная пакетная или почасовая, либо полная пакетная.

units

Количество единиц для почасовой или частичной пакетной оплаты. Число или строка.

Для некалендарной оплаты должен содержать количество а.ч. (того типа а.ч., что указан в цене).

Для календарной оплаты должен содержать JSON-строку объекта, содержащего целочисленные поля Months и Days. Если объект содержит только одно из них, второе принимается равным нулю.

description

Комментарий к оплате.

validDate

Дата, после которой оплата считается недействительной. Имеет смысл только для некалендарных оплат.

studyPaymentId

Идентификатор прихода, который необходимо связать с добавляемым расходом.

Сумма прихода должна соответствовать сумме расхода. Приход должен быть свободен от связи с другим расходом.

notifyClient

Булевский признак, позволяющий уведомить клиента об успешной оплате или выставлении счёта (в зависимости от состояния прихода StudyPaymentId). Без прихода игнорируется (клиент не уведомляется о расходах с ЛС).

По умолчанию: false.

Примеры POST-вызовов с использованием jQuery.

Добавление некалендарной частичной пакетной, либо почасовой (в зависимости от типа цены) оплаты:

$.ajax({

url: "http://schooldomain.t8s.ru/Api/V2/AddEdUnitPayment",

data: {

authkey: ...,

clientId: 236,

edUnitId: 123,

date: "2018-10-15",

priceId: 9,

units: 2.5,

description: "Какое-то описание",

validDate: "2018-10-22"

notifyClient: true

},

type: "post"

});

Добавление календарной полной пакетной оплаты, связанной с приходом на ЛС:

$.ajax({

url: "http://schooldomain.t8s.ru/Api/V2/AddEdUnitPayment",

data: {

authkey: ...,

clientId: 236,

edUnitId: 456,

priceId: 15,

beginDate: "2018-06-01",

multiplier: 2,

studyPaymentId: 3618

},

type: "post"

});

Добавление календарной частичной пакетной оплаты:

$.ajax({

url: "http://schooldomain.t8s.ru/Api/V2/AddEdUnitPayment",

data: {

authkey: ...,

clientId: 236,

edUnitId: 456,

priceId: 15,

beginDate: "2018-06-01",

units: "{Months: 1, Days: 5}"

},

type: "post"

});

Пример успешного результата:

{

"Id": 1425, // Идентификатор добавленной оплаты

"Value": "1 234,12 руб." // Вычисленная на основе указанных параметров итоговая сумма оплаты

}
 
 

Добавление/Редактирование результата группового теста.

Url: https://schooldomain.t8s.ru//Api/V2/AddEditEdUnitTestResult

Список параметров (обязательные поля отмечены звёздочкой):

Название

Описание

edUnitId *

Идентификатор уч. единицы

studentClientId *

Идентификатор клиента-ученика

date *

Дата проведения теста

testTypeId *

Идентификатор типа теста

skills

Массив навыков и оценок

skills.skillId *

Идентификатор навыка

skills.score *

Количество баллов за данный навык

commentHtml

Комментарий к результату теста в HTML

Набор навыков в массиве skills должен соответствовать актуальному набору навыков указанного типа теста, а количество баллов за навык не должно превышать соответствующее максимальное значение.

Пример POST-вызова с использованием jQuery:

$.ajax({

url: "http://schooldomain.t8s.ru/Api/V2/AddEditEdUnitTestResult",

data: JSON.stringify({

authkey: ...,

edUnitId: 10,

studentClientId: 20,

date: "2018-10-08",

testTypeId: 1,

skills: [

{

skillId: 1,

score: 1.5

},

...],

commentHtml: "<b>Хорошо ответил</b>"

}),

contentType: "application/json;charset=utf-8",

type: "post"

});

 
 

Отправка личного сообщения.

Url: https://schooldomain.t8s.ru//Api/V2/AddPersonalMessage

Список параметров (обязательные поля отмечены звёздочкой):

Название

Описание

collocutorId *

Идентификатор собеседника.

text *

Текст сообщения.

Пример POST-вызова с использованием jQuery:

$.ajax({

url: "http://schooldomain.t8s.ru/Api/V2/AddPersonalMessage",

data: {

authkey: ...,

collocutorId: 15,

text: "Текст сообщения"

},

type: "post"

});

Пример успешного результата:

{

"Id": 1425, // Идентификатор добавленного сообщения

"Created": "2019-04-30T15:30:23" // Дата создания (отправки) данного сообщения в UTC

}
 
 

Отправка сообщения в групповой чат.

Url: https://schooldomain.t8s.ru//Api/V2/AddEdUnitChatMessage

Список параметров (обязательные поля отмечены звёздочкой):

Название

Описание

edUnitId *

Идентификатор уч. единицы.

html **

Текст сообщения в HTML.

text **

Текст сообщения.

** Обязателен лишь один из параметров (групповые чаты поддерживают HTML, то при желании можно отправить сообщение и в текстовом формате, указав вместо html параметр text).

Пример POST-вызова с использованием jQuery:

$.ajax({

url: "http://schooldomain.t8s.ru/Api/V2/AddEdUnitChatMessage",

data: {

authkey: ...,

edUnitId: 15,

text: "Текст сообщения"

},

type: "post"

});

Пример успешного результата:

{

"Id": 1425, // Идентификатор добавленного сообщения

"Created": "2019-04-30T15:30:23" // Дата создания (отправки) данного сообщения в UTC

}
 
 

Запрос ключа авторизации определённого пользователя по логину и паролю.

Данный метод может использоваться на стороннем ресурсе для реализации авторизации сотрудников/клиентов с тем, чтобы выполнять другие вызовы API от имени данного пользователя, передавая в них authkey, полученный в данном методе.

Url: https://schooldomain.t8s.ru//Api/V2/GetMemberAuthKey

Название

Описание

login

Логин

password

Пароль

Пример результата:

{

"Id": 5, // Идентификатор пользователя

"Type": "Student", // Тип пользователя (возможные значения: Employee - сотрудник, Teacher - преподаватель, Student - ученик, CompanyMember – конт. лицо компании)

"AuthKey": "e6er5QSZ9sl1BwISTt1u2Wv3c2CFasfN9Q3Lzw=", // Ключ авторизации данного пользователя

"FirstName": "Иван", // Имя пользователя

"LastName": "Иванов", // Фамилия пользователя

"MiddleName": "Иванович", // Отчество пользователя

"ClientId": 5 // Идентификатор пользователя как клиента (присутствует только для учеников и конт. лиц компаний)

}

Пример добавления заявки в CRM из javascript:

(ни один из параметров не является обязательным)

$.ajax({

url: "http://schooldomain.t8s.ru/Api/V2/AddStudyRequest",

data: JSON.stringify({

id: null, // Идентификатор заявки (используется только для обновления существующей заявки)

fullName: "Иванов Иван Иванович",

eMail: "ivanov@mail.ru",

phone: "+712312312312",

birthday: "1984-02-25",

agentFullName: "ФИО конт. лица",

agentEMail: "ivanov-father@mail.ru",

agentPhone: "+72342342323",

discipline: "Английский",

level: "Средний",

maturity: "Дошкольники",

location: "Тверь",

office: "Главный филиал",

extraFields: { // Пользовательские поля (при подтверждении заявки переносятся в лида/ученика, но только те поля, что есть в настройках)

customField1: "CustomValue1",

customField2: "True"

},

teacher: "Петров Пётр Петрович",

beginDate: "17.03",

endDate: "20.04",

weekdays: "ср/чт",

beginTime: "15:30",

endTime: "16:10",

edUnitId: null, // Идентификатор уч. единицы

type: "Заявка на обучение", // Тип заявки

description: "Примечание к заявке",

utm_source: "Yandex-Direct", // UTM-метка «Рекламная система»

utm_medium: "CPC", // UTM-метка «Тип трафика»

utm_campaign: "Первая рекламная кампания", // UTM-метка «Обозначение рекламной кампании»

utm_term: "Ключевое слово", // UTM-метка «Условие поиска кампании»

utm_content: "red-button", // UTM-метка «Содержание кампании»

extraData: "someData", // Произвольные пользовательские данные, доступные при экспорте заявок

deleted: false, // Если true, заявка создаётся сразу как удалённая и помещается в архив заявок

roistat: getCookie("roistat_visit"), // Для интеграции с системой Roistat (ф-ция «getCookie» реализуется самостоятельно)

...

}),

contentType: "application/json;charset=utf-8",

type: "POST",

success: function (result) {

if (result.Error) alert("Ошибка: " + result.Error);

else alert("Успешно: " + result.Id);

},

error: function (jqXhr) {

try {

alert("Ошибка: " + $.parseJSON(jqXhr.responseText).Error);

} catch (e) {

alert("Ошибка: " + jqXhr.statusText + " (" + jqXhr.readyState + ", " + jqXhr.status + ", " + jqXhr.responseText + ")");

}

}

});

Принимается как GET-, так и POST-запрос. GET желательно использовать только для JSONP.

POST-запрос можно отправлять как в обычном (x-www-form-urlencoded), так и в JSON-формате (однако extraFields при использовании x-www-form-urlencoded всё равно необходимо отправлять в JSON, например: extraFields: JSON.stringify({customField1: "CustomValue1"})).

Внимание: Если UTM-метки содержатся в обратной ссылке (referrer), то добавлять их в качестве параметров нет необходимости. Однако если таковые параметры есть, они сильнее соответствующих параметров из ссылки.

Также имеется возможность указывать дополнительные произвольные параметры. Они будут сохранены в базе данных и могут быть использованы для специальных целей.

===== Телефония =====

Следующие методы в случае успеха возвращают пустой результат.

Начало звонка.

Url: https://schooldomain.t8s.ru//Api/V1/OnRinging

При вызове данного метода в CRM у необходимого сотрудника(-ов) появляется окно о звонке.
Хотя бы один из номеров должен являться внутренним номером сотрудника, в том же виде, в котором он указан в CRM. В противном случае, метод вернёт ошибку.

Список параметров (обязательные поля отмечены звёздочкой):

Название

Описание

callId *

Идентификатор звонка

from *

Номер звонящего

to *

Номер адресата

trunkNumber

Номер, через который осуществляется коммуникация (отображается в истории звонков)

utm

UTM-метки в JSON-формате (используются при создании лида из звонка)

 

Смена одного из значений CallerID в длящемся звонке.

Url: https://schooldomain.t8s.ru//Api/V1/OnChangedCallerId

При вызове данного метода можно заменить номер одной из сторон во время звонка.
Заменить можно только внешний номер, внутренний номер сотрудника не меняется.

Список параметров (все поля являются обязательными):

Название

Описание

callId

Идентификатор звонка

old

Старое значение CallerID

new

Новое значение CallerID

 

Подтверждение звонка (снятие трубки).

Url: https://schooldomain.t8s.ru//Api/V1/OnAnswer

Список параметров (все поля являются обязательными):

Название

Описание

callId

Идентификатор звонка

 

Завершение звонка.

Url: https://schooldomain.t8s.ru//Api/V1/OnHangup

При вызове данного метода в CRM закрываются окна о звонке, и звонок добавляется в историю.

Список параметров (обязательные поля отмечены звёздочкой):

Название

Описание

callId *

Идентификатор звонка

cause

Причина завершения звонка (отображается в истории у непринятых звонков)

audioUrl

Ссылка на запись звонка (если указана, то для данного звонка не будет вызываться вебхук-метод запроса аудиофайла звонка)

 

----- Методы обратного вызова (webhooks) -----

Ссылки на данные методы задаются в настройках CRM.

Для проверки подлинности вызова можно использовать произвольный ключ (так же задаётся в настройках CRM, не обязателен).
Данный ключ придёт в качестве аргумента “key” в каждый из нижеуказанных методов (для краткости не указан в списке параметров).

Возвращаемые данные (если они предусмотрены) должны быть представлены в виде JSON.
В случае ошибки вебхук-методы должны возвращать текст ошибки в поле “Error”.
Если возвращаемый код состояния HTTP свидетельствует об ошибке, так же будет отображён соответствующий ему текст ошибки, но текст в поле “Error” имеет больший приоритет.
Однако более надёжный способ - использовать https и выполнять проверку клиентского сертификата на валидность и поле Common Name (CN), которое должно быть равным "*.t8s.ru".

Исходящий вызов.

Вызывается при клике пользователем CRM на кнопку с изображением трубки возле номера телефона.
Если данный метод не указан, эти кнопки будут скрыты.
Клик по кнопке не является для CRM событием начала звонка. Звонок можно начать только вызовом метода OnRinging.

Список параметров:

Название

Описание

from

Номер звонящего

to

Номер адресата

Возвращаемых данных не предусмотрено.

Завершение звонка.

Вызывается при клике пользователем CRM на кнопку «Завершить» в окне звонке.
Если данный метод не указан, эта кнопка будет скрыта.

Список параметров:

Название

Описание

callId

Идентификатор звонка

Возвращаемых данных не предусмотрено.

Запрос аудиофайла.

Вызывается при клике пользователем CRM на кнопку для воспроизведения состоявшегося звонка из истории звонков.
Если данный метод не указан, эти кнопки будут скрыты (кроме тех звонков, для которых был указан параметр audioUrl в методе OnHangup).

Список параметров:

Название

Описание

created

Unix timestamp начала звонка

finished

Unix timestamp завершения звонка

employeePhones

Внутренние номера телефонии, установленные в данный момент у сотрудника, являющегося одной из сторон звонка

remotePhone

Внешний номер (может быть также внутренним номером сотрудника при внутреннем звонке)

incoming

Признак того, что звонок является входящим относительно первого сотрудника (employeePhones)

Метод должен возвращать массив строк с URL’ами аудиофайлов (массив – на случай, если совпадений несколько), даже если запись одна.

Если запись не найдена, можно возвратить как пустой массив, так и пустой результат (более корректным является первый вариант).

Помогла ли вам статья?