Skip to content

Commit 0b59638

Browse files
committed
feat: api docs first part
1 parent 5bbf9f6 commit 0b59638

5 files changed

Lines changed: 357 additions & 6 deletions

File tree

docs/api.mdx

Lines changed: 347 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,355 @@
11
---
22
sidebar_position: 2
3+
title: API
34
---
45

5-
# General API
6+
# General API (v0.0)
7+
8+
Base address: `https://parktrack-api.nawinds.dev/api/v0`
69

710
## 1. Cameras
811

9-
### 1.1 POST `/cameras/new`
10-
### 1.2 GET `/cameras/<camera_id>`
11-
### 1.3 POST `/cameras/<camera_id>`
12+
### 1.1 GET `/cameras`
13+
### 1.2 POST `/cameras/new`
14+
15+
Request data:
16+
17+
<table>
18+
<tbody>
19+
<tr>
20+
<td>title</td>
21+
<td>string</td>
22+
<td>Описание камеры (по какому адресу она находится и куда смотрит)</td>
23+
</tr>
24+
</tbody>
25+
</table>
26+
27+
Response data:
28+
29+
<table>
30+
<tbody>
31+
<tr>
32+
<td>camera_id</td>
33+
<td>integer</td>
34+
<td>Числовой идентификатор созданной камеры</td>
35+
</tr>
36+
</tbody>
37+
</table>
38+
39+
Ошибки:
40+
41+
В разработке.
42+
43+
Пример запроса:
44+
45+
```json
46+
{
47+
"title": "Кронверкский просп., парковка напротив ИТМО"
48+
}
49+
```
50+
51+
Response:
52+
53+
```json
54+
{
55+
"camera_id": 1
56+
}
57+
```
58+
59+
### 1.3 GET `/cameras/<camera_id>`
60+
### 1.4 PUT `/cameras/<camera_id>`
61+
62+
## 2. Parking Zones
63+
64+
### 2.1 GET `/zones`
65+
### 2.2 POST `/zones/new`
66+
67+
Request data:
68+
69+
<table>
70+
<tbody>
71+
<tr>
72+
<td>camera_id</td>
73+
<td>integer</td>
74+
<td>Числовой идентификатор уже существующей камеры, к которой относится новая парковочная зона</td>
75+
</tr>
76+
<tr>
77+
<td>zone_type</td>
78+
<td>string</td>
79+
<td>Тип парковки. `parallel` - параллельная парковка вдоль дороги, на карте будет рисоваться прямой линией, начальная и конечная точка которой берутся как середины отрезков, соединяющих соответственно оба коротких края парковочной зоны.
80+
`standard` - любая другая парковка, на карте отображается прямоугольником</td>
81+
</tr>
82+
<tr>
83+
<td>capacity</td>
84+
<td>integer</td>
85+
<td>Максимальная вместимость парковки, число мест</td>
86+
</tr>
87+
<tr>
88+
<td>pay</td>
89+
<td>integer</td>
90+
<td>Стоимость парковки в зоне в час, в рублях. 0 для бесплатных парковок</td>
91+
</tr>
92+
<tr>
93+
<td>points</td>
94+
<td>list</td>
95+
<td>Список опорных точек парковочной зоны. Содержит 2 точки для параллельных парковок и 4 для остальных</td>
96+
</tr>
97+
</tbody>
98+
</table>
99+
100+
Для каждой парковочной зоны на этапе разметки определяются 4 опорные точки, задающие границы этой зоны. Для них задаются координаты широты и долготы на карте (лучше, если можно будет прямо отметить на карте все 4 опорные точки в интерфейсе, а не вводить вручную),
101+
а также координаты на изображении с соответствующей камеры X и Y (отмечаются прямо на изображении курсором).
102+
Структура опорной точки из списка `points`:
103+
104+
<table>
105+
<tbody>
106+
<tr>
107+
<td>latitude</td>
108+
<td>float</td>
109+
<td>Координата широты опорной точки</td>
110+
</tr>
111+
<tr>
112+
<td>longitude</td>
113+
<td>float</td>
114+
<td>Координата долготы опорной точки</td>
115+
</tr>
116+
<tr>
117+
<td>x</td>
118+
<td>float</td>
119+
<td>Координата x опорной точки на изображении с камеры</td>
120+
</tr>
121+
<tr>
122+
<td>y</td>
123+
<td>float</td>
124+
<td>Координата x опорной точки на изображении с камеры</td>
125+
</tr>
126+
</tbody>
127+
</table>
128+
129+
<details>
130+
<summary>Структура points[]</summary>
131+
132+
- **latitude** (`float`) — …
133+
- **longitude** (`float`) — …
134+
- **x** (`float`) — …
135+
- **y** (`float`) — …
136+
</details>
137+
138+
Response data:
139+
140+
<table>
141+
<tbody>
142+
<tr>
143+
<td>zone_id</td>
144+
<td>integer</td>
145+
<td>Числовой идентификатор созданной парковочной зоны</td>
146+
</tr>
147+
</tbody>
148+
</table>
149+
150+
Ошибки:
151+
152+
В разработке.
153+
154+
404 status code = камеры с указанным camera_id не существует
155+
156+
Пример запроса:
157+
158+
```json
159+
{
160+
"camera_id": 1,
161+
"zone_type": "parallel",
162+
"capacity": 7,
163+
"pay": 0,
164+
"points": [
165+
{
166+
"latitude": 59.955976,
167+
"longitude": 30.309426,
168+
"x": 45,
169+
"y": 23
170+
},
171+
{
172+
"latitude": 59.956008,
173+
"longitude": 30.309358,
174+
"x": 87,
175+
"y": 25
176+
},
177+
{
178+
"latitude": 59.956231,
179+
"longitude": 30.309979,
180+
"x": 79,
181+
"y": 149
182+
},
183+
{
184+
"latitude": 59.956201,
185+
"longitude": 30.310043,
186+
"x": 32,
187+
"y": 145
188+
}
189+
]
190+
}
191+
```
192+
193+
Response:
194+
195+
```json
196+
{
197+
"zone_id": 1
198+
}
199+
```
200+
201+
### 2.3 GET `/zones/<zone_id>`
202+
203+
Пример ответа:
204+
205+
```json
206+
{
207+
"zone_id": 1,
208+
"camera_id": 1,
209+
"zone_type": "parallel",
210+
"capacity": 7,
211+
"occupied": 5,
212+
"confidence": 0.76,
213+
"pay": 0,
214+
"points": [
215+
{
216+
"latitude": 59.955976,
217+
"longitude": 30.309426,
218+
"x": 45,
219+
"y": 23
220+
},
221+
{
222+
"latitude": 59.956008,
223+
"longitude": 30.309358,
224+
"x": 87,
225+
"y": 25
226+
},
227+
{
228+
"latitude": 59.956231,
229+
"longitude": 30.309979,
230+
"x": 79,
231+
"y": 149
232+
},
233+
{
234+
"latitude": 59.956201,
235+
"longitude": 30.310043,
236+
"x": 32,
237+
"y": 145
238+
}
239+
]
240+
}
241+
```
242+
243+
### 2.4 PUT `/zones/<zone_id>`
244+
245+
Примеры запроса:
246+
247+
1.
248+
```json
249+
{
250+
"occupied": 5,
251+
"confidence": 0.76
252+
}
253+
```
254+
255+
2.
256+
```json
257+
{
258+
"camera_id": 1,
259+
"zone_type": "parallel",
260+
"capacity": 7,
261+
"pay": 0,
262+
"points": [
263+
{
264+
"latitude": 59.955976,
265+
"longitude": 30.309426,
266+
"x": 45,
267+
"y": 23
268+
},
269+
{
270+
"latitude": 59.956008,
271+
"longitude": 30.309358,
272+
"x": 87,
273+
"y": 25
274+
},
275+
{
276+
"latitude": 59.956231,
277+
"longitude": 30.309979,
278+
"x": 79,
279+
"y": 149
280+
},
281+
{
282+
"latitude": 59.956201,
283+
"longitude": 30.310043,
284+
"x": 32,
285+
"y": 145
286+
}
287+
]
288+
}
289+
```
290+
291+
## 3. Cars
292+
293+
### 3.1 POST `/cars`
294+
295+
Пример запроса:
296+
297+
1.
298+
```json
299+
{
300+
"camera_id": 1,
301+
"cars": [
302+
{
303+
"confidence": 0.89,
304+
"points": [
305+
[23, 28],
306+
[87, 28],
307+
[87, 42],
308+
[23, 42]
309+
]
310+
},
311+
{
312+
"confidence": 0.91,
313+
"points": [
314+
[28, 33],
315+
[92, 33],
316+
[92, 47],
317+
[28, 47]
318+
]
319+
}
320+
]
321+
}
322+
```
323+
324+
### 3.2 GET `/cars`
325+
326+
Long polling endpoint for fetching updates
327+
328+
Пример ответа:
12329

330+
1.
331+
```json
332+
{
333+
"camera_id": 1,
334+
"cars": [
335+
{
336+
"confidence": 0.89,
337+
"points": [
338+
[23, 28],
339+
[87, 28],
340+
[87, 42],
341+
[23, 42]
342+
]
343+
},
344+
{
345+
"confidence": 0.91,
346+
"points": [
347+
[28, 33],
348+
[92, 33],
349+
[92, 47],
350+
[28, 47]
351+
]
352+
}
353+
]
354+
}
355+
```

docs/graph.mdx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
sidebar_position: 3
3+
title: Схема
4+
---
5+
6+
# Примерная схема проекта
7+
8+
![Схема](images/graph.jpeg)

docs/images/graph.jpeg

34.8 KB
Loading
File renamed without changes.

docs/intro.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ title: Инфо
99
- [Бот записи прогресса](https://t.me/fitipphysicsprog_bot)
1010
- [Бот записи на встречи](https://t.me/fitipphysics_bot)
1111

12-
# Наш проект
12+
## Наш проект
1313
- [Организация на GitHub](https://github.com/parktrack-project)
1414

15-
![img.png](img.png)
15+
![img.png](images/img.png)

0 commit comments

Comments
 (0)