Справочник эндпоинтов
Все доступные API-маршруты по ресурсам — параметры, тела запросов, формат ответов.
Справочник эндпоинтов
Базовый URL: https://framix.app. Все маршруты начинаются с /api/.
Формат ответа всегда:
{ "data": { "status": true/false, "message": "...", ...поля ресурса } }
Сайты (projects)
Скоупы: projects:read, projects:write
Список сайтов
GET /api/projects/list
Query-параметры:
| Параметр | Тип | Описание |
|---|---|---|
page | number | Страница, по умолчанию 1 |
size | number | Размер страницы, 1–100, по умолчанию 10 |
status | string | active / inactive / suspended |
search | string | Поиск по названию и slug |
sortBy | string | createdAt / updatedAt / title |
sortDir | string | asc / desc |
Ответ: { projects: [...], pagination: { total, page, limit } }
Создать сайт
POST /api/projects/create
Тело:
{
"title": "Название сайта",
"description": "Описание",
"slug": "my-site"
}
Ответ: { project: { id, title, slug, ... } }
Обновить сайт
POST /api/projects/update
Тело: { id, title?, description?, ... }
Удалить сайт
POST /api/projects/delete
Тело: { id }
Страницы (pages)
Скоупы: pages:read, pages:write
Список страниц сайта
GET /api/pages/list?projectId=<id>
Ответ: { pages: [...] }
Получить страницу
GET /api/pages/<id>
Ответ: { page: { id, title, html, designSystem, ... } }
Сохранить HTML страницы
POST /api/pages/save-html
Тело:
{
"id": "page-id",
"html": "<main>...</main>"
}
Ответ: { page: { id, html, ... } }
Создать страницу
POST /api/pages/create
Тело: { projectId, title, slug? }
CRM / Лиды (crm)
Скоупы: crm:read, crm:write
Список лидов
GET /api/forms/collection-list
Query-параметры:
| Параметр | Тип | Описание |
|---|---|---|
page | number | Страница |
size | number | Размер (до 500) |
status | string | new / in_progress / completed / rejected / archived |
search | string | Поиск по данным заявки |
Ответ: { collections: [...], total }
Изменить статус лида
POST /api/forms/collection-status
Тело:
{
"id": "lead-id",
"status": "completed"
}
Доступные статусы: new, in_progress, completed, rejected, archived
Товары (products)
Скоупы: products:read, products:write
Список товаров
GET /api/products/list
Query-параметры:
| Параметр | Тип | Описание |
|---|---|---|
page | number | Страница |
size | number | Размер (до 100), по умолчанию 20 |
q | string | Поиск по названию и SKU |
status | string | active / inactive / all |
categoryId | string | Фильтр по категории |
sort | string | sortOrder / createdAt / price / name |
Ответ: { products: [...], total }
Получить товар
GET /api/products/<id>
Создать товар
POST /api/products/create
Тело:
{
"name": "Название товара",
"price": 199000,
"description": "Описание",
"sku": "SKU-001",
"stock": 100,
"categoryId": "cat-id"
}
Цена в копейках (199000 = 1990 ₽).
Обновить товар
POST /api/products/update
Тело: { id, name?, price?, description?, stock?, ... }
Услуги и онлайн-запись (services, bookings)
Скоупы: services:read, services:write, bookings:read, bookings:write
Список услуг
GET /api/services/list
Ответ: { services: [...] }
Создать услугу
POST /api/services/create
Тело:
{
"name": "Стрижка",
"durationMin": 60,
"price": 150000,
"description": "Мужская стрижка"
}
Длительность в минутах, цена в копейках.
Список записей
GET /api/bookings/list
Query-параметры: page, size, status, serviceId, search
Ответ: { bookings: [...], total }
Файлы (files)
Скоупы: files:read, files:write
Список файлов
GET /api/files/list?folderId=<id>
Ответ: { files: [...] }
Список папок
GET /api/file-folders
AI-агенты (agents)
Скоупы: agents:read, agents:write
Список агентов
GET /api/agents/list
Ответ: { agents: [...] }
Получить агента
GET /api/agents/<id>
Создать агента
POST /api/agents/create
Тело:
{
"name": "Агент-консультант",
"systemPrompt": "Ты помощник интернет-магазина...",
"model": "gpt-4o-mini"
}
Обновить агента
PUT /api/agents/<id>
Блог — только для ADMIN (blog)
Скоупы: blog:read, blog:write — доступны только аккаунтам с ролью ADMIN.
Список статей (публичный)
GET /api/blog/list
Query: page, size, tag, category
Ответ: { posts: [...], total }
Создать статью
POST /api/admin/blog/create
Тело:
{
"title": "Заголовок статьи",
"slug": "zagolovok-stati",
"description": "Краткое описание (до 500 символов)",
"content": "# Заголовок\n\nТекст статьи в Markdown...",
"tags": ["seo", "маркетинг"],
"category": "Кейсы",
"author": "Иван Иванов",
"status": "draft",
"coverImage": "https://..."
}
| Поле | Обязательно | Описание |
|---|---|---|
title | да | Заголовок, до 300 символов |
slug | нет | URL-часть, если не задан — генерируется из title |
description | нет | Для мета-тега description, до 500 символов |
content | нет | Markdown-текст статьи |
tags | нет | Массив строк, до 20 тегов |
category | нет | Категория |
author | нет | Имя автора |
status | нет | draft (по умолчанию) или published |
coverImage | нет | URL обложки |
Ответ: { post: { id, slug, status, ... } }
Обновить статью
PUT /api/admin/blog/<id>
Тело: те же поля, что при создании — все необязательные.
Удалить статью
DELETE /api/admin/blog/<id>
Получить статью по slug
GET /api/blog/<slug>
Метаданные группы
Доступно с любым действующим ключом, без специального скоупа.
Список групп
GET /api/workspaces/list
Ответ: { workspaces: [{ id, name, ... }] }