Files
docs/api-routes.md
T

12 KiB

API, HTTP-методы и Swagger

Swagger / OpenAPI

Backend API:

  • UI: http://localhost:8081/docs
  • JSON: http://localhost:8081/api/doc.json
  • Конфиг: apps/backend/config/routes/nelmio_api_doc.yaml
  • В документацию backend сейчас попадают только path patterns из apps/backend/config/packages/nelmio_api_doc.yaml.

Cabinet:

  • UI: http://localhost:8082/api/swagger
  • JSON: http://localhost:8082/api/swagger.json
  • Реализовано вручную в apps/cabinet/src/Controller/InternalAPIController.php.

Backend API

Пользователь

Метод Путь Контроллер Назначение
GET /user/logout UserController::logout Logout-заглушка для клиента
POST /user/login UserController::login Логин по email/password, выдача JWT
GET /user/ UserController::index Текущий пользователь по JWT
PUT /user/change-region UserController::changeRegion Смена региона пользователя
POST /user/auth UserController::auth Регистрация/авторизация
POST /user/auth-by-pcode UserController::authByPcode Авторизация по pcode и дате рождения

Справочники и контент

Метод Путь Контроллер Назначение
GET /filial/list FilialController Список филиалов
GET /filial/by-region/{regionId} FilialController Филиалы по региону
PUT /filial/{fid} FilialController Обновление филиала
POST /filial/create FilialController Создание филиала
GET /filial/picture/{id} FilialController Картинка филиала
POST /filial/picture/{id} FilialController Загрузка картинки филиала
GET /department/list DepartmentController Список отделений
PUT /department/{did} DepartmentController Обновление отделения
POST /department/create DepartmentController Создание отделения
GET /pricelist/list PriceListController Прайс
GET /pricelist/department PriceDepartmentController Группы прайса

Врачи и расписание

Метод Путь Контроллер Назначение
POST /specialist/create SpecialistController Создание врача
PUT /specialist/{id} SpecialistController Обновление врача
DELETE /specialist/{id} SpecialistController Удаление врача
GET /specialist/list SpecialistController Список врачей
GET /specialist/post SpecialistController Список должностей
GET /specialist/picture/{id} SpecialistController Фото врача
POST /specialist/picture/{id} SpecialistController Загрузка фото врача
GET /specialist/schedule SpecialistController Расписание врача
GET /specialist/{id} SpecialistController Детальная карточка по id
GET /specialist/by/{identifier} SpecialistController Детальная карточка по alias/id
POST /specialist/{id}/location/create LocationController Создание локации врача
PUT /specialist/{specialistId}/location/{id} LocationController Обновление локации врача
GET /specialist-dcode-description/list SpecialistDcodeDescriptionController Описания dcode
GET /specialist-dcode-description/{id} SpecialistDcodeDescriptionController Описание dcode
POST /specialist/{specialistId}/specialist-dcode-description/create SpecialistDcodeDescriptionController Создание описания dcode
PUT /specialist/{specialistId}/specialist-dcode-description/{id} SpecialistDcodeDescriptionController Обновление описания dcode
DELETE /specialist-dcode-description/{id} SpecialistDcodeDescriptionController Удаление описания dcode
GET /specialist-docs/list SpecialistDocsController Документы врачей
GET /specialist-docs/{id} SpecialistDocsController Документ врача
GET /specialist-docs/picture/{id} SpecialistDocsController Картинка документа
POST /specialist/{id}/specialist-docs/create SpecialistDocsController Создание документа
PUT /specialist/{specialistId}/specialist-docs/{id} SpecialistDocsController Обновление документа
DELETE /specialist-docs/{id} SpecialistDocsController Удаление документа
POST /specialist-docs/picture/{id} SpecialistDocsController Загрузка картинки документа
DELETE/PUT /stock/{id}/specialist/{specialistId} StockSpecialistController Связь акции и врача

CRUD-контент

Эти контроллеры имеют одинаковый набор методов:

Контроллер Базовый путь Методы
ArticleController /article GET /list, GET /alias/{alias}, GET /{id}, POST /create, PUT /{id}, DELETE /{id}
DiseaseController /disease GET /list, GET /{id}, POST /create, PUT /{id}, DELETE /{id}
MedicalCenterController /medical-center GET /list, GET /{id}, POST /create, PUT /{id}, DELETE /{id}
NewsController /news GET /list, GET /{id}, POST /create, PUT /{id}, DELETE /{id}
PromoController /promo GET /list, GET /{id}, POST /create, PUT /{id}, DELETE /{id}
ReviewController /review GET /list, GET /{id}, POST /create, PUT /{id}, DELETE /{id}
SiteServiceController /site-services GET /list, GET /{id}, POST /create, PUT /{id}, DELETE /{id}

