# Flight Service
## HTTP API
### Регистрация нового пользователя
---
```http title="Request"
PUT /api/users HTTP/1.1
Accept: application/json
```
Request Example
```json title="Body"
{
"first_name": "Ivan",
"last_name": "Ivanov",
"age": 25
}
```
Response Example
```json title="Body"
{
"id": 1,
"first_name": "Ivan",
"last_name": "Ivanov",
"age": 25
}
```
### Получение пользователя
---
```http title="Request"
GET /api/users/{id} HTTP/1.1
Accept: application/json
```
Response Example
```json title="Body"
{
"id": 1,
"first_name": "Ivan",
"last_name": "Ivanov",
"age": 25
}
```
### Получение информации о самолете
---
```http title="Request"
POST /api/airplane/{id} HTTP/1.1
Accept: application/json
```
Response Example
```json title="Body"
{
"id": 1,
"name": "Airplane #1",
"max_passengers": 115,
"max_cargo_weight": 7350
}
```
### Список всех самолетов
---
```http title="Request"
GET /api/airplane HTTP/1.1
Accept: application/json
```
Query Parameters
| Name | Default value | Description |
|------|---------------|-------------|
| page | 0 | Страница |
Response Example
```json title="Body"
[
{
"id": 1,
"name": "Airplane #1",
"max_passengers": 115,
"max_cargo_weight": 7350
},
...
]
```
### Получение информации об аэропорте
---
```http
GET /api/airport/{id} HTTP/1.1
Accept: application/json
```
```json title="Response Body Example"
{
"id": 32,
"Name": "Airport #32",
"longitude": 47.488425,
"latitude": 39.929261
}
```
### Список всех аэропортов
---
```http title="Request"
GET /api/airport HTTP/1.1
Accept: application/json
```
Query Parameters
| Name | Default value | Description |
|------|---------------|-------------|
| page | 0 | Страница |
```json title="Response Body Example"
[
{
"id": 32,
"Name": "Airport #32",
"longitude": 47.488425,
"latitude": 39.929261
},
...
]
```
### Создание нового рейса
---
```http title="Request"
POST /api/flight HTTP/1.1
Accept: application/json
```
```json title="Request Body Example"
{
"departure_airport": 12,
"arrival_airport": 15,
"airplane": 3,
"departure_timestamp": 1771834281934
}
```
```json title="Response Body Example"
{
"id": 1,
"departure_airport": {
"id": 12,
"Name": "Airport #12",
"longitude": 47.488425,
"latitude": 39.929261
},
"arrival_airport": {
"id": 15,
"Name": "Airport #15",
"longitude": 47.488425,
"latitude": 39.929261
},
"airplane": {
"id": 3,
"name": "Airplane #3",
"max_passengers": 115,
"max_cargo_weight": 7350
},
"departure_timestamp": 1771834281934,
"passengers": []
}
```
### Получение информации о рейсе
---
```http title="Request"
GET /api/flight/{id} HTTP/1.1
Accept: application/json
```
```json title="Response Body Example"
{
"id": 1,
"departure_airport": {
"id": 12,
"Name": "Airport #12",
"longitude": 47.488425,
"latitude": 39.929261
},
"arrival_airport": {
"id": 15,
"Name": "Airport #15",
"longitude": 47.488425,
"latitude": 39.929261
},
"airplane": {
"id": 3,
"name": "Airplane #3",
"max_passengers": 115,
"max_cargo_weight": 7350
},
"departure_timestamp": 1771834281934,
"passengers": [
{
"id": 1,
"first_name": "Ivan",
"last_name": "Ivanov",
"age": 25
},
...
]
}
```
### Регистрация пассажира на рейс
---
```http title="Request"
POST /api/flight/register HTTP/1.1
```
```json title="Request Body Example"
{
"flight_id": 1,
"user_id": 3
}
```