Tried to find a way to visualize, I’d like to have some feedback on that and the API content.
GET, POST, PATCH, DELETE v ^ + - v... /notebook | v... /- api :html doc | v^.. /- book | | v.+. | /- {book} | | Q v... | | +- ?page[number]=n | | +- &page[size]=n | | +- ?|&filter[date-from]={ts} | | +- &filter[date-to]={ts} | | +- &sort=-ts :defaults to latest date first | | +- &fields[note]={},.,{} <- title|body|ts | | Q ..+. | | +- &fields[book]={},.,{} <- book|about | | v^.. | /- notes | | | | | | | -> 303 redirect /notebook/{book}?page=1&sort=-ts | | | v.+. | | /- {id} | | | Q v... | | | +- &fields[note]={},.,{} <- title|body|ts | | | Q ..+. | | | +- &fields[note]={} <- ts_eol|title|body|ref | | | v... | | /- history | | | Q v... | | | +-- &fields[note]={},.,{} <- title|body|ts | | | v.+. | | ( /- relationships/note/{id} ) | | | v... | | /- thread | | Q v... | | +-- &fields[note]={},.,{} <- title|body|ts | | v.+. | ( /- relationship/note/{id} ) | v... /- feed | | v... | /- atom | | | v... | | /- book :last 10 notes of all books | | | v... | | /- {book} :last 10 notes of book | | v... | /- rss | | | v... | | /- book | | | v... | | /- {book} | | v... | /- stream :sse | | | -> notebook | -> notebook:{book} | v... /- search Q +-- ?q={...} <-- SQLite fts5 options | +- &filter[book]={},.,{} +- &filter[note]={} <-- title|body +- &page[number]=n +- &page[size]=n