Для контентных сущностей POST, PUT и DELETE доступны только с JWT пользователя с ролью ROLE_ADMIN.

Списки news, promo, medical-center, disease, site-services возвращают единый формат пагинации:

{
  "data": [],
  "pagination": {
    "total": 1,
    "count": 1,
    "per_page": 50,
    "current_page": 1,
    "total_pages": 1,
    "has_previous_page": false,
    "has_next_page": false
  }
}

Основные query-параметры списков:

  • page - номер страницы;
  • perPage - размер страницы;
  • regionId - фильтр по региону;
  • active - фильтр активности.

/article/list сохраняет старый контракт фронтенда: размер страницы задаётся параметром limit, а метаданные возвращаются в ключе meta:

{
  "data": [],
  "meta": {
    "total": 1,
    "page": 1,
    "limit": 20,
    "totalPages": 1
  }
}

Пример создания новости:

curl -X POST http://localhost:8081/news/create \
  -H "Authorization: Bearer <TOKEN>" \
  -H "Content-Type: application/json" \
  --data '{
    "id": 900001,
    "name": "Локальная новость",
    "active": true,
    "regionId": 91,
    "alias": "local-admin-news",
    "anons": "Краткий анонс",
    "content": "Полный текст новости"
  }'

Интеграции и служебные методы

Метод Путь Контроллер Назначение
GET /infoclinica/clvisitsovacheckpass/{filial} InfoclinicaController Проверка прохода
GET /idoctor/list InfoclinicaController Список врачей Infoclinica
POST /reservation/anonymous-reserve InfoclinicaController Анонимная запись
POST /calltouch/create-lead CalltouchController Создание лида
GET /service/sendmail ServiceController Отправка письма
POST /smart-captcha ServiceController Проверка captcha
GET /xml/feed XmlFeedController XML-фид
GET /xml/feed/v1 XmlFeedController XML-фид v1

Cabinet API и страницы

Swagger и внутренний API

Метод Путь Контроллер Назначение
ANY /api/swagger.json InternalAPIController::swaggerJson OpenAPI JSON
ANY /api/swagger InternalAPIController::swaggerUI Swagger UI
POST /api/smart-captcha InternalAPIController::smartCaptcha Проверка captcha
GET /api/banner/{regionId} InternalAPIController::show Баннер региона
POST /api/log InternalAPIController::log Логирование
POST /api/count-record InternalAPIController::countRecord Количество записей
POST /api/add-record InternalAPIController Создание записи
POST /api/msg InternalAPIController Сообщение/SMS
POST /api/veretify InternalAPIController Проверка SMS-кода
POST /api/search InternalAPIController Поиск
GET /api/departments InternalAPIController Отделения
POST /api/add-calltouch CalltouchAPIController Заявка Calltouch

Публичный API cabinet

Метод Путь Контроллер Назначение
POST /api/anonymous-reserve PublicAPIController Анонимная запись
GET /api/interval PublicAPIController Интервалы расписания
GET /api/userInfo PublicAPIController Информация о пользователе
GET /api/pricelist/departments PublicAPIController Группы прайса
GET /api/pricelist PublicAPIController Прайс
GET /api/doctor PublicAPIController Врач
GET /api/doctors/{region} PublicAPIController Врачи региона

Страницы cabinet

Метод Путь Контроллер Назначение
ANY /login SecurityController Страница входа
ANY /logout SecurityController Выход
POST /api/usrlog/logout SecurityController API logout
GET/POST /registration SecurityController Регистрация
POST /forget SecurityController Восстановление
POST /api/authenticated SecurityController Авторизация API
GET / DefaultController Главная кабинета, требует авторизации
ANY /stoimost-uslug DefaultController Стоимость услуг
POST /update/price-list DefaultController Обновление прайса
ANY /price-list DefaultController Админский прайс
GET /specialists/{alias?} SpecialistController Каталог врачей
GET /online-specialists SpecialistController Онлайн-врачи
GET /specialist/{alias} SpecialistController Карточка врача
ANY /favorites SpecialistController Избранное