ВОЙТИ

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

Последние изменения: 06.12.2019
добавить в избранные

ВНИМАНИЕ!

Это новая версия API, расширенная и дополненная. Со старой версией API можно ознакомиться здесь. Со списком изменений можно ознакомиться здесь. Он поможет вам легко перейти на новую версию.

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

Все функции 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/GetOffices (где schooldomain - субдомен школы).

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

Название

Описание

id

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

name

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

license

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

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

{

"Offices":

[{

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

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

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

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

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

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

"IsVirtual": false, // Если true, то филиал является филиалом виртуального типа (для дистанционного обучения)

"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": "Дошкольники", // Возрастная категория

"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

"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

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

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

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

{

"Students":

[{

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

"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": "Взрослые", // Возрастная категория ученика

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

"Disciplines": [

{

"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": "Значение пользовательского поля"

},

...]

},

...]

}

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

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/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

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

corporative

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

disciplines

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

levels

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

maturities

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

learningTypes

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

teacherId

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

queryDays

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

queryFiscalInfo

Булевский признак необходимости в запросе финансовой информации (будут возвращён объект «FiscalInfo»). Принимает значения 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": "Адрес филиала/компании",

"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", // Наименование аудитории (если отсутствует, то занятия проводятся на территории учащегося)

"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 дней обучения по цене по умолчанию (может отсутствовать, если не задана цена)

}

},

...]

}

 

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

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", // Время окончания занятий в указанном диапазоне

"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/GetEdUnitTestResults

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

Название

Описание

dateFrom

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

dateTo

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

edUnitId

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

officeOrCompanyId

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

studentClientId

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

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

{

"EdUnitTestResults":

[{

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

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

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

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

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

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

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

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

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

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

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

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

"Skills": [

{

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

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

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

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

},

...],

"Comment": "Хорошо ответил", // Комментарий к результату теста

}

...]

}

 
 

Запрос цен.

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 (отсутствует у неоплаченных платежей)

"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/EditEdUnitStudent

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

Название

Описание

edUnitId

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

studentClientId

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

status

Статус связки (может быть «Reserve», «Normal», «WorkingOff» или «Stopped») *

description

Комментарий *

* Если данный параметр не указан или равен null, его значение не меняется.

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

$.ajax({

url: "http://schooldomain.t8s.ru/Api/V2/EditEdUnitStudent",

data: {

authkey: ...,

edUnitId: 12,

studentClientId: 34,

status: "Normal",

description: "Примечание к связке"

},

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 руб." // Вычисленная на основе указанных параметров итоговая сумма оплаты

}
 
 

Пример добавления заявки в CRM из javascript:

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

$.ajax({

url: "http://schooldomain.t8s.ru/Api/V2/AddStudyRequest",

data: {

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: "Главный филиал",

teacher: "Петров Пётр Петрович",

beginDate: "17.03",

endDate: "20.04",

weekdays: "ср/чт",

beginTime: "15:30",

endTime: "16:10",

edUnitId: null, // Идентификатор уч. единицы

type: "Заявка на обучение", // Тип заявки

firstCommunicationType: "Заявка с сайта", // Тип обращения

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» реализуется самостоятельно)

...

},

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.

Внимание: Если UTM-метки содержатся в обратной ссылке (referrer), то добавлять их в качестве параметров нет необходимости. Однако если таковые параметры есть, они сильнее соответствующих параметров из ссылки.

Также имеется возможность указывать дополнительные произвольные параметры. Они будут сохранены в базе данных и могут быть использованы для специальных целей.