|
1 | 1 | --- |
2 | | -sidebar_position: 2 |
| 2 | +sidebar_position: 1 |
3 | 3 | title: API |
4 | 4 | --- |
5 | 5 |
|
6 | | -import HighlightParam from '@site/src/components/HighlightParam'; |
| 6 | +# Smart Parking API (v2) |
7 | 7 |
|
8 | | -# General API (v1.0) |
| 8 | +**Базовый URL:** `https://api.parktrack.live` |
9 | 9 |
|
10 | | -**Base address:** |
11 | | -<HighlightParam>`https://api.parktrack.live`</HighlightParam> |
| 10 | +API предоставляет доступ к системе интеллектуального поиска парковок, которая агрегирует данные из различных источников (камеры, внешние API и будущие интеграции) для определения текущей и прогнозируемой занятости парковок. |
12 | 11 |
|
13 | | -:::warning Обновление API |
14 | | -17 ноября документация `Cameras`, `Parking Zones` была обновлена, все изменения выделены жёлтым цветом. |
15 | | -::: |
| 12 | +--- |
| 13 | + |
| 14 | +## Основные принципы |
| 15 | + |
| 16 | +### 1. Модульная архитектура |
| 17 | +API разделён на независимые модули: |
| 18 | + |
| 19 | +- Основные сущности (`cameras`, `parking_zones`) |
| 20 | +- Данные во времени (`occupancy`, `forecasts`) |
| 21 | +- Навигация (`routing`) |
| 22 | +- Доступ и авторизация (`auth`, `users`, `subscriptions`, `partners`) |
| 23 | +- Интеграции (`data_sources`) |
| 24 | + |
| 25 | +Это позволяет масштабировать систему без ломки существующего функционала. |
| 26 | + |
| 27 | +--- |
| 28 | + |
| 29 | +### 2. Обратная совместимость (MVP-first) |
| 30 | +Существующие эндпоинты (`cameras`, `parking_zones`) сохраняются, чтобы не ломать текущие интеграции. |
| 31 | + |
| 32 | +Новая функциональность добавляется в отдельных разделах. |
16 | 33 |
|
17 | | -## Swagger версия |
| 34 | +--- |
18 | 35 |
|
19 | | -Документация API также доступна в Swagger. Там можно будет поиграться с API и вручную поотправлять запросы, когда API сервер будет готов. |
| 36 | +### 3. Разделение данных по времени |
| 37 | +В системе явно разделены: |
20 | 38 |
|
21 | | -[Открыть документацию в Swagger](https://swagger.parktrack.live) |
| 39 | +- **Статические данные** → камеры, зоны |
| 40 | +- **Динамические данные** → занятость (история и текущее состояние) |
| 41 | +- **Предсказания** → прогнозы |
22 | 42 |
|
23 | | -:::info Предупреждение |
24 | | -Swagger может содержать неточности или ошибки, приоритетной считать документацию на этом сайте. |
25 | | -::: |
| 43 | +--- |
26 | 44 |
|
27 | | -## Общие ошибки |
| 45 | +### 4. Поддержка нескольких источников данных |
| 46 | +Система проектируется с учётом разных источников: |
28 | 47 |
|
29 | | -| Код | Тип | Описание | |
30 | | -|---------|--------------------------|-----------------------------------------------------------------------------------| |
31 | | -| **400** | `Bad Request` | Невалидный JSON или неверные типы полей. | |
32 | | -| **401** | `Unauthorized` | Отсутствует или просрочен токен. Укажи `Authorization: Bearer <token>`. | |
33 | | -| **403** | `Forbidden` | У пользователя нет прав создавать камеры. Проверь роли/права API-токена. | |
34 | | -| **415** | `Unsupported Media Type` | Неверный `Content-Type`. Используй `application/json`. | |
35 | | -| **500** | `Internal Server Error` | Необработанная ошибка сервера. Повтори позже; при повторе — обратись в поддержку. | |
36 | | -| **503** | `Service Unavailable` | Сервис временно недоступен/перезапускается. Повтори запрос позднее. | |
| 48 | +- Камеры (MVP) |
| 49 | +- Парктроники (в будущем) |
| 50 | +- Навигационные данные (в будущем) |
| 51 | +- Данные об оплатах (в будущем) |
37 | 52 |
|
38 | | -Более подробное описание ошибки возвращается в JSON в ключе `error_description`, например: |
| 53 | +Каждый источник может иметь разный уровень достоверности. |
| 54 | + |
| 55 | +--- |
| 56 | + |
| 57 | +## Формат времени |
| 58 | + |
| 59 | +Все временные значения передаются в формате **UTC ISO 8601**: |
| 60 | + |
| 61 | +``` |
| 62 | +2025-10-08T09:12:00Z |
| 63 | +``` |
| 64 | + |
| 65 | +--- |
| 66 | + |
| 67 | +## 🔐 Авторизация |
| 68 | + |
| 69 | +Большинство эндпоинтов требуют заголовок: |
| 70 | + |
| 71 | +``` |
| 72 | +Authorization: Bearer <token> |
| 73 | +``` |
| 74 | + |
| 75 | +Типы токенов: |
| 76 | +- Системный токен |
| 77 | +- Пользовательский токен |
| 78 | +- Партнёрский токен |
| 79 | + |
| 80 | +--- |
| 81 | + |
| 82 | +## ❗ Общие ошибки |
| 83 | + |
| 84 | +| Код | Тип | Описание | |
| 85 | +|-----|-----|----------| |
| 86 | +| 400 | Bad Request | Невалидный JSON или типы данных | |
| 87 | +| 401 | Unauthorized | Отсутствует или неверный токен | |
| 88 | +| 403 | Forbidden | Недостаточно прав | |
| 89 | +| 404 | Not Found | Ресурс не найден | |
| 90 | +| 415 | Unsupported Media Type | Используй `application/json` | |
| 91 | +| 422 | Unprocessable Entity | Ошибка валидации | |
| 92 | +| 500 | Internal Server Error | Ошибка сервера | |
| 93 | +| 503 | Service Unavailable | Сервис временно недоступен | |
| 94 | + |
| 95 | +Пример ответа с ошибкой: |
39 | 96 |
|
40 | 97 | ```json |
41 | | -{ "error_description": "Unsupported Media Type: expected application/json" } |
| 98 | +{ |
| 99 | + "error_description": "Unsupported Media Type: expected application/json" |
| 100 | +} |
42 | 101 | ``` |
43 | 102 |
|
44 | | -## Формат данных |
| 103 | +--- |
| 104 | + |
| 105 | +## 📦 Разделы API |
| 106 | + |
| 107 | +### Основные сущности |
| 108 | +- Cameras |
| 109 | +- Parking Zones |
45 | 110 |
|
46 | | -### Время |
| 111 | +### Данные о занятости |
| 112 | +- Occupancy (история и текущее состояние) |
| 113 | +- Forecasts (прогнозы) |
47 | 114 |
|
48 | | -Время передается в UTC в строковом представлении в формате ISO 8601, с постфиксом Z. |
| 115 | +### Навигация |
| 116 | +- Routing (поиск парковки и построение маршрутов) |
49 | 117 |
|
50 | | -Например, `2025-10-08T09:12:00Z`. |
| 118 | +### Доступ |
| 119 | +- Auth |
| 120 | +- Users |
| 121 | +- Subscriptions |
| 122 | +- Partners |
51 | 123 |
|
52 | | -### Опорные точки |
| 124 | +### Интеграции |
| 125 | +- Data Sources |
53 | 126 |
|
54 | | -Для упрощения рендеринга парковочных зон, порядок выбора 4 опорных точек записывается Labeler |
55 | | -при разметке. Пользователю должно показываться сообщение, что отмечать точки нужно по часовой стрелке. |
56 | | -Сохраненный порядок точек должен сохраняться при передаче данных, а также при хранении на сервере. |
| 127 | +### Дополнительно |
| 128 | +- Feedback |
| 129 | +- Admin |
| 130 | +- Analytics |
| 131 | +- System |
| 132 | + |
| 133 | +--- |
| 134 | + |
| 135 | +## 🚀 Версионирование |
| 136 | + |
| 137 | +Текущая версия API: `v1 (MVP+)` |
| 138 | + |
| 139 | +В будущем изменения будут вводиться без ломки существующих эндпоинтов. |
| 140 | + |
| 141 | +--- |
| 142 | + |
| 143 | +## 🔮 Планируемые расширения |
| 144 | + |
| 145 | +- ML-прогнозирование занятости парковок |
| 146 | +- Выбор оптимальной парковки с учётом ETA |
| 147 | +- Реалтайм-мониторинг камер и распознавания |
| 148 | +- Интеграция с внешними источниками данных (навигация, каршеринг, оплаты) |
| 149 | + |
| 150 | +--- |
0 commit comments