Документация/API

Черновик · 9 ноября 2026

Для разработчиков

Начало API

Ниже то, чем кабинет уже отвечает. Почту, финансы и инвентаризацию назовём следующими: пути есть, тела ещё соберём.

Контракт

Как устроен запрос

Отдельного ключа разработчика пока нет: запрос узнаёт человека по сессии кабинета. Вызов идёт с cloncy.com. С docs.cloncy.com cookie сессии не уходит.

База

https://cloncy.com

Тело и ответ — JSON, UTF-8. У ответа стоит Cache-Control: no-store.

Сессия

Cookie turan_shell

HttpOnly, Secure, SameSite=Lax, Path=/. Её ставит вход и снимает выход.

Ошибка

{ "message": "…" }

401 — нужен вход. 400 — запрос не разобран. 402 — лимит или план. 423 — кабинет закрыт кодом. 429 — слишком часто. 503 — оболочка ещё не готова.

Успех

{ "ok": true }

Рядом лежат данные раздела. Без сессии кабинет отвечает «Нужен вход».

Сессия

Вход принимает почту и пароль. Если кабинету нужен код из письма, первый ответ приходит со step: "code", второй — с тем же телом и полем code из шести цифр. modules: null значит, что открыты все личные модули. Массив — только перечисленные. Пока значение null, смена набора отвечает «Модули уже все на месте».

Вход
await fetch("https://cloncy.com/shell/login", {
  method: "POST",
  credentials: "include",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({
    email: "[email protected]",
    password: "<пароль>"
  })
});
Ответ входа
{
  "ok": true,
  "step": "done",
  "account": {
    "email": "[email protected]",
    "first": "Анна",
    "last": "",
    "login": "anna",
    "modules": ["reminders", "calendar", "mail"]
  }
}
ВызовЧто делаетПоля
GET /shell/sessionКто вошёл и закрыт ли кабинет—
POST /shell/loginВойти и получить cookieemail, password, code
POST /shell/logoutСнять сессию—
POST /shell/modulesОставить часть личных модулейmodules

Задачи

GET /shell/reminders отдаёт задачи, папки и заодно события календаря. POST ходит с полем op. Срок at — миллисекунды. Приоритет: high, normal, low. Напоминание за lead минут: 0, 5, 15, 30, 60 или 1440. Повтор: hour, day, week, month, year.

Новая задача
{
  "op": "add",
  "title": "Собрать смету",
  "notes": "",
  "priority": "high",
  "remind": true,
  "lead": 30
}
Задача в ответе
{
  "ok": true,
  "items": [{
    "id": "ab12cd34ef567890",
    "title": "Собрать смету",
    "notes": "",
    "at": 0,
    "done": false,
    "list": "a1b2c3d4e5f67890",
    "parent": "",
    "priority": "high",
    "remind": true,
    "lead": 30,
    "repeat": ""
  }],
  "lists": [{ "id": "a1b2c3d4e5f67890", "name": "Общая", "parent": "" }]
}
ВызовЧто делаетПоля
addНовая задача в папкеtitle, notes, list, at, priority, remind, lead, repeat, until, parent
updateПравкаid и те же поля
deleteУбрать в корзинуid
restoreВернуть из корзиныkind, id
reorderПорядок в спискеids
addListНовая папкаname, parent
updateListИмя и вид папкиid, name
deleteListУбрать папкуid

Календарь

События читаются из GET /shell/reminders, поле events. Запись идёт в POST /shell/events. start — миллисекунды. timed: true ставит время внутри дня.

Событие
{
  "op": "add",
  "title": "Созвон",
  "start": 1794254400000,
  "timed": true
}
В списке
{
  "id": "ab12cd34ef567890",
  "title": "Созвон",
  "start": 1794254400000,
  "timed": true,
  "pinned": false
}
ВызовЧто делаетПоля
addНовое событиеtitle, start, timed
updateПравкаid, title, start, timed
deleteУдалитьid

Проекты

GET /shell/works?brief=1 возвращает комнаты: id, title, текущий talk, список talks и url опубликованной страницы. Комната создаётся названием. Реплика уходит в текущий чат. Поток GET /shell/works/live — text/event-stream. Событие live несёт ход, поле step равно think, plan или edit. Событие done закрывает поток.

Комната
{
  "works": [{
    "id": "ab12cd34ef567890",
    "title": "Северный",
    "talk": "c1d2e3f4a5b67890",
    "url": "https://cloncy.app/ab12cd34ef567890/",
    "talks": [{ "id": "c1d2e3f4a5b67890", "title": "Новый чат" }]
  }]
}
Реплика
{
  "id": "ab12cd34ef567890",
  "talk": "c1d2e3f4a5b67890",
  "text": "Собери страницу с часами работы"
}
ВызовЧто делаетПоля
GET /shell/works?brief=1Список комнат—
POST /shell/worksНовая комнатаtitle
POST /shell/works/messageРеплика в чатid, talk, text
GET /shell/works/liveПоток ходаid, talk в строке запроса

Следующий заход

Пути, которые уже отвечают

Тела этих запросов ещё не расписаны. Здесь только то, что сессия уже может открыть.

ВызовЧто делаетПоля
GET, POST /shell/mailЯщики почтыboxes, current
GET, POST /shell/financeЛичные финансыcategories, expenses, incomes
GET, POST /shell/inventoryИнвентаризацияdomains
GET /shell/assistantПомощник кабинетаистория, если она включена

Пароли, студия и админка кабинета в этот контракт не входят. Их экраны остаются внутри сессии.