Интеграция с системой управления заявками (Enroll)

Общая схема движения заявки

Код будущего (набор август 2025 года)

Методы API

ВАЖНО: в любом запросе необходимо указывать код платформы. Код платформы - это транскрибированное (на латинице, без пробелов) короткое название организации, которое присылали в запросе на доступ. Это не id организации в CAT!!! Платформа привязывается к каждому курсу по списку, который отправляется в запросе на доступ. Если курса не было в списке, по нему невозможно получить информацию через api.

/api/v2/ticket_application/

Получение списка заявок по платформе и курсу (курс указывается опционально). По каждой заявке в списке возвращается unti_id, id заявки,
статус. Запрос должен содержать хедер "Authorization: Token ***" с токеном администратора платформы.

Пример get запроса

 GET /api/v2/ticket_application/

Параметры get запроса

* platform_id - код платформы, отправленный в запросе на доступ, обязательный параметр,
* course_id - id курса на Платформе У2035 (из адресной строки курса в Каталоге)
* unti_id - идентификатор пользователя (обязательно, если не указан course_id)
Возможные комбинации фильтров:
  platform_id + course_id + unti_id 
  platform_id + course_id
  platform_id + course_id.

Пример ответа

{
"id": 825024,                      / id заявки на курс /
"<<span class="speller-hint" data-toggle="popover" data-hint="1" data-original-title="" title="">span</span> class="<span class="speller-hint" data-toggle="popover" data-hint="2" data-original-title="" title="">speller</span>-hint" data-toggle="popover" data-hint="1" data-original-title="" title=""><span class="speller-hint" data-toggle="popover" data-hint="3" data-original-title="" title="">unti</span></span>_id": "1280859",              / <span class="speller-hint" data-toggle="popover" data-hint="4" data-original-title="" title="">UntiID</span> пользователя /
"status": "approved",              / статус заявки на курс /
"future_code_module_id": null,     / ID модуля /
"future_code_module_num": null,    / номер модуля /
"<<span class="speller-hint" data-toggle="popover" data-hint="5" data-original-title="" title="">span</span> class="<span class="speller-hint" data-toggle="popover" data-hint="6" data-original-title="" title="">speller</span>-hint" data-toggle="popover" data-hint="2" data-original-title="" title="">transfert</span>_status": "activated",   / статус трансферта /
"admission_order_number": null,    / номер приказа о зачислении /
"admission_order_date": null,      / дата приказа о зачислении /
"expulsion_order_date": null,      / дата приказа об отчислении /
"course_id": 27211,                / ID курса /
"flow_id": 5827,                   / ID потока /
"flow_num": 4,                     / номер потока /
"pgu_id": null,                    / номер заявления в ЕПГУ /
"pgu_dt": null,                    / дата подачи заявления в ЕПГУ /
"<span class="speller-hint" data-toggle="popover" data-hint="3" data-original-title="" title="">service</span>_<span class="speller-hint" data-toggle="popover" data-hint="4" data-original-title="" title="">okato</span>": null,             / ОКАТО пользователя /
"algorithm_grade":null,            / уровень знания алгоритмов /
"language_grade": null,            / уровень знания языка /
"motivation_grade": null,          / уровень мотивации /
"end_dt": null,                    / дата прохождения ВИ /
"untill_dt": null,                 / дата автоотклонения /
"difficulty_level": "intermediate" / уровень сложности /
"cof_exit_exam_status": null,      / статус прохождения испытания, допустимые значения: start (зашел на страницу итогового испытания),
InProcess (приступил к итоговому испытанию), Success (успешное прохождение итогового испытания), UnSuccess (неуспешное прохождение итогового
 испытания), NoStartExpired (не приступил к прохождению итогового испытания в установленный срок) /
"exit_motivation_grade": null,     / уровень мотивации по итогу обучения /
"exit_algorithm_grade": null,      / уровень знания алгоритмов по итогу обучения /
"exit_language_grade": null,       / уровень знания языка программирования по итогу обучения /
"is_timeout": null,                / было ли завершено испытание, допустимые значения: true - испытание завершено принудительно по таймеру,
false - испытание завершено самостоятельно слушателем /
"exit_end_dt":  null,              / дата прохождения испытания по итогу обучения /
"certificate_url: "",              / ссылка на скачивание сертификата
"certificate_number": ""           / номер выданного сертификата
"final_exam_date":  null,          / дата прохождения итоговой аттестации  /
"final_exam_order_date: null,      / дата документа об успешном прохождении итоговой аттестации  /
"final_exam_order_number": ""      / тип и номер документа об успешном прохождении итоговой аттестации  /
"<span class="speller-hint" data-toggle="popover" data-hint="5" data-original-title="" title="">education</span>_<span class="speller-hint" data-toggle="popover" data-hint="6" data-original-title="" title="">end</span>_date":  null,       / дата отчисления в связи с успешным освоением программы  /
"expulsion_end_date": null,        / дата отчисления  /
"expulsion_order_date": null,      / дата распорядительного акта об отчислении  /
"expulsion_order_number": ""       / тип и номер распорядительного акта об отчислении  /
}

* 400 если не хватает параметров в запросе или они не верны

* 401 если запрос не авторизован

* 403 если пользователь не является администратором указанной платформы

Ссылка на сваггер:
https://cat.2035.university/api/docs/#api-v2-ticket_application-list

/api/v5/course/enroll/

Получение статуса заявки на курс по платформе, unti_id и id курса. В ответе приходит статус заявки.
Возможные значения статусов:

  • - approved (Одобрена),
  • - declined (Отклонена),
  • - expelled (Отчислен),
  • - accepted (Зачислен),
  • - finished (Окончил обучение),
  • - transfer (Переведен).

