Перейти к основному содержимому

Карта API

Общие правила

  • Базовый префикс: /api/v2/competitions.
  • Public endpoints возвращают только published/public данные.
  • Write endpoints требуют authenticated actor или service scope.
  • Submission, checking, publication и document endpoints принимают Idempotency-Key.
  • Результаты и работы проверяют actor context: self, family, teacher, organization, venue, checker, admin.
  • Teacher endpoints работают в преподавательском режиме и требуют выбранную организацию; organization/venue actions являются подслоями этого режима.
  • Learning Workspace / Learning Group передаются как external refs; competitions не отдаёт API «мой canonical список учеников».
  • Public storefront endpoints могут возвращать ссылки на LMS-разбор/тренажёр, но тренировочная попытка не создаёт competition submission.
  • Participant launch endpoints открывают LMS activity runtime или temporary compatible adapter; raw answers не принимаются competitions API, если execution LMS-owned.
  • Official data package для ГИР собирается через identity-owned protected attributes; competitions API возвращает readiness/status/ref, но не сырой СНИЛС, дату рождения ребёнка или родительские контакты.

Public

EndpointМетодPermissionНазначение
/eventsGETpublicопубликованные мероприятия
/events/{slug}GETpublicмероприятие
/seasons/{seasonId}/venuesGETpublicопубликованные площадки списком
/seasons/{seasonId}/venues/mapGETpublicопубликованные площадки на карте
/seasons/{seasonId}/public-resultsGETpublic after publicationпубличные результаты
/seasons/{seasonId}/training-linksGETpublic/publishedссылки на LMS-разбор и тренажёр
/documents/verify/{code}GETpublicпроверка документа

Admin event/season/tour

EndpointМетодPermissionНазначение
/admin/eventsGET/POSTcompetitions.events.read/manageмероприятия
/admin/events/{eventId}GET/PATCHcompetitions.events.read/manageкарточка
/admin/seasonsGET/POSTcompetitions.seasons.read/manageсезоны
/admin/seasons/{seasonId}/statusPATCHcompetitions.seasons.manageстатус сезона
/admin/toursGET/POSTcompetitions.tours.read/manageтуры
/admin/tours/{tourId}/statusPATCHcompetitions.tours.manageстатус тура
/admin/tracksGET/POSTcompetitions.tracks.manageзачёты

Registration and participants

EndpointМетодPermissionНазначение
/seasons/{seasonId}/pre-registrationsPOSTauthenticatedпредварительная регистрация
/registrations/{registrationId}/completePATCHowner/family/teacherдозаполнение второго шага
/seasons/{seasonId}/registrationsPOSTauthenticatedфинальная индивидуальная/родительская/teacher registration
/teacher/organizationsGETidentity-backedорганизации, доступные в преподавательском режиме
/teacher/organizations/{organizationId}/learning-groupsGETLearning Workspace scopeLearning Groups выбранной организации
/teacher/competition-groupsGET/POSTcompetitions.groups.manageseason snapshot/projection выбранной Learning Group
/teacher/competition-groups/{groupId}/registrationsPOSTcompetitions.registrations.manage.assignedзарегистрировать группу или выбранных учеников
/teacher/competition-groups/{groupId}/helpersPOST/DELETEcompetitions.group_helpers.manageпомощники с урезанными правами
/registrations/{registrationId}/official-data-statusGETowner/family/teacher/admin scopedготовность official data package
/registrations/{registrationId}/official-data-collectionPOSTowner/family/teacher/admin scopedсоздать identity collection session или parent invite
/admin/registrationsGETcompetitions.registrations.readзаявки
/admin/registrations/{id}/statusPATCHcompetitions.registrations.manageрешение
/participants/{participantId}/claim-accessPOSTauthenticatedclaim access
/admin/access-claims/{id}/statusPATCHcompetitions.access_claims.manageрассмотреть claim

Teacher conduct and materials

EndpointМетодPermissionНазначение
/teacher/conduct-applicationsGET/POSTteacher mode selected organizationсписок или подача заявки на проведение тура
/teacher/conduct-applications/{id}GET/PATCHowner teacher/admin scopedкарточка или редактирование draft/needs_changes
/teacher/conduct-applications/{id}/completePOSTowner teacher/admin scopedзавершить проведение
/admin/conduct-applicationsGETcompetitions.conduct_applications.readадминистративный список заявок
/admin/conduct-applications/{id}/approvePOSTcompetitions.conduct_applications.manageодобрить заявку
/admin/conduct-applications/{id}/rejectPOSTcompetitions.conduct_applications.manageотклонить заявку
/teacher/seasons/{seasonId}/materialsGETteacher mode selected organizationматериалы сезона для преподавателя
/teacher/tours/{tourId}/materialsGETteacher mode selected organizationматериалы тура для преподавателя
/admin/materialsPOSTcompetitions.materials.manageдобавить материал преподавателя
/admin/materials/{id}PATCHcompetitions.materials.manageобновить материал преподавателя
/admin/materials/{id}/publishPOSTcompetitions.materials.manageопубликовать материал преподавателя

