API: Игроки
# Players API Документация
## Обзор
API для работы с информацией об игроках и их трансферах. Базовый URL: `/Players`
Все ответы API обернуты в объект `ApiResponse` со следующей структурой:
```json
{
"success": true,
"data": { /* данные ответа */ },
"message": "Сообщение об ошибке (если есть)"
}
```
## Эндпоинты
### 1. Поиск игроков по имени
**GET** `/Players/find`
Возвращает список игроков, имена которых содержат указанную подстроку (поиск без учета регистра).
#### Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|----------|-----|--------------|----------|
| `name` | string | Да | Имя или часть имени игрока для поиска |
#### Примеры URL
```
GET /Players/find?name=Ronaldo
GET /Players/find?name=меси
GET /Players/find?name=John
```
#### Коды ответов
- **200 OK** - Успешный поиск
- **400 Bad Request** - Не указано имя для поиска
- **500 Internal Server Error** - Внутренняя ошибка сервера
#### Пример успешного ответа (200)
```json
{
"status": "OK",
"count": 55,
"data": [
{
"id": 127794,
"name": "Ronaldo Rivas",
"team": null
},
{
"id": 16350,
"name": "Ronaldo Aldair Villa Lara",
"team": {
"id": 25736,
"name": "22 de Julio",
"flashId": null
}
},
{
"id": 874,
"name": "Cristiano Ronaldo",
"team": null
},
{
"id": 166735,
"name": "Ronaldo",
"team": {
"id": 22852,
"name": "União São João",
"flashId": null
}
}
]
}
```
#### Пример ошибки (400)
```json
{
"success": false,
"message": "Invalid name"
}
```
**Ограничения**: Возвращается максимум 100 результатов.
---
### 2. Получение полной информации об игроке
**GET** `/Players/{id}`
Возвращает подробную информацию об игроке, включая текущую команду и историю трансферов.
#### Параметры пути
| Параметр | Тип | Описание |
|----------|-----|----------|
| `id` | int | Уникальный идентификатор игрока |
#### Примеры URL
```
GET /Players/1
GET /Players/123
GET /Players/9999
```
#### Коды ответов
- **200 OK** - Игрок найден
- **404 Not Found** - Игрок с указанным ID не найден
- **500 Internal Server Error** - Внутренняя ошибка сервера
#### Пример успешного ответа (200)
```json
{
"status": "OK",
"data": {
"id": 78484,
"name": "M. Zajac",
"currentTeam": {
"id": 2620,
"name": "Vaughan Azzurri",
"flashId": null
},
"transfers": [
{
"from": {
"id": 18766,
"name": "Guelph United",
"flashId": null
},
"to": {
"id": 2620,
"name": "Vaughan Azzurri",
"flashId": null
},
"date": "2023-01-01"
},
{
"from": {
"id": 6945,
"name": "Olimpia Elbląg",
"flashId": null
},
"to": {
"id": 18766,
"name": "Guelph United",
"flashId": null
},
"date": "2022-02-10"
},
{
"from": {
"id": 3830,
"name": "Forge",
"flashId": null
},
"to": {
"id": 6945,
"name": "Olimpia Elbląg",
"flashId": null
},
"date": "2021-07-09"
}
]
}
}
```
#### Пример ошибки (404)
```json
{
"success": false,
"message": "Player not found"
}
```
## Структуры данных
### ApiSaPlayer
Базовая информация об игроке:
```json
{
"id": 1,
"name": "Имя игрока"
}
```
### ApiSaPlayerFull
Расширенная информация об игроке:
```json
{
"id": 1,
"name": "Имя игрока",
"currentTeam": {
"id": 10,
"name": "Название команды"
},
"transfers": [
{
"from": { "id": 1, "name": "Команда-отправитель" },
"to": { "id": 2, "name": "Команда-получатель" },
"date": "2023-01-15"
}
]
}
```
### ApiSaTeam
Информация о команде:
```json
{
"id": 1,
"name": "Название команды"
}
```
### ApiSaPlayerTransfer
Информация о трансфере:
```json
{
"from": {
"id": 1,
"name": "Команда-отправитель"
},
"to": {
"id": 2,
"name": "Команда-получатель"
},
"date": "2023-01-15"
}
```
## Примечания
1. **Дата в трансферах** - может быть `null` если дата трансфера неизвестна
2. **Текущая команда** - может быть `null` если игрок не состоит ни в одной команде
3. **Поиск по имени** - выполняется без учета регистра и поддерживает поиск по частичному совпадению
4. **Все команды в трансферах** - могут быть `null` в зависимости от типа трансфера
## Обработка ошибок
Все ошибки возвращаются в стандартном формате:
```json
{
"success": false,
"message": "Описание ошибки"
}
```
Основные типы ошибок:
- **400 Bad Request** - Неверные параметры запроса
- **404 Not Found** - Ресурс не найден
- **500 Internal Server Error** - Внутренняя ошибка сервера