Если нет заявки - возвращается статус null.
В запросе нужно указывать ИЛИ course_id - id курса на Платформе У2035 ИЛИ external_course_id - идентификатор курса на платформе провайдера (если идентификаторы были ранее переданы и настроены в соответствующих курсах на платформе У2035).
Удобнее указывать course_id, как в других методах.
Запрос должен содержать хедер "Authorization: Token ***" с токеном администратора платформы.

Пример get запроса

 <span class="speller-hint" data-toggle="popover" data-hint="12" data-original-title="" title="">GET</span> /api/v5/course/<span class="speller-hint" data-toggle="popover" data-hint="13" data-original-title="" title="">enroll</span>/

Параметры get запроса

* platform_id - код платформы, отправленный в запросе на доступ, обязательный параметр,
* <<span class="speller-hint" data-toggle="popover" data-hint="14" data-original-title="" title="">span</span> class="<span class="speller-hint" data-toggle="popover" data-hint="15" data-original-title="" title="">speller</span>-hint" data-toggle="popover" data-hint="12" data-original-title="" title=""><span class="speller-hint" data-toggle="popover" data-hint="16" data-original-title="" title="">unti</span></span>_id - id пользователя, обязательный параметр,
* course_id - id курса на Платформе У2035 (из адресной строки курса в Каталоге), обязательный параметр.

Пример ответа

*{
"application_id": 123456,                   / id заявки на курс /
"application_status": "review",             / статус заявки на курс /
"<<span class="speller-hint" data-toggle="popover" data-hint="6" data-original-title="" title="">span</span> class="<span class="speller-hint" data-toggle="popover" data-hint="7" data-original-title="" title="">speller</span>-hint" data-toggle="popover" data-hint="17" data-original-title="" title="">transfert</span>_status": null,                   / статус трансферта /
"admission_number": null,                   / номер приказа о зачислении /
"admission_order_date": null,               / дата приказа о зачислении /
"expulsion_order_date": null,               / дата приказа об отчислении/
"course_id": 19353,                         / ID курса /
"future_code_module_id": null,              / ID модуля /
"future_code_module_number": null,          / номер модуля /
"flow_id": null,                            / ID потока /
"pgu_id": 764472654,                        / номер заявления в ЕПГУ /
"pgu_dt": "2022-06-22T21:00:00Z",           / дата подачи заявления в ЕПГУ /
"additional_info": null,                      НЕ ЗАПОЛНЯЕТСЯ >> СМОТРЕТЬ НА FTP
{"first_name": "Ученика",                      / Фамилия ученика или родителя, только под VPN /
"surname": "Ученик",                          / Имя ученика или родителя, только под VPN /
"middle_name": "Ученику",                      / Отчество ученика или родителя, только под VPN /
"email": "Ducts19501231235566@armyspy.com",    / Email ученика или родителя, только под VPN /
"delegate_first_name": null,                   / Фамилия ученика, только под VPN /
"delegate_surname": null,                      / Имя ученика, только под VPN /
"delegate_middle_name": "Нет отчества",        / Отчество ученика, только под VPN /
"delegate_email": null,                        / Email ученика, только под VPN /
"service_okato": "14000000000",                / ОКАТО пользователя, только под VPN /
"course_address": "Москва, метро Марьино",     / адрес курса /
"course_latitude": 37.74483,                   / широта /
"course_longitude": 55.649168,                 / долгота /
"course_okato": "45000000000"                  / ОКАТО курса/
}
"algorithm_grade": null,                       / уровень знания алгоритмов  /
"language_grade": null,                        / уровень знания языка /
"motivation_grade": null,                      / уровень мотивации /
"end_dt": null,                                / дата прохождения ВИ /
"untill_dt": null,                             / дата автоотклонения /
"difficulty_level": "intermediate"             / уровень сложности /
"cof_exit_exam_status": null,                  / статус прохождения испытания, допустимые значения: start (зашел на страницу итогового испытания), 
InProcess (приступил к итоговому испытанию), Success (успешное прохождение итогового испытания), UnSuccess (неуспешное прохождение итогового испытания) /
NoStartExpired (не приступил к прохождению итогового испытания в установленный срок)
"exit_motivation_grade": null,                 / уровень мотивации по итогу обучения /
"exit_algorithm_grade": null,                  / уровень знания алгоритмов по итогу обучения /
"exit_language_grade": null,                   / уровень знания языка программирования по итогу обучения /
"is_timeout": null,                            / было ли завершено испытание, допустимые значения: true - испытание завершено принудительно по таймеру, 
false - испытание завершено самостоятельно слушателем /
"exit_end_dt": null,                           / дата прохождения испытания по итогу обучения  /
"certificate_url: "", / ссылка на скачивание сертификата
"certificate_number": "" /  номер выданного сертификата
}

* 400 если не хватает параметров в запросе или они не верны
* 401 если запрос не авторизован
* 403 если пользователь не является администратором указанной платформы
* 404 если не найден пользователь/курс

Ссылка на сваггер: https://cat.2035.university/api/docs/#api-v5-course-enroll-list

/api/v6/course/enroll/update/

Изменение статуса заявки на курс или уровня сложности заявки.

Для разных статусов надо передавать разный набор параметров. Отдельный набор параметров используется также для передачи уровня сложности.
Запрос должен содержать хедер "Authorization: Token ***" с токеном администратора платформы.

Пример post запроса

