Справочник эндпоинтов

Все доступные API-маршруты по ресурсам — параметры, тела запросов, формат ответов.

Справочник эндпоинтов

Базовый URL: https://framix.app. Все маршруты начинаются с /api/.

Формат ответа всегда:

{ "data": { "status": true/false, "message": "...", ...поля ресурса } }

Сайты (projects)

Скоупы: projects:read, projects:write

Список сайтов

GET /api/projects/list

Query-параметры:

ПараметрТипОписание
pagenumberСтраница, по умолчанию 1
sizenumberРазмер страницы, 1–100, по умолчанию 10
statusstringactive / inactive / suspended
searchstringПоиск по названию и slug
sortBystringcreatedAt / updatedAt / title
sortDirstringasc / 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-параметры:

ПараметрТипОписание
pagenumberСтраница
sizenumberРазмер (до 500)
statusstringnew / in_progress / completed / rejected / archived
searchstringПоиск по данным заявки

Ответ: { 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-параметры:

ПараметрТипОписание
pagenumberСтраница
sizenumberРазмер (до 100), по умолчанию 20
qstringПоиск по названию и SKU
statusstringactive / inactive / all
categoryIdstringФильтр по категории
sortstringsortOrder / 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, ... }] }