#[derive(Clone, Copy, PartialEq, Debug)]
pub(super) enum Gate {
Open,
Reader,
Desk,
Token,
Window,
Mint,
}
pub(super) const ROUTES: &[(&str, &str, Option<&str>, Gate, bool)] = &[
("GET", "/", None, Gate::Open, true),
("GET", "/inbox", None, Gate::Open, true),
("GET", "/api/home", None, Gate::Open, true),
("GET", "/connect", None, Gate::Open, true),
("GET", "/start", None, Gate::Open, true),
("GET", "/welcome", None, Gate::Open, true),
("GET", "/d/nope", None, Gate::Open, true),
("GET", "/b/nope", None, Gate::Open, true),
("GET", "/b/nope/x.md", None, Gate::Open, true),
("GET", "/files/nope/x.png", None, Gate::Open, true),
("GET", "/assets/mermaid.js", None, Gate::Open, true),
("GET", "/assets/app.js", None, Gate::Open, true),
("GET", "/assets/fonts/x.woff2", None, Gate::Open, true),
("GET", "/api/health", None, Gate::Open, true),
("GET", "/api/about", None, Gate::Open, true),
("GET", "/api/agents", None, Gate::Open, true),
(
"POST",
"/api/agents/claude/connect",
None,
Gate::Desk,
false,
),
("GET", "/api/tree", None, Gate::Open, true),
("GET", "/api/projects/1/tree", None, Gate::Open, true),
("GET", "/api/workflows/1/tree", None, Gate::Open, true),
("GET", "/api/inbox", None, Gate::Open, true),
("GET", "/api/search?q=x", None, Gate::Open, true),
("POST", "/api/docs", Some("{}"), Gate::Token, true),
("GET", "/api/docs/nope", None, Gate::Open, true),
(
"POST",
"/api/docs/nope/pin",
Some(r#"{"pinned":true}"#),
Gate::Reader,
true,
),
("POST", "/api/docs/nope/read", None, Gate::Reader, true),
("GET", "/api/queue", None, Gate::Open, true),
("POST", "/api/layout", Some("{}"), Gate::Reader, true),
("POST", "/api/queue/clear", None, Gate::Reader, true),
(
"POST",
"/api/queue/unread",
Some(r#"{"ids":[]}"#),
Gate::Reader,
true,
),
("POST", "/api/docs/nope/delete", None, Gate::Reader, true),
("POST", "/api/docs/nope/undelete", None, Gate::Reader, true),
("GET", "/api/removed", None, Gate::Open, true),
("GET", "/api/docs/nope/history", None, Gate::Open, true),
(
"POST",
"/api/projects/1/rename",
Some(r#"{"name":"x"}"#),
Gate::Reader,
true,
),
(
"POST",
"/api/workflows/1/rename",
Some(r#"{"name":"x"}"#),
Gate::Reader,
true,
),
("GET", "/api/docs/nope/split", None, Gate::Open, true),
("GET", "/api/docs/nope/outline", None, Gate::Open, true),
("GET", "/api/notes", None, Gate::Open, true),
(
"POST",
"/api/notes",
Some(r#"{"text":"x"}"#),
Gate::Token,
true,
),
("POST", "/api/notes/seen", None, Gate::Reader, true),
(
"POST",
"/api/notes/dismiss",
Some(r#"{"ids":[]}"#),
Gate::Reader,
true,
),
(
"POST",
"/api/notes/restore",
Some(r#"{"ids":[]}"#),
Gate::Reader,
true,
),
("POST", "/api/focus", None, Gate::Reader, true),
("POST", "/api/shutdown", None, Gate::Window, true),
("POST", "/api/restart", Some("{}"), Gate::Window, true),
("DELETE", "/api/restart", None, Gate::Window, true),
(
"POST",
"/api/update/check",
Some(r#"{"lift":false}"#),
Gate::Window,
true,
),
(
"POST",
"/api/update/auto",
Some(r#"{"on":false}"#),
Gate::Window,
true,
),
("POST", "/api/update/later", Some("{}"), Gate::Window, true),
("GET", "/api/reset", None, Gate::Open, true),
(
"POST",
"/api/reset",
Some(r#"{"documents":999}"#),
Gate::Reader,
true,
),
("POST", "/api/reveal", Some("{}"), Gate::Reader, true),
(
"POST",
"/api/resolve",
Some(r#"{"word":"x"}"#),
Gate::Desk,
true,
),
("GET", "/api/browse", None, Gate::Open, true),
(
"POST",
"/api/browse",
Some(r#"{"path":"."}"#),
Gate::Token,
true,
),
("POST", "/api/browse/pick", None, Gate::Desk, false),
("POST", "/api/browse/pick/cancel", None, Gate::Desk, true),
("POST", "/api/browse/nope/close", None, Gate::Reader, true),
("POST", "/api/browse/nope/reopen", None, Gate::Reader, true),
("GET", "/api/browse/nope/tree", None, Gate::Open, true),
(
"GET",
"/api/browse/nope/file?path=x.md",
None,
Gate::Open,
true,
),
(
"GET",
"/api/browse/nope/raw?path=x.md",
None,
Gate::Open,
true,
),
("GET", "/api/browse/nope/raw/x.md", None, Gate::Open, true),
("GET", "/api/browse/nope/find?q=x", None, Gate::Open, true),
(
"GET",
"/api/browse/nope/outline?path=x.md",
None,
Gate::Open,
true,
),
("GET", "/api/docs/nope/raw", None, Gate::Open, true),
("GET", "/api/docs/nope/blob", None, Gate::Open, true),
("GET", "/api/compare/a/b", None, Gate::Open, true),
("GET", "/api/events", None, Gate::Open, true),
("POST", "/api/capability", None, Gate::Mint, true),
("GET", "/api/desk", None, Gate::Open, true),
("GET", "/api/desks", None, Gate::Desk, true),
("POST", "/api/desks", Some("{}"), Gate::Desk, true),
(
"POST",
"/api/desks/1/rename",
Some(r#"{"name":"x"}"#),
Gate::Desk,
true,
),
(
"POST",
"/api/desks/1/layout",
Some(r#"{"col":0.5,"row":0.5}"#),
Gate::Desk,
true,
),
(
"POST",
"/api/desks/1/move",
Some(r#"{"from":1,"to":2}"#),
Gate::Desk,
true,
),
("POST", "/api/desks/1/delete", None, Gate::Desk, true),
("POST", "/api/desks/1/reopen", None, Gate::Desk, true),
("POST", "/api/desks/1/panes", Some("{}"), Gate::Desk, true),
("GET", "/api/desks/1/docs", None, Gate::Desk, true),
("POST", "/api/desks/1/docs/d/remove", None, Gate::Desk, true),
(
"POST",
"/api/desks/1/docs/d/restore",
None,
Gate::Desk,
true,
),
("GET", "/api/desks/1/notes", None, Gate::Desk, true),
(
"POST",
"/api/desks/1/notes",
Some(r#"{"text":"x"}"#),
Gate::Desk,
true,
),
("POST", "/api/desks/1/notes/1", Some("{}"), Gate::Desk, true),
(
"POST",
"/api/desks/1/notes/1/remove",
None,
Gate::Desk,
true,
),
(
"POST",
"/api/desks/1/notes/1/restore",
None,
Gate::Desk,
true,
),
("POST", "/api/desks/1/notes/1/keep", None, Gate::Desk, true),
(
"POST",
"/api/desks/1/leftoff",
Some(r#"{"text":"x","at":0}"#),
Gate::Desk,
true,
),
("GET", "/api/desks/1/keys", None, Gate::Desk, true),
(
"POST",
"/api/desks/1/keys",
Some(r#"{"name":"X_KEY","value":"y"}"#),
Gate::Desk,
false,
),
(
"POST",
"/api/desks/1/keys/X_KEY/remove",
Some("{}"),
Gate::Desk,
false,
),
("GET", "/api/accounts", None, Gate::Desk, true),
(
"POST",
"/api/accounts/signin",
Some(r#"{"label":"Work"}"#),
Gate::Desk,
false,
),
("GET", "/api/accounts/signin", None, Gate::Desk, true),
(
"POST",
"/api/accounts/signin/code",
Some(r#"{"code":"abc"}"#),
Gate::Desk,
true,
),
(
"POST",
"/api/accounts/signin/cancel",
None,
Gate::Desk,
true,
),
(
"POST",
"/api/accounts",
Some(r#"{"label":"Work","token":"nope"}"#),
Gate::Desk,
true,
),
(
"POST",
"/api/accounts/9/rename",
Some(r#"{"label":"Home"}"#),
Gate::Desk,
true,
),
(
"POST",
"/api/accounts/9/renew",
Some(r#"{"token":"nope"}"#),
Gate::Desk,
true,
),
("POST", "/api/accounts/9/delete", None, Gate::Desk, true),
(
"POST",
"/api/desks/1/account",
Some(r#"{"account":9}"#),
Gate::Desk,
true,
),
(
"POST",
"/api/panes/nope/account",
Some(r#"{"account":null}"#),
Gate::Desk,
true,
),
("POST", "/api/desks/1/visit", None, Gate::Desk, true),
("GET", "/api/desks/1/git", None, Gate::Desk, true),
(
"POST",
"/api/desks/order",
Some(r#"{"ids":[1]}"#),
Gate::Desk,
true,
),
("POST", "/api/desks/1/park", Some("{}"), Gate::Desk, true),
(
"POST",
"/api/desks/1/week",
Some(r#"{"title":"t","content":"c"}"#),
Gate::Desk,
true,
),
("POST", "/api/desks/1/notes/1/image", None, Gate::Desk, true),
(
"POST",
"/api/desks/1/notes/1/images",
Some(r#"{"images":[]}"#),
Gate::Desk,
true,
),
(
"GET",
"/api/desks/1/note-images/x.png",
None,
Gate::Desk,
true,
),
("GET", "/api/peers", None, Gate::Open, true),
("POST", "/api/peers/pair", Some("{}"), Gate::Reader, false),
("POST", "/api/peers/join", Some("{}"), Gate::Reader, false),
("GET", "/api/peers/pair/nope", None, Gate::Open, true),
("DELETE", "/api/peers/pair/nope", None, Gate::Reader, true),
(
"POST",
"/api/peers/1/rename",
Some(r#"{"name":"x"}"#),
Gate::Reader,
true,
),
("POST", "/api/peers/1/mute", Some("{}"), Gate::Reader, true),
("POST", "/api/peers/1/remove", None, Gate::Reader, true),
("POST", "/api/peers/1/restore", None, Gate::Reader, true),
(
"POST",
"/api/peers/1/note",
Some(r#"{"text":"x"}"#),
Gate::Reader,
true,
),
("POST", "/api/peers/notes/1", Some("{}"), Gate::Reader, true),
(
"POST",
"/api/peers/offers/1",
Some("{}"),
Gate::Reader,
true,
),
(
"POST",
"/api/docs/nope/send",
Some("{}"),
Gate::Reader,
true,
),
(
"POST",
"/api/peers/1/desk",
Some(r#"{"desk":0}"#),
Gate::Desk,
true,
),
(
"POST",
"/api/docs/nope/keep",
Some(r#"{"desk":1}"#),
Gate::Desk,
true,
),
("POST", "/api/docs/nope/save", None, Gate::Desk, true),
("POST", "/api/docs/nope/unfile", None, Gate::Reader, true),
(
"POST",
"/api/peers/outbox/nope/retry",
None,
Gate::Reader,
true,
),
(
"POST",
"/api/docs/nope/reply",
Some(r#"{"text":"thanks"}"#),
Gate::Reader,
true,
),
(
"POST",
"/api/peers/1/receipts",
Some(r#"{"on":true}"#),
Gate::Reader,
true,
),
(
"POST",
"/api/desks/1/notes/1/tell",
None,
Gate::Reader,
true,
),
("GET", "/api/brief", None, Gate::Desk, true),
(
"POST",
"/api/brief",
Some(r#"{"on":true}"#),
Gate::Desk,
true,
),
("GET", "/api/asides", None, Gate::Desk, true),
(
"POST",
"/api/asides",
Some(r#"{"on":true}"#),
Gate::Desk,
true,
),
("POST", "/api/panes/nope/delete", None, Gate::Desk, true),
("POST", "/api/panes/nope/restore", None, Gate::Desk, true),
(
"POST",
"/api/panes/nope/rename",
Some(r#"{"name":"x"}"#),
Gate::Desk,
true,
),
(
"POST",
"/api/panes/nope/start",
Some(r#"{"cols":80,"rows":24}"#),
Gate::Desk,
true,
),
("POST", "/api/panes/nope/stop", None, Gate::Desk, true),
(
"POST",
"/api/panes/nope/agent",
Some("{}"),
Gate::Token,
true,
),
("GET", "/api/panes/nope/notes", None, Gate::Token, true),
(
"POST",
"/api/panes/nope/notes/1/tick",
None,
Gate::Token,
true,
),
(
"POST",
"/api/panes/nope/notes/1/mark",
None,
Gate::Token,
true,
),
(
"POST",
"/api/panes/nope/name",
Some(r#"{"name":"x"}"#),
Gate::Token,
true,
),
("GET", "/api/panes/nope/brief", None, Gate::Token, true),
("GET", "/api/panes/nope/changes", None, Gate::Token, true),
(
"GET",
"/api/panes/nope/keys/GH_TOKEN",
None,
Gate::Token,
true,
),
(
"POST",
"/api/panes/nope/leftoff",
Some("{}"),
Gate::Token,
true,
),
(
"POST",
"/api/panes/nope/suggest",
Some("{}"),
Gate::Token,
true,
),
("POST", "/api/panes/nope/paste", None, Gate::Desk, true),
(
"POST",
"/api/panes/nope/offer",
Some("{}"),
Gate::Token,
true,
),
(
"POST",
"/api/panes/nope/thread",
Some("{}"),
Gate::Token,
true,
),
(
"POST",
"/api/panes/nope/thread/move",
Some("{}"),
Gate::Token,
true,
),
("POST", "/api/panes/nope/ask", Some("{}"), Gate::Token, true),
(
"POST",
"/api/panes/nope/handover",
Some("{}"),
Gate::Token,
true,
),
(
"POST",
"/api/panes/nope/suggest-panel",
Some("{}"),
Gate::Token,
true,
),
(
"POST",
"/api/panes/nope/suggest-desk",
Some("{}"),
Gate::Token,
true,
),
(
"POST",
"/api/panes/nope/seen",
Some("{}"),
Gate::Token,
true,
),
("GET", "/api/panes/nope/band", None, Gate::Token, true),
("GET", "/api/panes/nope/turns/1", None, Gate::Token, true),
(
"POST",
"/api/panes/nope/turns/1",
Some("{}"),
Gate::Token,
true,
),
(
"POST",
"/api/panes/nope/note",
Some("{}"),
Gate::Token,
true,
),
("GET", "/api/desks/1/threads", None, Gate::Desk, true),
("GET", "/api/desks/1/widgets", None, Gate::Desk, true),
(
"POST",
"/api/panes/nope/widget",
Some("{}"),
Gate::Token,
true,
),
("POST", "/api/widgets", Some("{}"), Gate::Token, true),
("GET", "/api/widgets", None, Gate::Open, true),
("GET", "/sidebars", None, Gate::Open, true),
(
"POST",
"/api/widgets/nope/allow",
Some("{}"),
Gate::Desk,
true,
),
(
"POST",
"/api/widgets/nope/prefs",
Some("{}"),
Gate::Reader,
true,
),
(
"POST",
"/api/widgets/nope/retry",
Some("{}"),
Gate::Reader,
true,
),
(
"POST",
"/api/widgets/nope/tell",
Some("{}"),
Gate::Reader,
true,
),
(
"POST",
"/api/widgets/nope/remove",
Some("{}"),
Gate::Desk,
true,
),
(
"POST",
"/api/widgets/nope/restore",
Some("{}"),
Gate::Desk,
true,
),
(
"POST",
"/api/panes/nope/propose-widget",
Some("{}"),
Gate::Token,
true,
),
(
"POST",
"/api/desks/1/threads/1/move",
Some("{}"),
Gate::Desk,
true,
),
(
"POST",
"/api/desks/1/threads/1/remove",
None,
Gate::Desk,
true,
),
(
"POST",
"/api/desks/1/turns/1/answer",
Some("{}"),
Gate::Desk,
true,
),
(
"POST",
"/api/desks/1/turns/1/remove",
None,
Gate::Desk,
true,
),
(
"POST",
"/api/desks/1/suggestions/1/open",
None,
Gate::Desk,
true,
),
("GET", "/api/claude-mod", None, Gate::Desk, true),
(
"POST",
"/api/claude-mod",
Some(r#"{"on":true}"#),
Gate::Desk,
true,
),
("GET", "/desks", None, Gate::Open, true),
("GET", "/desk/1", None, Gate::Open, true),
];