POST /api/v6/<span class="speller-hint" data-toggle="popover" data-hint="20" data-original-title="" title="">course</span>/<span class="<span class="speller-hint" data-toggle="popover" data-hint="21" data-original-title="" title="">speller</span>-hint" data-toggle="popover" data-hint="15" data-original-title="" title="">enroll</span>/update/{
    "platform_id": "platform",
    "application_id": 1,
    "unti_id": 1
    "course_id": 1,
    "status": "declined",
    "difficulty_level": "intermediate"
}

Общие параметры post запроса

* platform_id - код платформы, отправленный в запросе на доступ, обязательный параметр,
* <span class="speller-hint" data-toggle="popover" data-hint="16" data-original-title="" title="">unti</span>_id - <span class="speller-hint" data-toggle="popover" data-hint="17" data-original-title="" title="">unti</span>_id пользователя, обязательный параметр,
* course_id - id курса на Платформе У2035 (из адресной строки курса в Каталоге), обязательный параметр,
* application_id - идентификатор заявки, обязательный параметр, 
* status - str, обязательный параметр. Возможные значения: (approved (<span class="<span class="speller-hint" data-toggle="popover" data-hint="10" data-original-title="" title="">speller</span>-hint" data-toggle="popover" data-hint="22" data-original-title="" title="">Одобрена</span>), 
declined (Отклонена), expelled (Отчислен), accepted (Зачислен), transfer (Переведен), finished (Окончил обучение).

Дополнительные параметры для простановки статуса declined

* <<span class="speller-hint" data-toggle="popover" data-hint="23" data-original-title="" title="">span</span> class="<span class="speller-hint" data-toggle="popover" data-hint="24" data-original-title="" title="">speller</span>-hint" data-toggle="popover" data-hint="18" data-original-title="" title=""><span class="speller-hint" data-toggle="popover" data-hint="25" data-original-title="" title="">bas</span></span>_declined_date - дата принятия решения об отклонении заявки, необязательный параметр
* reason_choice - str, код причины отчисления, обязательный параметр

Возможные варианты:

by_recipient (Отклонено в связи с обращением заявителя/получателя поддержки),

not_support_recipient (Заявитель не является получателем поддержки),

other (Иное).

Изменение уровня сложности, возможно только если заявка в статусе approved

* platform_id - идентификатор платформы, обязательный параметр,
* application_id - идентификатор заявки, обязательный параметр,
* difficulty_level - str, уровень сложности, возможные значения: elementary (базовый), advanced (продвинутый), профессиональный/олимпиадный (professional)

Дополнительные параметры для простановки статуса expelled

* expulsion_date - дата отчисления в формате "%Y-%m-%d", обязательный параметр,
* expulsion_order_number - str, тип и номер распорядительного акта об отчислении, обязательный параметр 
* expulsion_order_date - дата распорядительного акта об отчислении в формате "%Y-%m-%d", обязательный параметр 
* reason_choice - str, код причины отчисления, обязательный параметр 
Возможные варианты:
                  reason_expelled_legitimate_user_application (По желанию заявителя)
                  reason_expelled_legitimate_blocked (В связи с блоком на ЕПГУ)
                  reason_expelled_legitimate_illness (Заболевание, амбулаторное, стационарное, санаторное лечение)
                  <span class="speller-hint" data-toggle="popover" data-hint="26" data-original-title="" title="">reason</span>_expelled_legitimate_<span class="speller-hint" data-toggle="popover" data-hint="27" data-original-title="" title="">accomodation</span> (Изменение места жительства)
                  reason_expelled_legitimate_family (Особые семейные обстоятельства)
                  reason_expelled_legitimate_war (Особые условия нахождения Получателя услуги)
                  reason_expelled_legitimate_army (Невозможность завершения обучения)
                  reason_expelled_legitimate_provider_error (Ошибочно зачислен Провайдером)
                  reason_expelled_legitimate_other (Другое - уважительная)
                  <span class="speller-hint" data-toggle="popover" data-hint="28" data-original-title="" title="">reason</span>_expelled_<span class="speller-hint" data-toggle="popover" data-hint="29" data-original-title="" title="">not</span>_legitimate_absence (Непосещаемость)
                  <span class="speller-hint" data-toggle="popover" data-hint="30" data-original-title="" title="">reason</span>_expelled_<span class="speller-hint" data-toggle="popover" data-hint="31" data-original-title="" title="">not</span>_legitimate_exam_failed (Неуспешная сдача промежуточной аттестации)
                  <span class="speller-hint" data-toggle="popover" data-hint="32" data-original-title="" title="">reason</span>_expelled_<span class="speller-hint" data-toggle="popover" data-hint="33" data-original-title="" title="">not</span>_legitimate_no_document (Отсутствие справки)
                  <span class="speller-hint" data-toggle="popover" data-hint="34" data-original-title="" title="">reason</span>_expelled_<span class="speller-hint" data-toggle="popover" data-hint="35" data-original-title="" title="">not</span>_legitimate_no_contract (Незаключение договора)
                  <span class="speller-hint" data-toggle="popover" data-hint="36" data-original-title="" title="">reason</span>_expelled_<span class="speller-hint" data-toggle="popover" data-hint="37" data-original-title="" title="">not</span>_legitimate_other (Другое - неуважительная)

Дополнительные параметры для простановки статуса accepted
Теперь можно при переводе в accepted указывать уровень сложности и не передавать его отдельно.

* accept_date - дата в формате "%Y-%m-%d", дата зачисления на образовательную программу, обязательный параметр
* admission_order_date - дата в формате "%Y-%m-%d", дата распорядительного акта о зачислении, обязательный параметр
* admission_order_number - str, тип и номер распорядительного акта о зачислении, обязательный параметр
* difficulty_level - str, уровень сложности; возможные значения: elementary (базовый), advanced (продвинутый), профессиональный/олимпиадный (professional).

Дополнительные параметры для простановки статуса finished на 1-3 модулях

* <span class="speller-hint" data-toggle="popover" data-hint="19" data-original-title="" title="">date</span>_<span class="speller-hint" data-toggle="popover" data-hint="20" data-original-title="" title="">succes</span>_midterm_assessment - дата в формате "%Y-%m-%d", Дата успешного прохождения Промежуточной аттестации
* <<span class="speller-hint" data-toggle="popover" data-hint="11" data-original-title="" title="">span</span> class="<span class="speller-hint" data-toggle="popover" data-hint="12" data-original-title="" title="">speller</span>-hint" data-toggle="popover" data-hint="38" data-original-title="" title="">date</span>_confirm_midterm_assessment -  дата в формате "%Y-%m-%d", Дата документа, подтверждающего результат прохождения Промежуточной аттестации
* type_name_document_confirm_midterm_assessment - строка, Тип и номер документа, подтверждающего результат прохождения Промежуточной аттестации
* <<span class="speller-hint" data-toggle="popover" data-hint="13" data-original-title="" title="">span</span> class="<span class="speller-hint" data-toggle="popover" data-hint="14" data-original-title="" title="">speller</span>-hint" data-toggle="popover" data-hint="39" data-original-title="" title=""><span class="speller-hint" data-toggle="popover" data-hint="15" data-original-title="" title="">adress</span></span> - строка, Адрес места осуществления образовательной деятельности(в случае формата обучения офлайн по курсу)

Дополнительные параметры для простановки статуса finished на 4 модуле

* <span class="speller-hint" data-toggle="popover" data-hint="40" data-original-title="" title="">date</span>_<span class="speller-hint" data-toggle="popover" data-hint="41" data-original-title="" title="">succes</span>_midterm_assessment - дата в формате "%Y-%m-%d", Дата успешного прохождения Промежуточной аттестации
* <<span class="speller-hint" data-toggle="popover" data-hint="8" data-original-title="" title="">span</span> class="<span class="speller-hint" data-toggle="popover" data-hint="9" data-original-title="" title="">speller</span>-hint" data-toggle="popover" data-hint="16" data-original-title="" title="">date</span>_confirm_midterm_assessment -  дата в формате "%Y-%m-%d", Дата документа, подтверждающего результат прохождения Промежуточной аттестации
* type_name_document_confirm_midterm_assessment - строка, Тип и номер документа, подтверждающего результат прохождения Промежуточной аттестации
* <<span class="speller-hint" data-toggle="popover" data-hint="17" data-original-title="" title="">span</span> class="<span class="speller-hint" data-toggle="popover" data-hint="18" data-original-title="" title="">speller</span>-hint" data-toggle="popover" data-hint="42" data-original-title="" title=""><span class="speller-hint" data-toggle="popover" data-hint="19" data-original-title="" title="">adress</span></span> - строка, Адрес места осуществления образовательной деятельности(в случае формата обучения офлайн по курсу)
* final_exam_date - дата в формате "%Y-%m-%d", Дата прохождения итоговой аттестации
* final_exam_order_number - строка, Тип и номер распорядительного акта Итоговой аттестации
* final_exam_order_date - дата в формате "%Y-%m-%d", Дата распорядительного акта Итоговой аттестации
* final_project_name - строка, Название итогового проекта, необязательное поле

Пример ответа

* 200 {"success": true} * 400 если переданы некорректные параметры или нельзя изменить статус * 401 если запрос не авторизован * 403 если пользователь не является администратором указанной платформы * 404 если не найден пользователь/курс/заявка
При простановке уровня сложности:
1. при первичной простановке уровня сложности будет - {“success”: true}
2. если мы ещё раз дошлем такой же уровень сложности то будет - {"status": "application is already have difficulty_level - intermediate"}


Ссылка на сваггер: https://cat.2035.university/api/docs/#api-v6-course-enroll-update-create


Обратите внимание, что POST запрос должен содержать параметры в теле запроса, а не в параметрах, например:

image.png

curl --location --request POST 'https://cat.2035.university/api/v6/course/enroll/update/' \ 
--header 'Authorization: Token ХХХХХ' \ 
--header 'Content-Type: application/json' \ --data-raw '{ 
"unti_id": 1111111, 
"course_id": 21111111, 
"status": "declined", 
"platform_id": "autotest", }'

