# 01-OVERVIEW.md - n8n REST API Overview

**Версия API:** v1
**Дата документации:** 2025-12-25
**Источник:** Официальная документация n8n через Context7

---

## 📋 Содержание

1. [Введение](#введение)
2. [Что такое n8n REST API](#что-такое-n8n-rest-api)
3. [Возможности API](#возможности-api)
4. [Архитектура API](#архитектура-api)
5. [Base URLs](#base-urls)
6. [Версионирование](#версионирование)
7. [Форматы данных](#форматы-данных)
8. [Основные концепции](#основные-концепции)
9. [Начало работы](#начало-работы)
10. [Ограничения](#ограничения)

---

## Введение

n8n REST API предоставляет программный доступ к функциям n8n automation platform. API позволяет создавать, управлять и мониторить workflows, executions, credentials и tags через HTTP запросы, обеспечивая интеграцию n8n в ваши системы и процессы.

---

## Что такое n8n REST API

### Определение

n8n REST API - это RESTful HTTP API, который позволяет программно выполнять многие из тех же задач, что и в графическом интерфейсе (GUI) n8n. API следует принципам REST архитектуры и использует стандартные HTTP методы для взаимодействия с ресурсами.

### Основные принципы REST

**n8n REST API следует стандартным REST принципам:**

1. **Resource-Based** - Все операции выполняются над ресурсами (workflows, executions, credentials, tags)
2. **HTTP Methods** - Стандартные HTTP методы определяют действия:
   - `GET` - Получить ресурс(ы)
   - `POST` - Создать новый ресурс
   - `PUT` - Полностью обновить ресурс
   - `PATCH` - Частично обновить ресурс
   - `DELETE` - Удалить ресурс

3. **Stateless** - Каждый запрос содержит всю необходимую информацию для обработки
4. **JSON Format** - Все данные передаются в формате JSON
5. **HTTP Status Codes** - Стандартные коды ответов указывают на результат операции

---

## Возможности API

n8n REST API предоставляет следующие категории функциональности:

### 1. Workflows Management (Управление рабочими процессами)

**Основные операции:**
- ✅ Создание новых workflows программно
- ✅ Получение списка workflows с фильтрацией
- ✅ Получение детальной информации о workflow
- ✅ Обновление существующих workflows (полное и частичное)
- ✅ Удаление workflows
- ✅ Активация и деактивация workflows
- ✅ Клонирование и экспорт workflows

**Подробнее:** [10-WORKFLOWS-API.md](./10-WORKFLOWS-API.md)

### 2. Executions Monitoring (Мониторинг выполнений)

**Основные операции:**
- ✅ Просмотр истории выполнений workflows
- ✅ Получение детальной информации о execution
- ✅ Фильтрация executions по статусу, workflow, дате
- ✅ Повторное выполнение (retry) failed executions
- ✅ Удаление executions из истории

**Подробнее:** [20-EXECUTIONS-API.md](./20-EXECUTIONS-API.md)

### 3. Credentials Management (Управление учетными данными)

**Основные операции:**
- ✅ Создание credentials для внешних сервисов
- ✅ Получение списка credentials
- ✅ Обновление существующих credentials
- ✅ Удаление credentials
- ✅ Управление доступом к credentials

**Подробнее:** [30-CREDENTIALS-API.md](./30-CREDENTIALS-API.md)

**Примечание:** Credentials API описан согласно официальной документации, но не реализован в MCP сервере n8n-workflow-builder.

### 4. Tags Organization (Организация через теги)

**Основные операции:**
- ✅ Создание tags для классификации workflows
- ✅ Получение списка tags
- ✅ Обновление tags
- ✅ Удаление tags
- ✅ Назначение tags workflows

**Подробнее:** [40-TAGS-API.md](./40-TAGS-API.md)

---

## Архитектура API

### RESTful Структура

n8n REST API построен на основе RESTful архитектуры:

```
/api/v1/
├── workflows/          # Управление workflows
│   ├── GET /workflows
│   ├── POST /workflows
│   ├── GET /workflows/{id}
│   ├── PUT /workflows/{id}
│   ├── PATCH /workflows/{id}
│   ├── DELETE /workflows/{id}
│   ├── PUT /workflows/{id}/activate
│   └── PUT /workflows/{id}/deactivate
│
├── executions/         # Мониторинг executions
│   ├── GET /executions
│   ├── GET /executions/{id}
│   ├── DELETE /executions/{id}
│   └── POST /executions/{id}/retry
│
├── credentials/        # Управление credentials
│   ├── GET /credentials
│   ├── POST /credentials
│   ├── GET /credentials/{id}
│   ├── PUT /credentials/{id}
│   ├── DELETE /credentials/{id}
│   └── GET /credentials/schema/{typeName}
│
└── tags/              # Организация через tags
    ├── GET /tags
    ├── POST /tags
    ├── GET /tags/{id}
    ├── PUT /tags/{id}
    └── DELETE /tags/{id}
```

### Компоненты Архитектуры

**1. HTTP Layer**
- Стандартные HTTP методы (GET, POST, PUT, PATCH, DELETE)
- HTTP заголовки для аутентификации и content negotiation
- HTTP status codes для индикации результата

**2. Authentication Layer**
- API key authentication через header `X-N8N-API-KEY`
- Безопасная передача credentials через HTTPS

**3. Data Layer**
- JSON формат для всех запросов и ответов
- Валидация входных данных
- Трансформация данных между форматами

**4. Business Logic Layer**
- Обработка workflows, executions, credentials, tags
- Валидация бизнес-правил
- Управление состоянием ресурсов

---

## Base URLs

### n8n Cloud

Для n8n Cloud instances используйте следующий формат:

```
https://{instance}.app.n8n.cloud/api/v1
```

**Где:**
- `{instance}` - название вашего n8n Cloud instance

**Примеры:**
```
https://my-company.app.n8n.cloud/api/v1
https://production-n8n.app.n8n.cloud/api/v1
```

### Self-Hosted

Для self-hosted n8n installations используйте:

```
{url}/api/v1
```

**Где:**
- `{url}` - URL вашего self-hosted n8n сервера

**Примеры:**
```
https://n8n.example.com/api/v1
http://localhost:5678/api/v1
https://automation.company.com/api/v1
```

### Полные URL примеры

**Cloud Instance:**
```bash
# Список workflows
GET https://my-company.app.n8n.cloud/api/v1/workflows

# Создать workflow
POST https://my-company.app.n8n.cloud/api/v1/workflows

# Получить execution
GET https://my-company.app.n8n.cloud/api/v1/executions/123
```

**Self-Hosted:**
```bash
# Список workflows
GET https://n8n.example.com/api/v1/workflows

# Создать tag
POST https://n8n.example.com/api/v1/tags

# Активировать workflow
PUT https://n8n.example.com/api/v1/workflows/456/activate
```

---

## Версионирование

### Текущая версия: v1

n8n REST API использует версионирование в URL path:

```
/api/v1/{resource}
```

**Стабильность:**
- API v1 является стабильной версией
- Обратная совместимость поддерживается в рамках одной major version
- Изменения, ломающие совместимость, будут введены в новой major version (v2)

**Best Practices:**
- Всегда указывайте версию API в запросах
- Мониторьте официальные changelog для изменений API
- Тестируйте интеграции при обновлении n8n

---

## Форматы данных

### Request Format

**Content-Type:** `application/json`

Все POST, PUT, PATCH запросы должны отправлять данные в JSON формате:

```http
POST /api/v1/workflows HTTP/1.1
Host: n8n.example.com
Content-Type: application/json
X-N8N-API-KEY: your_api_key_here

{
  "name": "My Workflow",
  "nodes": [...],
  "connections": {...}
}
```

### Response Format

**Content-Type:** `application/json`

Все ответы возвращаются в JSON формате:

```json
{
  "id": "123",
  "name": "My Workflow",
  "active": true,
  "createdAt": "2025-12-25T10:00:00.000Z",
  "updatedAt": "2025-12-25T10:00:00.000Z"
}
```

### Common Response Structures

**Single Resource Response:**
```json
{
  "id": "123",
  "name": "Resource Name",
  ...other fields
}
```

**List Response (with pagination):**
```json
{
  "data": [
    {
      "id": "123",
      "name": "Item 1"
    },
    {
      "id": "456",
      "name": "Item 2"
    }
  ],
  "nextCursor": "cursor_token_here"
}
```

**Error Response:**
```json
{
  "error": "Error message describing what went wrong"
}
```

---

## Основные концепции

### 1. Resources (Ресурсы)

n8n API работает со следующими основными ресурсами:

**Workflow**
- Определение automation workflow
- Содержит nodes (узлы) и connections (связи)
- Может быть активным или неактивным

**Execution**
- Запись о выполнении workflow
- Содержит результаты, ошибки, timing информацию
- Может иметь статусы: success, error, waiting

**Credential**
- Учетные данные для аутентификации с внешними сервисами
- Безопасно зашифрованы в n8n
- Используются nodes в workflows

**Tag**
- Метка для организации workflows
- Помогает категоризировать и фильтровать workflows

### 2. HTTP Methods Семантика

**GET** - Получить ресурс(ы)
- Безопасный (не изменяет данные)
- Идемпотентный (повторные запросы дают тот же результат)
- Поддерживает фильтрацию через query parameters

**POST** - Создать новый ресурс
- Не идемпотентный (каждый запрос создает новый ресурс)
- Возвращает созданный ресурс с ID

**PUT** - Полностью заменить ресурс
- Идемпотентный
- Требует полное представление ресурса

**PATCH** - Частично обновить ресурс
- Может быть идемпотентным
- Обновляет только указанные поля

**DELETE** - Удалить ресурс
- Идемпотентный
- Обычно возвращает 204 No Content

### 3. Status Codes

n8n API использует стандартные HTTP status codes:

**2xx Success:**
- `200 OK` - Успешный GET, PUT, PATCH
- `201 Created` - Успешный POST
- `204 No Content` - Успешный DELETE

**4xx Client Errors:**
- `400 Bad Request` - Неверные данные запроса
- `401 Unauthorized` - Отсутствует или неверный API key
- `404 Not Found` - Ресурс не найден
- `409 Conflict` - Конфликт (например, дубликат)

**5xx Server Errors:**
- `500 Internal Server Error` - Внутренняя ошибка сервера

### 4. Pagination

Для endpoints, возвращающих списки, используется cursor-based pagination:

**Request:**
```bash
GET /api/v1/workflows?limit=100&cursor=cursor_token
```

**Response:**
```json
{
  "data": [...],
  "nextCursor": "next_cursor_token"
}
```

**Подробнее:** [03-PAGINATION.md](./03-PAGINATION.md)

### 5. Authentication

Все API запросы требуют аутентификации через API key:

```http
GET /api/v1/workflows HTTP/1.1
Host: n8n.example.com
X-N8N-API-KEY: your_api_key_here
Accept: application/json
```

**Подробнее:** [02-AUTHENTICATION.md](./02-AUTHENTICATION.md)

---

## Начало работы

### Шаг 1: Получить API Key

**n8n Cloud:**
1. Войдите в свой n8n Cloud instance
2. Перейдите в Settings → API
3. Создайте новый API key
4. Сохраните key в безопасном месте

**Self-Hosted:**
1. Войдите в свой n8n instance
2. Перейдите в Settings → API
3. Создайте новый API key
4. Сохраните key в безопасном месте

### Шаг 2: Первый API запрос

**Тест подключения - получить список workflows:**

```bash
curl -X GET \
  'https://your-instance.app.n8n.cloud/api/v1/workflows' \
  -H 'X-N8N-API-KEY: your_api_key_here' \
  -H 'Accept: application/json'
```

**Ожидаемый результат:**
```json
{
  "data": [
    {
      "id": "123",
      "name": "My First Workflow",
      "active": true,
      "createdAt": "2025-12-20T10:00:00.000Z",
      "updatedAt": "2025-12-20T10:00:00.000Z"
    }
  ]
}
```

### Шаг 3: Создать простой workflow

```bash
curl -X POST \
  'https://your-instance.app.n8n.cloud/api/v1/workflows' \
  -H 'X-N8N-API-KEY: your_api_key_here' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -d '{
    "name": "API Test Workflow",
    "nodes": [
      {
        "name": "Start",
        "type": "n8n-nodes-base.start",
        "typeVersion": 1,
        "position": [250, 300],
        "parameters": {}
      }
    ],
    "connections": {},
    "active": false,
    "settings": {}
  }'
```

### Шаг 4: Изучить документацию endpoints

- [Workflows API](./10-WORKFLOWS-API.md) - Полное управление workflows
- [Executions API](./20-EXECUTIONS-API.md) - Мониторинг выполнений
- [Credentials API](./30-CREDENTIALS-API.md) - Управление credentials
- [Tags API](./40-TAGS-API.md) - Организация workflows

---

## Ограничения

### Rate Limiting

**n8n Cloud:**
- Rate limiting применяется для защиты инфраструктуры
- Конкретные лимиты зависят от вашего плана
- При превышении лимита возвращается `429 Too Many Requests`

**Self-Hosted:**
- Rate limiting можно настроить через environment variables
- По умолчанию лимиты отсутствуют

### Размер данных

**Request Body Size:**
- Максимальный размер request body зависит от конфигурации сервера
- Рекомендуется держать workflows в разумных размерах

**Response Size:**
- Большие workflows могут возвращать значительные объемы данных
- Используйте pagination для списков

### Concurrent Operations

**Workflow Execution:**
- Количество одновременных executions ограничено настройками instance
- Cloud plans имеют различные лимиты по concurrency

### Deprecated Features

**Следите за changelog для:**
- Устаревших endpoints
- Изменений в структуре данных
- Новых версий API

---

## Дополнительные ресурсы

### Официальная документация

- [n8n REST API Documentation](https://docs.n8n.io/api/)
- [n8n REST API Reference](https://docs.n8n.io/api/api-reference/)

### Полезные ссылки

- **Основы REST APIs:**
  - [KnowledgeOwl's guide to working with APIs](https://support.knowledgeowl.com/help/working-with-apis)
  - [IBM Cloud - What is an API](https://www.ibm.com/cloud/learn/api)
  - [IBM Cloud - What is a REST API?](https://www.ibm.com/cloud/learn/rest-apis)
  - [MDN - An overview of HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview)

### Community & Support

- [n8n Community Forum](https://community.n8n.io/)
- [n8n GitHub Repository](https://github.com/n8n-io/n8n)
- [n8n Documentation](https://docs.n8n.io/)

---

## Примеры использования

### JavaScript/Node.js пример

```javascript
const axios = require('axios');

const N8N_API_KEY = 'your_api_key_here';
const N8N_HOST = 'https://your-instance.app.n8n.cloud';

async function listWorkflows() {
  try {
    const response = await axios.get(`${N8N_HOST}/api/v1/workflows`, {
      headers: {
        'X-N8N-API-KEY': N8N_API_KEY,
        'Accept': 'application/json'
      }
    });

    console.log('Workflows:', response.data.data);
    return response.data;
  } catch (error) {
    console.error('Error:', error.response?.data || error.message);
    throw error;
  }
}

listWorkflows();
```

### Python пример

```python
import requests

N8N_API_KEY = 'your_api_key_here'
N8N_HOST = 'https://your-instance.app.n8n.cloud'

def list_workflows():
    try:
        response = requests.get(
            f'{N8N_HOST}/api/v1/workflows',
            headers={
                'X-N8N-API-KEY': N8N_API_KEY,
                'Accept': 'application/json'
            }
        )
        response.raise_for_status()

        print('Workflows:', response.json()['data'])
        return response.json()
    except requests.exceptions.RequestException as error:
        print('Error:', error)
        raise

list_workflows()
```

---

## Следующие шаги

1. **Настройте аутентификацию:** Прочитайте [02-AUTHENTICATION.md](./02-AUTHENTICATION.md)
2. **Изучите пагинацию:** Прочитайте [03-PAGINATION.md](./03-PAGINATION.md)
3. **Начните с Workflows API:** Прочитайте [10-WORKFLOWS-API.md](./10-WORKFLOWS-API.md)

---

**Последнее обновление:** 2025-12-25
**Версия документации:** 1.0
**Подготовлено:** James (Dev Agent) с использованием Context7 MCP Server

**Источники:**
- [n8n REST API Documentation](https://docs.n8n.io/api/)
- [n8n API Reference](https://docs.n8n.io/api/api-reference/)