Venues and organizations

EndpointМетодPermissionНазначение
/venues/applicationsPOSTteacher venue layerзаявка площадки
/venues/applications/{id}PATCHteacher venue layerдозаполнение заявки площадки
/admin/venuesGET/POSTcompetitions.venues.manageплощадки
/admin/venues/applications/{id}/statusPATCHcompetitions.venues.manageрешение по заявке площадки
/venues/{venueId}/capacityPATCHteacher venue layer/systematika adminизменить вместимость с проверкой текущих участников
/participants/{participantId}/venue-selectionPOST/PATCHself/family/teacher mode/systematika adminвыбор или смена площадки
/admin/venues/{venueId}/assignmentsPOSTcompetitions.venues.manageназначение участников
/venue/me/participantsGETcompetitions.venue.readсписки площадки

Activity runtime and delivery

EndpointМетодPermissionНазначение
/admin/tour-activity-bindingsGET/POSTcompetitions.content.manageсвязать тур/класс с LMS activity или temporary adapter
/admin/tour-activity-bindings/{id}/lockPOSTcompetitions.content.managelock activity structure
/tours/{tourId}/submissionsPOSTparticipant/teacher modeсоздать/получить LMS activity attempt и competition-facing ref
/teacher/tours/{tourId}/group-submissionsPOSTteacher/helper scopedотправить ответы по ученикам группы через LMS activity или adapter
/submissions/{submissionId}GETscoped readcompetition-facing work/status refs
/submissions/{submissionId}/filesPOSTowner/teacher/venueзагрузить файл в LMS/adapter/storage policy
/tours/{tourId}/bulk-filesPOSTteacher mode/venue layer/systematika adminMVP-загрузка файлов/zip/изображений без обязательной привязки к ученику
/photo-reportsPOSTteacher/venue layerотправить фотоотчёт
/photo-reports/{id}/statusPATCHsystematika adminподтвердить/не подтвердить с комментарием
/admin/submissions/{id}/lockPOSTcompetitions.submissions.managelock

Checking, results, publications, documents

EndpointМетодPermissionНазначение
/checker/submissionsGETcompetitions.check.readочередь проверки
/checker/submissions/{id}/checkPOSTcompetitions.check.manageпроверка
/admin/results/calculatePOSTcompetitions.results.manageрасчёт
/admin/results/{id}/finalizePOSTcompetitions.results.manageфинализация
/admin/results/{id}/withholdPOSTcompetitions.results.manageудержать результат от публикации
/appealsPOSTself/family/teacher mode scopedMVP-апелляция результата
/admin/appeals/{id}/decisionPOSTcompetitions.appeals.manageрешение по апелляции
/admin/arbitration-casesPOSTcompetitions.arbitration.manageкейс подозрительной работы
/admin/arbitration-cases/{id}/decisionPOSTcompetitions.arbitration.manageрешение арбитража
/admin/publicationsGET/POSTcompetitions.publications.manageпубликации
/admin/documents/generatePOSTcompetitions.documents.manageгенерация

External teachers

EndpointМетодPermissionНазначение
/external-teachers/profilePOSTcompetitions.external_teachers.manage.ownсоздать или обновить профиль внешнего преподавателя
/external-teachers/profile/verifyPOSTcompetitions.external_teachers.manage.ownотправить подтверждение роли
/external-teachers/studentsPOSTcompetitions.participants.manage.assignedдобавить связь с учеником/participant
/external-teachers/students/{participantId}DELETEcompetitions.participants.manage.assignedотозвать связь
/external-teachers/resultsGETcompetitions.results.read.assignedрезультаты доступных учеников

Error codes

КодHTTPКогда
competitions.season.not_open409регистрация закрыта
competitions.registration.duplicate409повторная регистрация
competitions.payment.required402требуется оплата/entitlement
competitions.participant.access_denied403нет связи с участником
competitions.tour.not_open409тур не открыт
competitions.activity_binding.not_locked409activity binding не зафиксирован перед запуском тура
competitions.activity_runtime.unavailable503LMS activity runtime или temporary adapter недоступен
competitions.submission.locked409работа заблокирована
competitions.registration.details_required409регистрация требует дозаполнения
competitions.registration.duplicate_hold409регистрация удержана до решения по дублю
competitions.official_data.incomplete409official data package требуется, но не готов
competitions.official_data.raw_fields_forbidden422raw official fields переданы в competitions вместо identity collection flow
competitions.learning_group.not_accessible403нет доступа к Learning Group в выбранной организации
competitions.venue.capacity_below_assignments409вместимость ниже текущих назначений
competitions.conduct_application.not_editable409заявку на проведение нельзя редактировать в текущем статусе
competitions.material.not_available403материал закрыт по visibility или времени доступности
competitions.appeal.not_arbitration422апелляция не может использоваться для арбитража подозрительной работы
competitions.results.not_finalized409нельзя публиковать
competitions.result.withheld409результат удержан от публикации
competitions.document.not_generatable409нет finalized award