/api/v1/course-change-request/

Получение списка курсов, на которые можно переводить

Перевод с курса на курc

Получить список доступных ид курсов. Запрос должен содержать хедер "Authorization: Token ***" с токеном пользователя, имеющего доступ для редактирования курса. Перевод возможен только в статусе "Зачислен" (accepted)

Пример get запроса

GET /api/v1/course-change-request/?application_id=1&<span class="<span class="speller-hint" data-toggle="popover" data-hint="11" data-original-title="" title="">speller</span>-hint" data-toggle="popover" data-hint="21" data-original-title="" title="">unti</span>_id=222&course_id=123

Параметры GET запроса

* application_id - id заявки, обязательный параметр
* <span class="speller-hint" data-toggle="popover" data-hint="44" data-original-title="" title="">unti</span>_id - <span class="speller-hint" data-toggle="popover" data-hint="45" data-original-title="" title="">unti</span>_id пользователя, передается вместе с course_id
* course_id - id курса, передается вместе с unti_id

Пример ответа

* <span class="speller-hint" data-toggle="popover" data-hint="46" data-original-title="" title="">200</span> {"<span class="speller-hint" data-toggle="popover" data-hint="47" data-original-title="" title="">avaliable</span>_course_ids": [1,2,3]}
* 400 Не переданы unti_id + course_id или application_id
* 401 запрос не авторизован
* 403 у пользователя нет доступа к курсу
* 404 курс не найден

