Initial commit: Message Gateway project
- FastAPI приложение для отправки мониторинговых алертов в мессенджеры - Поддержка Telegram и MAX/VK - Интеграция с Grafana, Zabbix, AlertManager - Автоматическое создание тикетов в Jira - Управление группами мессенджеров через API - Декораторы для авторизации и скрытия эндпоинтов - Подробная документация в папке docs/ Автор: Сергей Антропов Сайт: https://devops.org.ru
This commit is contained in:
195
docs/groups.md
Normal file
195
docs/groups.md
Normal file
@@ -0,0 +1,195 @@
|
||||
# Конфигурация групп
|
||||
|
||||
## Формат конфигурации
|
||||
|
||||
Конфигурация групп хранится в файле `config/groups.json`.
|
||||
|
||||
**Пример конфигурации:**
|
||||
```json
|
||||
{
|
||||
"monitoring": {
|
||||
"messenger": "telegram",
|
||||
"chat_id": -1001234567890,
|
||||
"thread_id": 0,
|
||||
"config": {}
|
||||
},
|
||||
"alerts_max": {
|
||||
"messenger": "max",
|
||||
"chat_id": "123456789",
|
||||
"thread_id": null,
|
||||
"config": {
|
||||
"access_token": "optional_override_max_token",
|
||||
"api_version": "5.131"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Поля конфигурации:**
|
||||
- `messenger` - тип мессенджера (`telegram`, `max`)
|
||||
- `chat_id` - ID чата (может быть числом для Telegram или строкой для MAX/VK)
|
||||
- `thread_id` - ID треда в группе (только для Telegram, `0` для основной группы, `null` для MAX/VK)
|
||||
- `config` - дополнительная конфигурация для мессенджера (например, `access_token` для MAX/VK)
|
||||
|
||||
## Управление группами через API
|
||||
|
||||
Управление группами доступно через REST API с защитой API ключом.
|
||||
|
||||
### Получение списка поддерживаемых мессенджеров
|
||||
|
||||
```bash
|
||||
GET /api/v1/groups/messengers
|
||||
```
|
||||
|
||||
**Пример ответа:**
|
||||
```json
|
||||
{
|
||||
"status": "ok",
|
||||
"messengers": [
|
||||
{
|
||||
"type": "telegram",
|
||||
"name": "Telegram",
|
||||
"supports_threads": true,
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"type": "max",
|
||||
"name": "MAX/VK",
|
||||
"supports_threads": false,
|
||||
"enabled": false
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Получение списка групп
|
||||
|
||||
```bash
|
||||
# Без API ключа (только названия)
|
||||
GET /api/v1/groups
|
||||
|
||||
# С API ключом (полная информация)
|
||||
GET /api/v1/groups
|
||||
Headers: X-API-Key: your_api_key_here
|
||||
```
|
||||
|
||||
**Пример ответа (без API ключа):**
|
||||
```json
|
||||
{
|
||||
"status": "ok",
|
||||
"groups": [
|
||||
{"name": "monitoring", "chat_id": null},
|
||||
{"name": "alerts", "chat_id": null}
|
||||
],
|
||||
"count": 2
|
||||
}
|
||||
```
|
||||
|
||||
**Пример ответа (с API ключом):**
|
||||
```json
|
||||
{
|
||||
"status": "ok",
|
||||
"groups": [
|
||||
{
|
||||
"name": "monitoring",
|
||||
"messenger": "telegram",
|
||||
"chat_id": -1001234567890,
|
||||
"thread_id": 0
|
||||
},
|
||||
{
|
||||
"name": "alerts_max",
|
||||
"messenger": "max",
|
||||
"chat_id": "123456789",
|
||||
"thread_id": null
|
||||
}
|
||||
],
|
||||
"count": 2
|
||||
}
|
||||
```
|
||||
|
||||
### Создание группы
|
||||
|
||||
```bash
|
||||
POST /api/v1/groups
|
||||
Headers:
|
||||
Content-Type: application/json
|
||||
X-API-Key: your_api_key_here
|
||||
|
||||
{
|
||||
"group_name": "monitoring",
|
||||
"messenger": "telegram",
|
||||
"chat_id": -1001234567890,
|
||||
"thread_id": 0
|
||||
}
|
||||
```
|
||||
|
||||
**Пример запроса для MAX/VK:**
|
||||
```bash
|
||||
POST /api/v1/groups
|
||||
Headers:
|
||||
Content-Type: application/json
|
||||
X-API-Key: your_api_key_here
|
||||
|
||||
{
|
||||
"group_name": "max_alerts",
|
||||
"messenger": "max",
|
||||
"chat_id": "123456789",
|
||||
"thread_id": 0,
|
||||
"config": {
|
||||
"access_token": "your_max_access_token"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Пример ответа:**
|
||||
```json
|
||||
{
|
||||
"status": "ok",
|
||||
"message": "Группа 'monitoring' создана с мессенджером 'telegram' и ID -1001234567890"
|
||||
}
|
||||
```
|
||||
|
||||
### Обновление группы
|
||||
|
||||
```bash
|
||||
PUT /api/v1/groups/{group_name}
|
||||
Headers:
|
||||
Content-Type: application/json
|
||||
X-API-Key: your_api_key_here
|
||||
|
||||
{
|
||||
"messenger": "telegram",
|
||||
"chat_id": -1001234567891,
|
||||
"thread_id": 0
|
||||
}
|
||||
```
|
||||
|
||||
**Пример ответа:**
|
||||
```json
|
||||
{
|
||||
"status": "ok",
|
||||
"message": "Группа 'monitoring' обновлена"
|
||||
}
|
||||
```
|
||||
|
||||
### Удаление группы
|
||||
|
||||
```bash
|
||||
DELETE /api/v1/groups/{group_name}
|
||||
Headers: X-API-Key: your_api_key_here
|
||||
```
|
||||
|
||||
**Пример ответа:**
|
||||
```json
|
||||
{
|
||||
"status": "ok",
|
||||
"message": "Группа 'monitoring' удалена"
|
||||
}
|
||||
```
|
||||
|
||||
**API ключ для управления группами:**
|
||||
- Настраивается в переменной окружения `API_KEY`
|
||||
- Без API ключа можно только просматривать названия групп
|
||||
- С API ключом доступны все операции (создание, обновление, удаление)
|
||||
- API ключ передается в заголовке: `X-API-Key: your_api_key_here`
|
||||
|
||||
Reference in New Issue
Block a user