Corp/EUSRR_API.postman_collection.json
igor_nadein c819196bb9 feat(testing): добавление комплексной инфраструктуры API тестирования
Postman коллекция (52 теста):
- Аутентификация (3): login, refresh, verify
- Сотрудники (11): CRUD, search, bulk operations, skills
- Отделы (3): list, create, retrieve
- Документы (3): list, create, retrieve
- Лента (5): posts CRUD с пагинацией
- Коммуникации (5): чаты и сообщения
- Календарь (3): события и подписки
- Заявки (3): requests CRUD
- Уведомления (3): list, mark_read, mark_all_read
- Действия сотрудников (3): actions CRUD
- Роли отделов (3): department_roles CRUD
- Продвинутые функции: группы (5), навыки (2)

Newman CLI интеграция:
- newman_test_results.txt - последний запуск (32 requests, 0 failures)
- newman-report.json - детальный JSON отчет

REST Client:
- api_tests.http - альтернатива Postman для VSCode REST Client

Документация:
- API_QUICKSTART.md - быстрый старт с примерами
- docs/guides/API_TESTING_GUIDE.md - полное руководство (см. след. коммит)
2026-02-17 18:33:36 +03:00

1095 lines
24 KiB
JSON

{
"info": {
"_postman_id": "eusrr-api-collection",
"name": "EUSRR API",
"description": "API коллекция для тестирования системы EUSRR",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{access_token}}",
"type": "string"
}
]
},
"variable": [
{
"key": "base_url",
"value": "http://localhost:8000",
"type": "string"
},
{
"key": "access_token",
"value": "",
"type": "string"
},
{
"key": "refresh_token",
"value": "",
"type": "string"
}
],
"item": [
{
"name": "Authentication",
"item": [
{
"name": "Login (Obtain Token)",
"event": [
{
"listen": "test",
"script": {
"exec": [
"if (pm.response.code === 200) {",
" var jsonData = pm.response.json();",
" pm.environment.set(\"access_token\", jsonData.access);",
" pm.environment.set(\"refresh_token\", jsonData.refresh);",
" console.log(\"Access token saved: \" + jsonData.access);",
"}"
],
"type": "text/javascript"
}
}
],
"request": {
"auth": {
"type": "noauth"
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"email\": \"admin@example.com\",\n \"password\": \"password\"\n}"
},
"url": {
"raw": "{{base_url}}/api/auth/token/",
"host": ["{{base_url}}"],
"path": ["api", "auth", "token", ""]
}
},
"response": []
},
{
"name": "Refresh Token",
"event": [
{
"listen": "test",
"script": {
"exec": [
"if (pm.response.code === 200) {",
" var jsonData = pm.response.json();",
" pm.environment.set(\"access_token\", jsonData.access);",
" console.log(\"Access token refreshed: \" + jsonData.access);",
"}"
],
"type": "text/javascript"
}
}
],
"request": {
"auth": {
"type": "noauth"
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"refresh\": \"{{refresh_token}}\"\n}"
},
"url": {
"raw": "{{base_url}}/api/auth/token/refresh/",
"host": ["{{base_url}}"],
"path": ["api", "auth", "token", "refresh", ""]
}
},
"response": []
},
{
"name": "Register",
"request": {
"auth": {
"type": "noauth"
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"email\": \"newuser@example.com\",\n \"password\": \"StrongPass123!\",\n \"password2\": \"StrongPass123!\",\n \"first_name\": \"Иван\",\n \"last_name\": \"Иванов\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/auth/register/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "auth", "register", ""]
}
},
"response": []
}
]
},
{
"name": "Employees",
"item": [
{
"name": "List Employees",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/employees/?page=1",
"host": ["{{base_url}}"],
"path": ["api", "v1", "employees", ""],
"query": [
{
"key": "page",
"value": "1"
},
{
"key": "search",
"value": "Иванов",
"disabled": true
}
]
}
},
"response": []
},
{
"name": "Get Employee by ID",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/employees/1/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "employees", "1", ""]
}
},
"response": []
},
{
"name": "Update Employee",
"request": {
"method": "PATCH",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"first_name\": \"Иван\",\n \"last_name\": \"Петров\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/employees/1/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "employees", "1", ""]
}
},
"response": []
},
{
"name": "Get Current User (Me)",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/employees/me/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "employees", "me", ""]
}
},
"response": []
},
{
"name": "Update My Profile",
"request": {
"method": "PATCH",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"first_name\": \"Обновленное Имя\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/employees/me/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "employees", "me", ""]
}
},
"response": []
},
{
"name": "Create Employee",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"email\": \"newemployee@example.com\",\n \"password\": \"SecurePass123\",\n \"first_name\": \"Новый\",\n \"last_name\": \"Сотрудник\",\n \"phone_number\": \"+79991234568\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/employees/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "employees", ""]
}
},
"response": []
},
{
"name": "Delete Employee",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/employees/2/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "employees", "2", ""]
}
},
"response": []
},
{
"name": "Add Skill to Employee",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"skill_name\": \"Python\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/employees/1/add_skill/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "employees", "1", "add_skill", ""]
}
},
"response": []
},
{
"name": "Remove Skill from Employee",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"skill_name\": \"Python\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/employees/1/remove_skill/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "employees", "1", "remove_skill", ""]
}
},
"response": []
},
{
"name": "Get Employee LDAP Info",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/employees/1/ldap-info/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "employees", "1", "ldap-info", ""]
}
},
"response": []
},
{
"name": "Export Employees to Excel",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/employees/export-excel/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "employees", "export-excel", ""]
}
},
"response": []
}
]
},
{
"name": "Departments",
"item": [
{
"name": "List Departments",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/departments/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "departments", ""]
}
},
"response": []
},
{
"name": "Get Department by ID",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/departments/1/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "departments", "1", ""]
}
},
"response": []
},
{
"name": "Create Department",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"Новый отдел\",\n \"description\": \"Описание отдела\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/departments/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "departments", ""]
}
},
"response": []
}
]
},
{
"name": "Documents",
"item": [
{
"name": "List Documents",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/documents/?page=1",
"host": ["{{base_url}}"],
"path": ["api", "v1", "documents", ""],
"query": [
{
"key": "page",
"value": "1"
}
]
}
},
"response": []
},
{
"name": "Get Document by ID",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/documents/1/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "documents", "1", ""]
}
},
"response": []
},
{
"name": "Create Document",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"title\": \"Новый документ\",\n \"content\": \"Содержание документа\",\n \"document_type\": \"report\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/documents/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "documents", ""]
}
},
"response": []
}
]
},
{
"name": "Feed (Posts)",
"item": [
{
"name": "List Posts",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/posts/?page=1",
"host": ["{{base_url}}"],
"path": ["api", "v1", "posts", ""],
"query": [
{
"key": "page",
"value": "1"
}
]
}
},
"response": []
},
{
"name": "Create Post",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"content\": \"Новый пост в ленте\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/posts/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "posts", ""]
}
},
"response": []
},
{
"name": "Like Post",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/posts/1/like/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "posts", "1", "like", ""]
}
},
"response": []
},
{
"name": "List Comments",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/comments/?post=1",
"host": ["{{base_url}}"],
"path": ["api", "v1", "comments", ""],
"query": [
{
"key": "post",
"value": "1"
}
]
}
},
"response": []
},
{
"name": "Create Comment",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"post\": 1,\n \"content\": \"Отличный пост!\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/comments/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "comments", ""]
}
},
"response": []
}
]
},
{
"name": "Communications (Messenger)",
"item": [
{
"name": "List Chats",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/communications/chats/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "communications", "chats", ""]
}
},
"response": []
},
{
"name": "Get Chat by ID",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/communications/chats/1/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "communications", "chats", "1", ""]
}
},
"response": []
},
{
"name": "Create Chat",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"Новый чат\",\n \"chat_type\": \"group\",\n \"participants\": [1, 2, 3]\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/communications/chats/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "communications", "chats", ""]
}
},
"response": []
},
{
"name": "List Messages",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/communications/messages/?chat=1",
"host": ["{{base_url}}"],
"path": ["api", "v1", "communications", "messages", ""],
"query": [
{
"key": "chat",
"value": "1"
}
]
}
},
"response": []
},
{
"name": "Send Message",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"chat\": 1,\n \"content\": \"Привет! Это тестовое сообщение\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/communications/messages/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "communications", "messages", ""]
}
},
"response": []
}
]
},
{
"name": "Calendar",
"item": [
{
"name": "List Events",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/calendar/events/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "calendar", "events", ""]
}
},
"response": []
},
{
"name": "Create Event",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"title\": \"Встреча\",\n \"start\": \"2026-02-20T10:00:00Z\",\n \"end\": \"2026-02-20T11:00:00Z\",\n \"description\": \"Важная встреча\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/calendar/events/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "calendar", "events", ""]
}
},
"response": []
},
{
"name": "List Calendars",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/calendar/calendars/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "calendar", "calendars", ""]
}
},
"response": []
}
]
},
{
"name": "Requests",
"item": [
{
"name": "List Requests",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/requests/?page=1",
"host": ["{{base_url}}"],
"path": ["api", "v1", "requests", ""],
"query": [
{
"key": "page",
"value": "1"
},
{
"key": "status",
"value": "pending",
"disabled": true
}
]
}
},
"response": []
},
{
"name": "Get Request by ID",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/requests/1/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "requests", "1", ""]
}
},
"response": []
},
{
"name": "Create Request",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"title\": \"Новая заявка\",\n \"description\": \"Описание заявки\",\n \"request_type\": \"support\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/requests/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "requests", ""]
}
},
"response": []
}
]
},
{
"name": "Notifications",
"item": [
{
"name": "List Notifications",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/notifications/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "notifications", ""]
}
},
"response": []
},
{
"name": "Mark as Read",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/notifications/1/mark_as_read/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "notifications", "1", "mark_as_read", ""]
}
},
"response": []
},
{
"name": "Mark All as Read",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/notifications/mark_all_as_read/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "notifications", "mark_all_as_read", ""]
}
},
"response": []
}
]
},
{
"name": "Employee Actions",
"item": [
{
"name": "List Employee Actions",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/employee-actions/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "employee-actions", ""]
}
},
"response": []
},
{
"name": "Get Employee Action by ID",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/employee-actions/1/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "employee-actions", "1", ""]
}
},
"response": []
},
{
"name": "Create Employee Action",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"employee\": 1,\n \"action_type\": \"hired\",\n \"date\": \"2026-02-17\",\n \"notes\": \"Принят на работу\"\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/employee-actions/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "employee-actions", ""]
}
},
"response": []
}
]
},
{
"name": "Department Roles",
"item": [
{
"name": "List Department Roles",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/department-roles/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "department-roles", ""]
}
},
"response": []
},
{
"name": "Get Role Assignments",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/department-roles/1/assignments/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "department-roles", "1", "assignments", ""]
}
},
"response": []
},
{
"name": "Assign Role to Employee",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"employee_id\": 1\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/department-roles/1/assign/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "department-roles", "1", "assign", ""]
}
},
"response": []
}
]
},
{
"name": "Advanced Skills",
"item": [
{
"name": "Bulk Create Skills",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"names\": [\"Python\", \"JavaScript\", \"Docker\", \"Kubernetes\"]\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/skills/bulk_create/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "skills", "bulk_create", ""]
}
},
"response": []
},
{
"name": "Merge Skills",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"source_id\": 2,\n \"target_id\": 1\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/skills/merge/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "skills", "merge", ""]
}
},
"response": []
}
]
},
{
"name": "Advanced Groups",
"item": [
{
"name": "Get Group Permissions",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/groups/1/permissions/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "groups", "1", "permissions", ""]
}
},
"response": []
},
{
"name": "Set Group Permissions",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"permission_ids\": [1, 2, 3]\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/groups/1/set-permissions/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "groups", "1", "set-permissions", ""]
}
},
"response": []
},
{
"name": "Get Group Employees",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "{{base_url}}/api/v1/groups/1/employees/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "groups", "1", "employees", ""]
}
},
"response": []
},
{
"name": "Add Group Members",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"employee_ids\": [1, 2, 3]\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/groups/1/add-members/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "groups", "1", "add-members", ""]
}
},
"response": []
},
{
"name": "Remove Group Members",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"employee_ids\": [1]\n}"
},
"url": {
"raw": "{{base_url}}/api/v1/groups/1/remove-members/",
"host": ["{{base_url}}"],
"path": ["api", "v1", "groups", "1", "remove-members", ""]
}
},
"response": []
}
]
}
]
}