Перевод заявки на курс

Пример post запроса

POST /api/v1/course-change-request/

Тело запроса

{
    "course_id": 111,
    "application_id": 2222,
    "expulsion_date": "2025-01-01" %Y-%m-%d
    "expulsion_order_number": "Приказ № 123"
    "expulsion_order_date":  "2025-01-01" %Y-%m-%d
}

Параметры POST запроса

* course_id - id курса в каталоге, обязательный параметр
* application_id - id заявки, обязательный параметр
* expulsion_date - дата перевода, обязательный параметр
* expulsion_order_number - тип и номер распорядительного акта о переводе, обязательный параметр
* expulsion_order_date - дата распорядительного акта о переводе, обязательный параметр

Пример ответа

* <span class="speller-hint" data-toggle="popover" data-hint="48" data-original-title="" title="">200</span> {"<span class="speller-hint" data-toggle="popover" data-hint="49" data-original-title="" title="">succes</span>": True, "id": 123} - заявка
* 400 не передан обязательный параметр 
* 401 запрос не авторизован
* 403 у пользователя нет доступа к курсу
* 404 Заявка не найдена

Ссылки на сваггеры:

https://cat.2035.university/api/docs/#api-v1-course-change-request-list
https://cat.2035.university/api/docs/#api-v1-course-change-request-create

/api/v6/course/enroll/specify/

Уточнение данных по реквизитам распорядительного акта о зачислении.

Пример post запроса

POST /api/v6/<span class="speller-hint" data-toggle="popover" data-hint="24" data-original-title="" title="">course</span>/<span class="<span class="speller-hint" data-toggle="popover" data-hint="25" data-original-title="" title="">speller</span>-hint" data-toggle="popover" data-hint="52" data-original-title="" title="">enroll</span>/specify/{
    "application_id": 1,
    "platform_id": "platform",
    "accept_date": 2023-01-01,
    "admission_order_date": 2023-01-01,
    "admission_order_number": 1325345
}

Общие параметры POST запроса (заявка должна быть в статусе accepted и должен быть хотя бы один параметр)

* application_id - идентификатор заявки, обязательный параметр
* platform_id - идентификатор платформы, обязательный параметр
* accept_date - дата в формате "%Y-%m-%d", дата зачисления слушателя, необязательный параметр
* admission_order_date - дата в формате "%Y-%m-%d", дата распорядительного акта о зачислении, необязательный параметр
* admission_order_number - str, тип и номер распорядительного акта о зачислении, необязательный параметр

Пример ответа

* 200 {"success": true}
* 400 если переданы некорректные параметры
* 401 если запрос не авторизован
* 403 если пользователь не является администратором указанной платформы
* 404 если не найден пользователь/курс/заявка

Ссылка на сваггер:
прод https://cat.2035.university/api/docs/#api-v6-cours...

/api/v6/course/enroll/update-expulsion-data/

Передача данных по реквизитам распорядительного акта об отчислении.

Пример post запроса

POST /api/v6/course/<span class="speller-hint" data-toggle="popover" data-hint="16" data-original-title="" title="">enroll</span>/update-expulsion-data/{
    "application_id": 1,
    "platform_id": "platform",
    "expulsion_date": "2023-01-01",
    "expulsion_order_number": 1325345,
}

Общие параметры POST запроса (заявка должна быть в статусе finished, Модуль 4, пройден ИТиСИ или не приступил в установленный срок)

* application_id - идентификатор заявки, обязательный параметр
* platform_id - идентификатор платформы, обязательный параметр
* expulsion_date - дата в формате "%Y-%m-%d", дата отчисления слушателя (если ИТиСИ пройден НЕУСПЕШНО или не приступил в срок), обязательный параметр
* education_end_date - дата в формате "%Y-%m-%d", дата отчисления слушателя (если ИТиСИ пройден УСПЕШНО), обязательный параметр
* expulsion_order_number - str, тип и номер распорядительного акта об отчислении, обязательный параметр
* expulsion_order_date - дата в формате "%Y-%m-%d", дата распорядительного акта об отчислении, обязательный параметр
При попытке передать поле, не соответствующее статусу прохождения ИТиСИ (например, education_end_date, если статус ИТиСИ неуспешно UnSuccess), вы получите сообщение об ошибке: "Переданы некорректные данные. Проверьте статус прохождения ИТиСИ".

Пример ответа

* 200 {"success": true}
* 400 если переданы некорректные параметры
* 401 если запрос не авторизован
* 403 если пользователь не является администратором указанной платформы
* 404 если не найден пользователь/курс/заявка
* 409 внесение данных об отчислении недоступно для этого модуля или нарушены условия статуса заявки
Ссылка на сваггер:
прод https://cat.2035.university/api/docs/#api-v6-cours...

Тестирование

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

URL API Enroll для теста https://cat.2035.university/.
Пример урла для теста: https://cat.2035.university/api/v5/course/enroll/.

Подготовка к тестированию

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

Получить токен на https://dev.2035.university

