# 📚 Corp API - Справочник по всем эндпоинтам ## 🎯 Обзор **Базовый URL:** `https://corp.robotail.pro/api/v1/` **Обнаружено эндпоинтов:** 13 (+ корневой) **Тесты:** ✅ 22/22 прошли успешно --- ## 🔐 Аутентификация Все эндпоинты требуют Bearer token: ```http Authorization: Bearer ``` **Получение токена:** - 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)