HTTP API¶
Шляхі адносныя да /admin/<app>/<model>/sheet/. Усе пункты выкарыстоўваюць сесіі Admin і праверкі доступу. Змены патрабуюць CSRF і application/json. Адказы маюць Cache-Control: no-store.
Чытанне даных¶
GET schema/ вяртае бачныя палі, магчымасць рэдагавання, бяспечныя віртуальныя калонкі і магчымасці.
GET rows/ прымае q, JSON filter, JSON sort, offset, limit і JSON columns — парадак паказу палёў. Адказ утрымлівае радкі {pk,version,values}, snapshot, нармалізаваны стан, UTC today, count (або null) і has_next.
{"and":[{"field":"stock","op":"lt","value":10},{"field":"status","op":"eq","value":"ready"}]}
Фільтры падтрымліваюць AND/OR і eq, ne, lt, lte, gt, gte, in, not_in, isnull, contains. Шляхі ORM і ўласныя lookups забароненыя. Парадак: [{"field":"price","dir":"desc"}]; дадаткова выкарыстоўваецца PK для стабільнасці.
Захаванне¶
POST save/:
{
"snapshot":"snapshot-uuid",
"view_state":{"q":"","filter":{},"sort":[],"offset":0,"limit":200,"columns":["name","price"]},
"idempotency_key":"client-generated-unique-key",
"changes":[{"pk":"42","version":"loaded-row-fingerprint","values":{"price":"=[price]*1.07"}}]
}
Падстаўляйце рэальныя здымак, стан і версію з загрузкі. Кожны запіс сустракаецца адзін раз; усе палі радка правяраюцца разам. Запыт атамарны. Запіс вызначаецца PK, не нумарам радка. Decimal перадаецца тэкстам, даты — ISO 8601. Невядомыя і забароненыя палі яўна адхіляюцца.
Пасля страты адказу паўтарыце дакладна той жа запыт з тым жа ключом. Іншыя даныя з тым жа ключом даюць 409. Пасля выдалення аперацыі ключ выходзіць за акно захоўвання ідэмпатэнтнасці.
Масавы план¶
POST bulk/preview/ прымае {idempotency_key,state,assignments,selection,snapshot}. state выкарыстоўвае правілы rows. assignments супастаўляе палям канстанты або формулы. selection: null выбірае ўсе супадзенні, спіс PK — радкі пазначанага здымка. Прагляд не змяняе бізнес-мадэлі.
POST bulk/run/ прымае {"operation":"operation-uuid"} — яўнае пацвярджэнне нязменнага плана. Паўтор не паўтарае эфект.
Справаздачы і кіраванне¶
| Метад | Шлях | Прызначэнне |
|---|---|---|
| GET | operations/<uuid>/?offset=0 |
Статус, лічыльнікі і да 200 бачных элементаў |
| POST | operations/<uuid>/cancel/ |
{}, адмена толькі аўтарам |
| POST | operations/<uuid>/resume/ |
{}, працяг толькі аўтарам |
| GET | history/?offset=0 |
Да 20 аперацый, патрэбнае права гісторыі |
Для наступнай старонкі элементаў выкарыстоўвайце next_offset: ён улічвае схаваныя радкі. Before/after ўтрымліваюць толькі палі, бачныя цяпер. Чытанне чужой аперацыі таксама патрабуе права гісторыі.
Памылкі¶
Фармат: {error:{code,message,pk?,field?,details?}}. Калі абмежаванне БД немагчыма надзейна звязаць з полем, памылка адносіцца да радка.
| HTTP | Прычына |
|---|---|
| 400 | Разбор або праверка |
| 403 | Недастатковыя правы |
| 404 | Недаступная аперацыя або мадэль |
| 409 | Канфлікт версіі, здымка, пацвярджэння або ключа |
| 413 | Завялікі запыт |
| 429 | Мяжа частаты |
| 503 | Занятая БД, чарга або налады |
Пасля няўдалага захавання кліент мусіць пакідаць лакальны буфер.