Написать заявку на тестовый доступ к API управления заявками на почту apps@2035.university. Для запроса доступа необходимо с корпоративного адреса отправить письмо на apps@2035.university, тема письма - Доступы в API Enroll на проект «Код будущего 2026» организации _Полное_название_организации_»,
в теле письма должно быть:

    1. Проект: Код будущего 2026;
    2. Полное название организации;
    3. Контур: тестовый;
    4. Ответственное за интеграцию лицо:
      • ФИО
      • email
      • телефон.
    5. почта ответственного (почта должна совпадать с почтой в аккаунте Leader-ID и этот пользователь должен был получить токен на https://dev.2035.university);
    6. транскрибированное (на латинице, без пробелов) короткое название организации (код платформы);
    7. ссылка на главную страницу организации (не на ЛК организации в У2035, а на официальный сайт ОО).


В течение 3 дней будет выдан доступ, в письме вы получите номер курса для тестирования и id заявок для тестирования.
С этого момента можно приступать к тестированию функционала.

Параметры тестового курса:

Дата начала освоения образовательной программы - 01.09.2025
Дата окончания освоения образовательной программы - 31.12.2025

1. С первой заявкой проводится первый этап тестирования - тестирование зачисления.

В первый этап входит следующий набор действий:
1) Получить статус заявки, используя /api/v2/ticket_application/ или /api/v5/course/enroll/. Статус заявки approved, трансферт Активирован.
2) Зачислить пользователя, используя /api/v6/course/enroll/update/ (установить статус accepted). Статус заявки accepted, трансферт Активирован.

Дополнительные параметры для простановки статуса accepted

* accept_date - дата в формате "%Y-%m-%d", дата зачисления на образовательную программу, обязательный параметр
* admission_order_date - дата в формате "%Y-%m-%d", дата распорядительного акта о зачислении, обязательный параметр
* admission_order_number - str, тип и номер распорядительного акта о зачислении, обязательный параметр
* difficulty_level - str, уровень сложности; возможные значения: elementary (базовый), advanced (продвинутый), профессиональный/олимпиадный (professional).

Обратите внимание, что дата зачисления на образовательную программу должна быть:

  • больше или равна дате начала освоения образовательной программы
  • больше или равна дате распорядительного акта

2. Второй этап тестирования - тестирование отчисления - проходит с той же заявкой, которая была зачислена на первом этапе.

Во второй этап входит следующий набор действий:
1) Получить статус заявки, используя /api/v2/ticket_application/ или /api/v5/course/enroll/. Статус заявки accepted, трансферт Активирован.
2) Отчислить заявку, используя /api/v6/course/enroll/update/ (установить статус expelled).

Дополнительные параметры для простановки статуса expelled

* expulsion_date - дата отчисления в формате "%Y-%m-%d", обязательный параметр,
* expulsion_order_number - str, тип и номер распорядительного акта об отчислении, обязательный параметр 
* expulsion_order_date - дата распорядительного акта об отчислении в формате "%Y-%m-%d", обязательный параметр 
* reason_choice - str, код причины отчисления, обязательный параметр

Возможные варианты:

                  reason_expelled_legitimate_user_application (По желанию заявителя)
                  reason_expelled_legitimate_blocked (В связи с блоком на ЕПГУ)
                  reason_expelled_legitimate_illness (Заболевание, амбулаторное, стационарное, санаторное лечение)
                  <span class="speller-hint" data-toggle="popover" data-hint="24" data-original-title="" title="">reason</span>_expelled_legitimate_<span class="speller-hint" data-toggle="popover" data-hint="25" data-original-title="" title="">accomodation</span> (Изменение места жительства)
                  reason_expelled_legitimate_family (Особые семейные обстоятельства)
                  reason_expelled_legitimate_war (Особые условия нахождения Получателя услуги)
                  reason_expelled_legitimate_army (Невозможность завершения обучения)
                  reason_expelled_legitimate_provider_error (Ошибочно зачислен Провайдером)
                  reason_expelled_legitimate_other (Другое - уважительная)
                  <span class="speller-hint" data-toggle="popover" data-hint="26" data-original-title="" title="">reason</span>_expelled_<span class="speller-hint" data-toggle="popover" data-hint="27" data-original-title="" title="">not</span>_legitimate_absence (Непосещаемость)
                  <span class="speller-hint" data-toggle="popover" data-hint="28" data-original-title="" title="">reason</span>_expelled_<span class="speller-hint" data-toggle="popover" data-hint="29" data-original-title="" title="">not</span>_legitimate_exam_failed (Неуспешная сдача промежуточной аттестации)
                  <span class="speller-hint" data-toggle="popover" data-hint="30" data-original-title="" title="">reason</span>_expelled_<span class="speller-hint" data-toggle="popover" data-hint="31" data-original-title="" title="">not</span>_legitimate_no_document (Отсутствие справки)
                  <span class="speller-hint" data-toggle="popover" data-hint="32" data-original-title="" title="">reason</span>_expelled_<span class="speller-hint" data-toggle="popover" data-hint="33" data-original-title="" title="">not</span>_legitimate_no_contract (Незаключение договора)
                  <span class="speller-hint" data-toggle="popover" data-hint="34" data-original-title="" title="">reason</span>_expelled_<span class="speller-hint" data-toggle="popover" data-hint="35" data-original-title="" title="">not</span>_legitimate_other (Другое - неуважительная)

Обратите внимание, что дата отчисления должна быть:

  • больше Даты зачисления
  • меньше или равна Дате окончания освоения Образовательной программы

Дата распорядительного акта об отчислении должна быть:

  • меньше или равна Дате отчисления
  • меньше или равна Дате окончания освоения Образовательной программы

На этом завершается второй этап тестирования.

3. Для второй заявки проводится третий этап тестирования - тестирование отклонения

Во второй этап входит следующий набор действий:
1) Получить статус заявки, используя /api/v2/ticket_application/ или /api/v5/course/enroll/. Статус заявки approved, трансферт Активирован.
2) Отклонить заявку, используя /api/v6/course/enroll/update/ (установить статус declined).

Дополнительные параметры для простановки статуса declined

