301 lines
8.1 KiB
Markdown
301 lines
8.1 KiB
Markdown
# 📚 Corp API - Справочник по всем эндпоинтам
|
||
|
||
## 🎯 Обзор
|
||
|
||
**Базовый URL:** `https://corp.robotail.pro/api/v1/`
|
||
**Обнаружено эндпоинтов:** 13 (+ корневой)
|
||
**Тесты:** ✅ 22/22 прошли успешно
|
||
|
||
---
|
||
|
||
## 🔐 Аутентификация
|
||
|
||
Все эндпоинты требуют Bearer token:
|
||
|
||
```http
|
||
Authorization: Bearer <access_token>
|
||
```
|
||
|
||
**Получение токена:**
|
||
- URL: `https://corp.robotail.pro/api/auth/token/`
|
||
- Метод: POST
|
||
- Тело: `{"email": "...", "password": "..."}`
|
||
|
||
---
|
||
|
||
## 📋 Список всех эндпоинтов
|
||
|
||
### 1. 🏠 Корневой эндпоинт
|
||
```
|
||
GET /api/v1/
|
||
```
|
||
**Возвращает:** Словарь со всеми доступными эндпоинтами
|
||
**Формат ответа:** `{"endpoint_name": "full_url", ...}`
|
||
**Тест:** ✅ Пройден
|
||
|
||
---
|
||
|
||
### 2. 📅 События календаря
|
||
```
|
||
GET /api/v1/calendar/events/
|
||
POST /api/v1/calendar/events/
|
||
```
|
||
**Возвращает:** Массив событий
|
||
**Методы:** GET, POST, HEAD, OPTIONS
|
||
**Тест:** ✅ Пройден
|
||
|
||
**Пример использования:**
|
||
```python
|
||
response = requests.get(
|
||
"https://corp.robotail.pro/api/v1/calendar/events/",
|
||
headers={"Authorization": f"Bearer {token}"}
|
||
)
|
||
events = response.json() # list
|
||
```
|
||
|
||
---
|
||
|
||
### 3. 👥 Сотрудники
|
||
```
|
||
GET /api/v1/employees/
|
||
POST /api/v1/employees/
|
||
```
|
||
**Возвращает:** Пагинированный список сотрудников
|
||
**Поля ответа:** `count`, `next`, `previous`, `results`
|
||
**Методы:** GET, POST, HEAD, OPTIONS
|
||
**Тесты:** ✅ 2 теста пройдены
|
||
|
||
**Структура ответа:**
|
||
```json
|
||
{
|
||
"count": 100,
|
||
"next": "https://...?page=2",
|
||
"previous": null,
|
||
"results": [...]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
### 4. 🏢 Отделы
|
||
```
|
||
GET /api/v1/departments/
|
||
POST /api/v1/departments/
|
||
```
|
||
**Возвращает:** Пагинированный список отделов
|
||
**Поля ответа:** `count`, `next`, `previous`, `results`
|
||
**Методы:** GET, POST, HEAD, OPTIONS
|
||
**Тест:** ✅ Пройден
|
||
|
||
---
|
||
|
||
### 5. 💼 Должности
|
||
```
|
||
GET /api/v1/positions/
|
||
POST /api/v1/positions/
|
||
```
|
||
**Возвращает:** Массив должностей
|
||
**Поля объекта:** `id`, `name`, `description`, `groups`, `groups_verbose`
|
||
**Методы:** GET, POST, HEAD, OPTIONS
|
||
**Тест:** ✅ Пройден
|
||
|
||
---
|
||
|
||
### 6. 🎓 Навыки
|
||
```
|
||
GET /api/v1/skills/
|
||
POST /api/v1/skills/
|
||
```
|
||
**Возвращает:** Массив навыков
|
||
**Поля объекта:** `id`, `name`
|
||
**Методы:** GET, POST, HEAD, OPTIONS
|
||
**Тест:** ✅ Пройден
|
||
|
||
**Пример:**
|
||
```json
|
||
[
|
||
{"id": 1, "name": "Python"},
|
||
{"id": 2, "name": "JavaScript"}
|
||
]
|
||
```
|
||
|
||
---
|
||
|
||
### 7. 📝 Действия сотрудников
|
||
```
|
||
GET /api/v1/employee-actions/
|
||
POST /api/v1/employee-actions/
|
||
```
|
||
**Возвращает:** Массив действий
|
||
**Поля:** `id`, `employee`, `comment`, `extra`, `history`, `action_display`, `date`, `action`, `date_display`
|
||
**Методы:** GET, POST, HEAD, OPTIONS
|
||
**Тест:** ✅ Пройден
|
||
|
||
---
|
||
|
||
### 8. 📄 Документы
|
||
```
|
||
GET /api/v1/documents/
|
||
POST /api/v1/documents/
|
||
```
|
||
**Возвращает:** Пагинированный список документов
|
||
**Поля ответа:** `count`, `next`, `previous`, `results`
|
||
**Методы:** GET, POST, HEAD, OPTIONS
|
||
**Тест:** ✅ Пройден
|
||
|
||
---
|
||
|
||
### 9. 📨 Запросы
|
||
```
|
||
GET /api/v1/requests/
|
||
POST /api/v1/requests/
|
||
```
|
||
**Возвращает:** Пагинированный список запросов
|
||
**Поля ответа:** `count`, `next`, `previous`, `results`
|
||
**Методы:** GET, POST, HEAD, OPTIONS
|
||
**Тест:** ✅ Пройден
|
||
|
||
---
|
||
|
||
### 10. 📰 Посты
|
||
```
|
||
GET /api/v1/posts/
|
||
POST /api/v1/posts/
|
||
```
|
||
**Возвращает:** Пагинированный список постов
|
||
**Поля ответа:** `count`, `next`, `previous`, `results`
|
||
**Методы:** GET, POST, HEAD, OPTIONS
|
||
**Тест:** ✅ Пройден
|
||
|
||
---
|
||
|
||
### 11. 💬 Комментарии
|
||
```
|
||
GET /api/v1/comments/
|
||
POST /api/v1/comments/
|
||
```
|
||
**Возвращает:** Пагинированный список комментариев
|
||
**Поля ответа:** `count`, `next`, `previous`, `results`
|
||
**Методы:** GET, POST, HEAD, OPTIONS
|
||
**Тест:** ✅ Пройден
|
||
|
||
---
|
||
|
||
### 12. 🎭 Роли отделов
|
||
```
|
||
GET /api/v1/department-roles/
|
||
POST /api/v1/department-roles/
|
||
```
|
||
**Возвращает:** Пагинированный список ролей
|
||
**Поля ответа:** `count`, `next`, `previous`, `results`
|
||
**Методы:** GET, POST, HEAD, OPTIONS
|
||
**Тест:** ✅ Пройден
|
||
|
||
---
|
||
|
||
### 13. 🚫 Группы (ограничен доступ)
|
||
```
|
||
GET /api/v1/groups/
|
||
```
|
||
**Статус:** 403 Forbidden
|
||
**Описание:** Доступ ограничен для текущего пользователя
|
||
**Тест:** ✅ Пройден (проверка 403)
|
||
|
||
---
|
||
|
||
## 🧪 Результаты тестирования
|
||
|
||
### Все тесты (22 из 22): ✅
|
||
|
||
#### Функциональные тесты:
|
||
- ✅ Корневой эндпоинт возвращает список
|
||
- ✅ Корневой эндпоинт содержит основные эндпоинты
|
||
- ✅ Calendar events
|
||
- ✅ Employees (список)
|
||
- ✅ Employees (пагинация)
|
||
- ✅ Departments
|
||
- ✅ Positions
|
||
- ✅ Skills
|
||
- ✅ Employee actions
|
||
- ✅ Documents
|
||
- ✅ Requests
|
||
- ✅ Posts
|
||
- ✅ Comments
|
||
- ✅ Department roles
|
||
- ✅ Groups (403)
|
||
|
||
#### Тесты безопасности (7):
|
||
- ✅ Employees требует авторизации
|
||
- ✅ Departments требует авторизации
|
||
- ✅ Positions требует авторизации
|
||
- ✅ Documents требует авторизации
|
||
- ✅ Requests требует авторизации
|
||
- ✅ Posts требует авторизации
|
||
- ✅ Comments требует авторизации
|
||
|
||
---
|
||
|
||
## 📦 Созданные файлы
|
||
|
||
| Файл | Описание | Статус |
|
||
|------|----------|--------|
|
||
| `requests_corp_api_test.py` | Базовый скрипт для получения токена | ✅ |
|
||
| `explore_api_endpoints.py` | Рекурсивное обнаружение эндпоинтов | ✅ |
|
||
| `endpoints_list.py` | Структурированный список эндпоинтов | ✅ |
|
||
| `test_corp_api.py` | Тесты аутентификации (9 тестов) | ✅ |
|
||
| `test_all_endpoints.py` | Полный набор тестов (22 теста) | ✅ |
|
||
| `API_DOCUMENTATION.md` | Документация по аутентификации | ✅ |
|
||
| `ENDPOINTS_REFERENCE.md` | Этот справочник | ✅ |
|
||
|
||
---
|
||
|
||
## 🚀 Быстрый старт
|
||
|
||
### 1. Получение токена
|
||
```python
|
||
from requests_corp_api_test import get_token
|
||
|
||
token = get_token("your@email.com", "password")
|
||
```
|
||
|
||
### 2. Использование эндпоинтов
|
||
```python
|
||
import requests
|
||
from endpoints_list import API_BASE_URL
|
||
|
||
headers = {"Authorization": f"Bearer {token}"}
|
||
|
||
# Получить список сотрудников
|
||
response = requests.get(API_BASE_URL + "employees/", headers=headers)
|
||
employees = response.json()
|
||
|
||
# Получить навыки
|
||
response = requests.get(API_BASE_URL + "skills/", headers=headers)
|
||
skills = response.json()
|
||
```
|
||
|
||
### 3. Запуск тестов
|
||
```bash
|
||
# Все тесты
|
||
pytest test_all_endpoints.py -v
|
||
|
||
# Конкретный класс
|
||
pytest test_all_endpoints.py::TestEmployeesEndpoints -v
|
||
|
||
# С подробным выводом
|
||
pytest test_all_endpoints.py -v --tb=short
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 Статистика
|
||
|
||
- **Всего эндпоинтов:** 13
|
||
- **Тестов написано:** 22
|
||
- **Успешных тестов:** 22 (100%)
|
||
- **Время выполнения:** ~26 секунд
|
||
- **Пагинированных эндпоинтов:** 8
|
||
- **Array эндпоинтов:** 4
|
||
- **Ограниченных эндпоинтов:** 1 (groups)
|
||
|