Ссылка на макеты: https://unidraw.io/app/board/0c144766068534335ca1
В рамках задания для детального описания API были выбраны три основных экрана: «Лента объявлений», «Карточка объявления» и «Создание объявления». Остальные экраны сохранены на макете интерфейса, однако в текущую спецификацию не включались.
Роуты
| Экран | Роут |
|---|
| Лента объявлений | /ads |
| Карточка объявления | /ads/:id |
| Создание объявления | /ads/new |
Endpoints
Лента объявлений /ads
| Элемент или действие | Endpoint | Метод | Что делает |
|---|
| Первичная загрузка ленты | /api/ads/search | POST | Возвращает первую страницу кратких карточек объявлений |
| Поиск и фильтрация | /api/ads/search | POST | Возвращает список объявлений по строке поиска и выбранным фильтрам |
| Кнопка «Показать ещё» | /api/ads/search | POST | Возвращает следующую страницу объявлений с теми же фильтрами |
| Получить категории для фильтра | /api/categories | GET | Возвращает список категорий |
Карточка объявления /ads/:id
| Элемент или действие | Endpoint | Метод | Что делает |
|---|
| Загрузка карточки объявления | /api/ads/{id} | GET | Возвращает полные данные объявления |
| Откликнуться | /api/ads/{id}/responses | POST | Создаёт отклик |
| Пожаловаться | /api/ads/{id}/reports | POST | Создаёт жалобу |
Создание объявления /ads/new
| Элемент или действие | Endpoint | Метод | Что делает |
|---|
| Получить категории | /api/categories | GET | Возвращает список категорий для формы |
| Загрузить фото | /api/media/photos | POST | Загружает фото отдельно от публикации объявления |
| Опубликовать объявление | /api/ads | POST | Создаёт объявление типа «Потерял» или «Нашёл» |