* <<span class="speller-hint" data-toggle="popover" data-hint="38" data-original-title="" title="">span</span> class="<span class="speller-hint" data-toggle="popover" data-hint="39" data-original-title="" title="">speller</span>-hint" data-toggle="popover" data-hint="37" data-original-title="" title=""><span class="speller-hint" data-toggle="popover" data-hint="40" data-original-title="" title="">bas</span></span>_declined_date - дата принятия решения об отклонении заявки, необязательный параметр
* reason_choice - str, код причины отчисления, обязательный параметр

Возможные варианты:

by_recipient (Отклонено в связи с обращением заявителя/получателя поддержки),
not_support_recipient (Заявитель не является получателем поддержки), 
other (Иное).

На этом завершается третий этап тестирования.

Обратите внимание, что после отклонения заявки ее статус больше изменить нельзя!

4. С третьей заявкой проводится четвертый этап тестирования - тестирование завершения обучения на 1,2,3 модулях

В четвертый этап входит следующий набор действий:
1) Получить статус заявки, используя /api/v2/ticket_application/ или /api/v5/ticket_application/. Статус заявки approved, трансферт Активирован.
2) Зачислить пользователя, используя /api/v6/course/enroll/update/ (установить статус accepted). Статус заявки accepted, трансферт Активирован.
3) Завершить обучение пользователя, используя /api/v6/course/enroll/update/ (установить статус finished). Статус заявки finished, трансферт Активирован.
4) После завершения обучения на 1 модуле для пользователя будет автоматически создана заявка на 2 модуль, после ее зачисления и завершения - на 3 модуль. Ее также нужно зачислить и завершить.
Для того, чтобы узнать id заявок на последующие модули, получите unti_id пользователя из заявки 1 модуля, далее по нему получите все заявки на курс /api/v2/ticket_application/

Дополнительные параметры для простановки статуса finished

* <span class="speller-hint" data-toggle="popover" data-hint="41" data-original-title="" title="">date</span>_<span class="speller-hint" data-toggle="popover" data-hint="42" data-original-title="" title="">succes</span>_midterm_assessment - дата в формате "%Y-%m-%d", Дата успешного прохождения Промежуточной аттестации
* <span class="speller-hint" data-toggle="popover" data-hint="44" data-original-title="" title="">date</span>_confirm_midterm_assessment -  дата в формате "%Y-%m-%d", Дата документа, подтверждающего результат прохождения Промежуточной аттестации
* type_name_document_confirm_midterm_assessment - строка, Тип и номер документа, подтверждающего результат прохождения Промежуточной аттестации
* <<span class="speller-hint" data-toggle="popover" data-hint="45" data-original-title="" title="">span</span> class="<span class="speller-hint" data-toggle="popover" data-hint="46" data-original-title="" title="">speller</span>-hint" data-toggle="popover" data-hint="43" data-original-title="" title=""><span class="speller-hint" data-toggle="popover" data-hint="47" data-original-title="" title="">adress</span></span> - строка, Адрес места осуществления образовательной деятельности(обязательный параметр в случае формата обучения офлайн по курсу)
Обратите внимание, что поле Адрес должен точно совпадать с одним из адресов, размещенных вами на платформе для соответствующего курса. Вводить нужно значение из столбца B (Address) загружаемой таблицы.
Для тестирования все курсы имеют формат офлайн, адрес - "Москва"

Дата успешного прохождения Промежуточной аттестации должна быть:

На 1 модуле

  • Не менее, чем через 21 день с Даты зачисления
  • Если заявка была создана в результате перевода с курса на курс, то больше Даты зачисления (без расчета 21 дня)

На 2 модуле

  • Не менее, чем через 21 день с Даты успешного прохождения Промежуточной аттестации по модулю 1
  • Больше Даты документа, подтверждающего результат прохождения Промежуточной аттестации по 1 модулю

На 3 модуле

  • Не менее, чем через 21 день с Даты успешного прохождения Промежуточной аттестации по модулю 2
  • Больше Даты документа, подтверждающего результат прохождения Промежуточной аттестации по 2 модулю

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

  • Больше или равна Дате успешного прохождения Промежуточной аттестации за соответствующий модуль


На этом завершается четвертый этап тестирования.


5. Пятый этап тестирования - тестирование завершения обучения на 4 модуле проводится с той же заявкой, которая была на четвертом этапе тестирования

В пятый этап входит следующий набор действий:
1) Получить статус заявки, используя /api/v2/ticket_application/ или /api/v5/ticket_application/. Статус заявки approved, трансферт Активирован.
2) Зачислить пользователя, используя /api/v6/course/enroll/update/ (установить статус accepted). Статус заявки accepted, трансферт Активирован.
3) Завершить обучение пользователя, используя /api/v6/course/enroll/update/ (установить статус finished). Статус заявки finished, трансферт Активирован.

Дополнительные параметры для простановки статуса finished на 4 модуле

* <span class="speller-hint" data-toggle="popover" data-hint="47" data-original-title="" title="">date</span>_<span class="speller-hint" data-toggle="popover" data-hint="48" data-original-title="" title="">succes</span>_midterm_assessment - дата в формате "%Y-%m-%d", Дата успешного прохождения Промежуточной аттестации
* <span class="speller-hint" data-toggle="popover" data-hint="51" data-original-title="" title="">date</span>_confirm_midterm_assessment -  дата в формате "%Y-%m-%d", Дата документа, подтверждающего результат прохождения Промежуточной аттестации
* type_name_document_confirm_midterm_assessment - строка, Тип и номер документа, подтверждающего результат прохождения Промежуточной аттестации
* <<span class="speller-hint" data-toggle="popover" data-hint="52" data-original-title="" title="">span</span> class="<span class="speller-hint" data-toggle="popover" data-hint="53" data-original-title="" title="">speller</span>-hint" data-toggle="popover" data-hint="49" data-original-title="" title=""><span class="speller-hint" data-toggle="popover" data-hint="54" data-original-title="" title="">adress</span></span> - строка, Адрес места осуществления образовательной деятельности(обязательный параметр в случае формата обучения офлайн по курсу)
* final_exam_date - дата в формате "%Y-%m-%d", Дата прохождения итоговой аттестации
* final_exam_order_number - строка, Тип и номер распорядительного акта Итоговой аттестации
* final_exam_order_date - дата в формате "%Y-%m-%d", Дата распорядительного акта Итоговой аттестации
* final_project_name - строка, Название итогового проекта

Обратите внимание, что поле Адрес должен точно совпадать с одним из адресов, размещенных вами на платформе для соответствующего курса. Вводить нужно значение из столбца B (Address) загружаемой таблицы.

Для тестирования все курсы имеют формат офлайн, адрес - "Москва"

Дата успешного прохождения Промежуточной аттестации должна быть:
  • Не менее, чем через 21 день с Даты успешного прохождения Промежуточной аттестации по модулю 3
  • Больше Даты документа, подтверждающего результат прохождения Промежуточной аттестации по модулю 3
Дата документа, подтверждающего результат прохождения Промежуточной аттестации должна быть:
  • Больше или равна Дате успешного прохождения Промежуточной аттестации за 4 модуль
Дата прохождения Итоговой аттестации должна быть:
  • Больше или равна Дате успешного прохождения Промежуточной аттестации за 4 модуль

Дата распорядительного акта Итоговой аттестации должна быть:

  • Больше или равна Дате прохождения Итоговой аттестации

На этом завершается пятый этап тестирования.

6. Шестой этап тестирования - тестирование передачи данных по реквизитам распорядительного акта об отчислении - проводится с той же заявкой, которая была на пятом этапе тестирования, ИТиСИ должен быть пройден (или не приступил в срок)

В шестой этап входит следующий набор действий:

1) Получить статус заявки, используя /api/v2/ticket_application/ или /api/v5/ticket_application/. Статус заявки finished, пройден ИТиСИ (или не приступил в срок), трансферт Активирован.
2) Уточнить данные распорядительного акта об отчислении, используя /api/v6/course/enroll/update-expulsion-data/

Дополнительные параметры для уточнения данных акта об отчислении

Если ИТиСИ пройден неуспешно (или не приступил в срок):

* expulsion_date - дата отчисления слушателя в формате "%Y-%m-%d", обязательный параметр
* expulsion_order_number - str, тип и номер распорядительного акта об отчислении, обязательный параметр 
* expulsion_order_date - дата распорядительного акта об отчислении в формате "%Y-%m-%d", обязательный параметр

Если ИТиСИ пройден успешно:

* education_end_date - дата отчисления слушателя в формате "%Y-%m-%d", обязательный параметр
* expulsion_order_number - str, тип и номер распорядительного акта об отчислении, обязательный параметр 
* expulsion_order_date - дата распорядительного акта об отчислении в формате "%Y-%m-%d", обязательный параметр

При попытке передать поле, не соответствующее статусу прохождения ИТиСИ (например, education_end_date, если статус ИТиСИ неуспешно UnSuccess), вы получите сообщение об ошибке: "Переданы некорректные данные. Проверьте статус прохождения ИТиСИ".

Обратите внимание, что дата отчисления (expulsion_date/education_end_date) должна быть:

  • Больше или равна Дате прохождения ИТиСИ (exit_end_dt)
  • Меньше или равна Дате окончания освоения Образовательной программы (completion_date_education_programm)

Дата распорядительного акта об отчислении (expulsion_order_date) должна быть:

  • Меньше или равна Дате отчисления (expulsion_date/education_end_date)
  • Меньше или равна Дате окончания освоения Образовательной программы (completion_date_education_programm)
  • Больше или равна Дате прохождения ИТиСИ (exit_end_dt)

На этом завершается шестой этап тестирования.

Продуктовый контур

Доступ выдается только к опубликованным курсам.

Для перехода в продуктовый контур необходимо:

  1. Написать заявку на доступ к продуктовому API управления заявками на почту apps@2035.university, тема письма - Доступы к API Enroll на проект «Код будущего 2026» организации _Полное_название_организации_»,
    в теле письма должно быть:

    1. Проект: Код будущего 2026;
    2. Полное название организации;
    3. Контур: промышленный;
    4. Ответственное за интеграцию лицо:

      • ФИО
      • email
      • телефон.
    5. почта ответственного (почта должна совпадать с почтой в аккаунте Leader-ID и этот пользователь должен был получить токен на https://dev.2035.university)
    6. транскрибированное (на латинице, без пробелов) короткое название организации (код платформы);
    7. ссылка на главную страницу организации (не на ЛК организации в У2035, а на официальный сайт ОО).
  2. Доступ в продуктовый контур выдается в течение 3 рабочих дней только к опубликованным курсам.

Эндпойнты для тестового и продуктового контура совпадают.
URL API Enroll для продуктового контура: https://cat.2035.university/.
Пример урла для продуктового контура: https://cat.2035.university/api/v5/course/enroll/.

Ограничения в продуктовом контуре

Ограничение по работе с заявками: не более 1 запроса в секунду.

Работа с заявками в продуктовом контуре

URL API Enroll для продакшена https://cat.2035.university/.
ID потока можно увидеть на странице Потоки в разделе Управление курсами в ЛК в Каталоге.

Обратите внимание, что после отклонения заявки ее статус больше изменить нельзя!