lila/conf/routes

842 lines
57 KiB
Plaintext
Raw Normal View History

2021-06-19 23:53:52 -06:00
# Run `./lila playRoutes` after modifying this file
2013-03-18 17:36:22 -06:00
# Lobby
GET / controllers.Lobby.home
2014-12-17 17:02:59 -07:00
GET /lobby/seeks controllers.Lobby.seeks
2013-03-18 17:36:22 -06:00
# Should be handled by nginx mostly
OPTIONS / controllers.Options.root
OPTIONS /*url controllers.Options.all(url: String)
# Timeline
GET /timeline controllers.Timeline.home
POST /timeline/unsub/:channel controllers.Timeline.unsub(channel: String)
2015-09-21 02:08:48 -06:00
# Search
GET /games/search controllers.Search.index(page: Int ?= 1)
# Game export
POST /games/export/_ids controllers.Game.exportByIds
2018-05-06 18:10:47 -06:00
GET /games/export/:username controllers.Game.exportByUser(username: String)
2015-09-21 02:08:48 -06:00
# Bookmark
POST /bookmark/$gameId<\w{8}> controllers.Game.bookmark(gameId: String)
2013-07-31 09:21:42 -06:00
# TV
2013-07-31 10:21:45 -06:00
GET /tv controllers.Tv.index
2014-02-23 06:03:48 -07:00
GET /tv/frame controllers.Tv.frame
2016-01-22 23:17:56 -07:00
GET /tv/feed controllers.Tv.feed
GET /tv/channels controllers.Main.movedPermanently(to: String = "/api/tv/channels")
2015-06-16 10:46:30 -06:00
GET /tv/:chanKey controllers.Tv.onChannel(chanKey: String)
2019-04-06 19:43:03 -06:00
GET /tv/$gameId<\w{8}>/$color<white|black>/sides controllers.Tv.sides(gameId: String, color: String)
2015-09-20 03:21:32 -06:00
GET /games controllers.Tv.games
GET /games/:chanKey controllers.Tv.gamesChannel(chanKey: String)
2021-08-24 11:12:34 -06:00
GET /games/:chanKey/replacement/$gameId<\w{8}> controllers.Tv.gameChannelReplacement(chanKey: String, gameId: String, exclude: List[String])
GET /api/tv/channels controllers.Tv.channels
2021-03-30 05:22:37 -06:00
GET /api/tv/feed controllers.Tv.feed
GET /api/tv/:chanKey controllers.Tv.apiGamesChannel(chanKey: String)
2013-07-31 09:21:42 -06:00
# Relation
POST /rel/follow/:userId controllers.Relation.follow(userId: String)
POST /rel/unfollow/:userId controllers.Relation.unfollow(userId: String)
2021-09-20 09:53:02 -06:00
GET /api/rel/following controllers.Relation.apiFollowing
POST /api/rel/follow/:userId controllers.Relation.apiFollow(userId: String)
POST /api/rel/unfollow/:userId controllers.Relation.apiUnfollow(userId: String)
POST /rel/block/:userId controllers.Relation.block(userId: String)
POST /rel/unblock/:userId controllers.Relation.unblock(userId: String)
GET /@/:username/following controllers.Relation.following(username: String, page: Int ?= 1)
GET /@/:username/followers controllers.Relation.followers(username: String, page: Int ?= 1)
GET /rel/blocks controllers.Relation.blocks(page: Int ?= 1)
2015-11-26 21:05:59 -07:00
# Insight
POST /insights/refresh/:username controllers.Insight.refresh(username: String)
POST /insights/data/:username controllers.Insight.json(username: String)
2015-11-28 01:17:49 -07:00
GET /insights/:username controllers.Insight.index(username: String)
GET /insights/:username/:metric/:dimension controllers.Insight.path(username: String, metric: String, dimension: String, filters: String = "")
GET /insights/:username/:metric/:dimension/*filters controllers.Insight.path(username: String, metric: String, dimension: String, filters: String)
2015-07-18 11:59:23 -06:00
2016-05-11 10:21:03 -06:00
# User subpages
2015-12-11 22:49:00 -07:00
GET /@/:username/tournaments/:path controllers.UserTournament.path(username: String, path: String, page: Int ?= 1)
2021-08-29 03:58:31 -06:00
# User blog
GET /@/:username/blog controllers.Ublog.index(username: String, page: Int ?= 1)
2021-09-06 12:00:07 -06:00
GET /@/:username/blog/:slug/:id controllers.Ublog.post(username: String, slug: String, id: String)
2021-08-30 02:05:36 -06:00
GET /@/:username/blog/drafts controllers.Ublog.drafts(username: String, page: Int ?= 1)
2021-08-29 04:17:48 -06:00
GET /@/:username/blog/new controllers.Ublog.form(username: String)
2021-09-07 09:16:24 -06:00
GET /@/:username/blog.atom controllers.Ublog.userAtom(username: String)
2021-09-06 12:00:07 -06:00
POST /ublog/new controllers.Ublog.create
2021-09-13 13:27:19 -06:00
GET /ublog/$id<\w{8}>/redirect controllers.Ublog.redirect(id: String)
2021-09-06 12:45:45 -06:00
GET /ublog/$id<\w{8}>/edit controllers.Ublog.edit(id: String)
POST /ublog/$id<\w{8}>/edit controllers.Ublog.update(id: String)
POST /ublog/$id<\w{8}>/del controllers.Ublog.delete(id: String)
POST /ublog/$id<\w{8}>/like controllers.Ublog.like(id: String, v: Boolean)
2021-09-07 06:16:07 -06:00
POST /ublog/:blogId/tier controllers.Ublog.setTier(blogId: String)
POST /upload/image/ublog/$id<\w{8}> controllers.Ublog.image(id: String)
2021-08-29 03:58:31 -06:00
2013-03-20 08:23:41 -06:00
# User
GET /api/stream/:username/mod controllers.User.mod(username: String)
2014-04-22 17:22:57 -06:00
POST /@/:username/note controllers.User.writeNote(username: String)
2018-07-16 04:00:07 -06:00
POST /note/delete/:id controllers.User.deleteNote(id: String)
GET /@/:username/mini controllers.User.showMini(username: String)
GET /@/:username/tv controllers.User.tv(username: String)
2015-12-23 20:41:28 -07:00
GET /@/:username/perf/:perfKey controllers.User.perfStat(username: String, perfKey: String)
2017-07-22 12:59:24 -06:00
GET /@/:username/all controllers.User.gamesAll(username: String, page: Int ?= 1)
GET /@/:username/download controllers.User.download(username: String)
2017-07-22 12:59:24 -06:00
GET /@/:username/:filterName controllers.User.games(username: String, filterName: String, page: Int ?= 1)
2013-03-20 08:23:41 -06:00
GET /@/:username controllers.User.show(username: String)
2016-08-26 06:46:42 -06:00
GET /player/myself controllers.User.myself
GET /player/opponents controllers.User.opponents
2014-08-02 11:33:46 -06:00
GET /player controllers.User.list
2018-04-07 15:52:54 -06:00
GET /player/top/:nb/:perfKey controllers.User.topNb(nb: Int, perfKey: String)
GET /player/top/week controllers.User.topWeek
GET /player/online controllers.User.online
GET /player/autocomplete controllers.User.autocomplete
2013-10-20 07:46:29 -06:00
2017-05-03 08:22:50 -06:00
GET /dasher controllers.Dasher.get
2014-05-31 11:01:43 -06:00
# Blog
2020-02-26 12:58:03 -07:00
GET /blog controllers.Blog.index(page: Int ?= 1)
2019-11-25 07:50:47 -07:00
GET /blog/all controllers.Blog.all
2021-09-05 14:07:21 -06:00
GET /blog/$year<2\d{3}> controllers.Blog.year(year: Int)
GET /blog/discuss/:id controllers.Blog.discuss(id: String)
2021-09-09 08:00:05 -06:00
GET /blog/topic controllers.Ublog.topics
2021-09-09 00:36:24 -06:00
GET /blog/topic/:topic controllers.Ublog.topic(topic: String, page: Int ?= 1)
2018-03-14 08:31:09 -06:00
GET /blog.atom controllers.Blog.atom
2020-04-21 09:42:23 -06:00
GET /blog.txt controllers.Blog.sitemapTxt
2021-09-05 14:07:21 -06:00
GET /blog/friends controllers.Ublog.friends(page: Int ?= 1)
2021-09-08 05:44:39 -06:00
GET /blog/liked controllers.Ublog.liked(page: Int ?= 1)
2021-09-09 13:54:42 -06:00
GET /blog/community controllers.Ublog.community(lang: String = "all", page: Int ?= 1)
GET /blog/community/:lang controllers.Ublog.community(lang: String, page: Int ?= 1)
GET /blog/:id/:slug controllers.Blog.show(id: String, slug: String, ref: Option[String] ?= None)
2014-05-31 11:01:43 -06:00
2014-12-16 05:46:36 -07:00
# Training - Coordinate
GET /training/coordinate controllers.Coordinate.home
POST /training/coordinate/score controllers.Coordinate.score
POST /training/coordinate/color controllers.Coordinate.color
2014-05-03 17:45:14 -06:00
# Training - Puzzle
GET /training controllers.Puzzle.home
GET /training/daily controllers.Puzzle.daily
GET /training/frame controllers.Puzzle.frame
2020-11-11 02:08:19 -07:00
GET /training/export/gif/thumbnail/:id.gif controllers.Export.puzzleThumbnail(id: String)
2020-11-24 02:09:14 -07:00
GET /training/themes controllers.Puzzle.themes
GET /training/of-player controllers.Puzzle.ofPlayer(name: Option[String] ?= None, page: Int ?= 1)
2021-01-05 02:14:18 -07:00
GET /training/dashboard/$days<\d+> controllers.Puzzle.dashboard(days: Int, path: String = "home")
GET /training/dashboard/$days<\d+>/:path controllers.Puzzle.dashboard(days: Int, path: String)
2020-12-29 12:17:59 -07:00
GET /training/replay/$days<\d+>/:theme controllers.Puzzle.replay(days: Int, theme: String)
2021-01-12 04:35:05 -07:00
GET /training/history controllers.Puzzle.history(page: Int ?= 1)
2020-12-09 10:11:32 -07:00
GET /training/batch controllers.Puzzle.mobileBcBatchSelect
POST /training/batch controllers.Puzzle.mobileBcBatchSolve
GET /training/new controllers.Puzzle.mobileBcNew
2020-12-15 03:49:43 -07:00
GET /training/$numericalId<\d{6,}>/load controllers.Puzzle.mobileBcLoad(numericalId: Long)
POST /training/$numericalId<\d{6,}>/vote controllers.Puzzle.mobileBcVote(numericalId: Long)
2020-11-28 11:37:57 -07:00
GET /training/:themeOrId controllers.Puzzle.show(themeOrId: String)
2020-11-29 16:27:06 -07:00
GET /training/:theme/$id<\w{5}> controllers.Puzzle.showWithTheme(theme: String, id: String)
2020-12-15 03:49:43 -07:00
POST /training/$numericalId<\d{6,}>/round2 controllers.Puzzle.mobileBcRound(numericalId: Long)
2020-11-24 02:09:14 -07:00
POST /training/$id<\w{5}>/vote controllers.Puzzle.vote(id: String)
2020-12-03 14:31:42 -07:00
POST /training/$id<\w{5}>/vote/:theme controllers.Puzzle.voteTheme(id: String, theme: String)
2020-11-27 08:24:53 -07:00
POST /training/complete/:theme/$id<\w{5}> controllers.Puzzle.complete(theme: String, id: String)
2020-12-06 03:45:55 -07:00
POST /training/difficulty/:theme controllers.Puzzle.setDifficulty(theme: String)
2021-03-28 05:40:14 -06:00
# Puzzle Streak
GET /streak controllers.Puzzle.streak
2021-03-28 05:40:14 -06:00
2021-01-22 11:37:49 -07:00
# Puzzle Storm
GET /storm controllers.Storm.home
2021-01-25 05:15:36 -07:00
POST /storm controllers.Storm.record
2021-01-25 14:30:03 -07:00
GET /storm/dashboard controllers.Storm.dashboard(page: Int ?= 1)
2021-01-28 02:15:10 -07:00
GET /storm/dashboard/:username controllers.Storm.dashboardOf(username: String, page: Int ?= 1)
2021-02-18 04:06:06 -07:00
GET /api/storm/dashboard/:username controllers.Storm.apiDashboardOf(username: String, days: Int ?= 30)
2021-01-22 11:37:49 -07:00
2021-03-03 12:11:22 -07:00
# Puzzle Racer
GET /racer controllers.Racer.home
2021-03-04 02:20:02 -07:00
POST /racer controllers.Racer.create
2021-03-03 12:11:22 -07:00
GET /racer/:id controllers.Racer.show(id: String)
2021-03-13 09:45:57 -07:00
GET /racer/:id/rematch controllers.Racer.rematch(id: String)
2021-03-14 04:48:38 -06:00
POST /racer/lobby controllers.Racer.lobby
2021-03-03 12:11:22 -07:00
# User Analysis
GET /analysis/help controllers.UserAnalysis.help
2019-12-05 08:46:00 -07:00
GET /analysis/*something controllers.UserAnalysis.parseArg(something: String)
GET /analysis controllers.UserAnalysis.index
2016-02-24 22:41:27 -07:00
POST /analysis/pgn controllers.UserAnalysis.pgn
2016-05-11 10:21:03 -06:00
# Study
GET /study controllers.Study.allDefault(page: Int ?= 1)
2021-08-27 06:43:19 -06:00
GET /study/staff-picks controllers.Study.staffPicks
GET /study/all/:order controllers.Study.all(order: String, page: Int ?= 1)
GET /study/mine/:order controllers.Study.mine(order: String, page: Int ?= 1)
GET /study/member/:order controllers.Study.mineMember(order: String, page: Int ?= 1)
GET /study/public/:order controllers.Study.minePublic(order: String, page: Int ?= 1)
GET /study/private/:order controllers.Study.minePrivate(order: String, page: Int ?= 1)
GET /study/likes/:order controllers.Study.mineLikes(order: String, page: Int ?= 1)
GET /study/by/:username controllers.Study.byOwnerDefault(username: String, page: Int ?= 1)
2021-03-28 14:14:39 -06:00
GET /study/by/:username/export.pgn controllers.Study.export(username: String)
GET /study/by/:username/:order controllers.Study.byOwner(username: String, order: String, page: Int ?= 1)
2016-07-25 12:14:43 -06:00
GET /study/search controllers.Study.search(q: String ?= "", page: Int ?= 1)
2016-02-27 04:30:38 -07:00
GET /study/$id<\w{8}> controllers.Study.show(id: String)
POST /study controllers.Study.create
POST /study/as controllers.Study.createAs
GET /study/$id<\w{8}>.pgn controllers.Study.pgn(id: String)
2016-10-21 07:02:57 -06:00
GET /study/$id<\w{8}>/$chapterId<\w{8}>.pgn controllers.Study.chapterPgn(id: String, chapterId: String)
GET /study/$id<\w{8}>/$chapterId<\w{8}>.gif controllers.Study.chapterGif(id: String, chapterId: String)
2016-05-12 08:21:25 -06:00
POST /study/$id<\w{8}>/delete controllers.Study.delete(id: String)
2016-08-31 10:00:45 -06:00
GET /study/$id<\w{8}>/clone controllers.Study.cloneStudy(id: String)
POST /study/$id<\w{8}>/cloneApply controllers.Study.cloneApply(id: String)
GET /study/$id<\w{8}>/$chapterId<\w{8}> controllers.Study.chapter(id: String, chapterId: String)
2016-10-22 03:22:30 -06:00
GET /study/$id<\w{8}>/$chapterId<\w{8}>/meta controllers.Study.chapterMeta(id: String, chapterId: String)
2016-10-08 12:49:51 -06:00
GET /study/embed/$id<\w{8}>/$chapterId<\w{8}> controllers.Study.embed(id: String, chapterId: String)
POST /study/$id<\w{8}>/clear-chat controllers.Study.clearChat(id: String)
2018-04-26 09:56:14 -06:00
POST /study/$id<\w{8}>/import-pgn controllers.Study.importPgn(id: String)
2018-11-22 03:06:27 -07:00
GET /study/$id<\w{8}>/multi-board controllers.Study.multiBoard(id: String, page: Int ?= 1)
2020-03-02 13:23:03 -07:00
POST /study/$id<\w{8}>/admin controllers.Study.admin(id: String)
2020-02-25 15:15:02 -07:00
GET /study/topic controllers.Study.topics
POST /study/topic controllers.Study.setTopics
2020-02-24 13:07:08 -07:00
GET /study/topic/:topic/:order controllers.Study.byTopic(topic: String, order: String, page: Int ?= 1)
2020-02-21 17:47:45 -07:00
GET /study/topic/autocomplete controllers.Study.topicAutocomplete
GET /study/glyphs/:lang.json controllers.Study.glyphs(lang)
GET /api/study/$id<\w{8}>.pgn controllers.Study.apiPgn(id: String)
2016-02-27 04:30:38 -07:00
2017-09-20 19:26:15 -06:00
# Relay
2021-04-23 13:22:10 -06:00
GET /broadcast controllers.RelayTour.index(page: Int ?= 1)
2021-04-23 04:16:55 -06:00
GET /broadcast/new controllers.RelayTour.form
POST /broadcast/new controllers.RelayTour.create
GET /broadcast/:rs/$anyId<\w{8}> controllers.RelayTour.redirectOrApiTour(rs: String, anyId: String)
2021-09-09 13:16:19 -06:00
GET /api/broadcast/$tourId<\w{8}>.pgn controllers.RelayTour.pgn(tourId: String)
2021-04-23 04:16:55 -06:00
GET /broadcast/$tourId<\w{8}>/edit controllers.RelayTour.edit(tourId: String)
POST /broadcast/$tourId<\w{8}>/edit controllers.RelayTour.update(tourId: String)
2021-04-23 13:22:10 -06:00
GET /broadcast/$tourId<\w{8}>/new controllers.RelayRound.form(tourId: String)
POST /broadcast/$tourId<\w{8}>/new controllers.RelayRound.create(tourId: String)
GET /broadcast/:ts/:rs/$roundId<\w{8}> controllers.RelayRound.show(ts: String, rs: String, roundId: String)
GET /broadcast/:ts/:rs/$roundId<\w{8}>/$chapterId<\w{8}> controllers.RelayRound.chapter(ts: String, rs: String, roundId: String, chapterId: String)
GET /broadcast/round/$roundId<\w{8}>/edit controllers.RelayRound.edit(roundId: String)
POST /broadcast/round/$roundId<\w{8}>/edit controllers.RelayRound.update(roundId: String)
POST /broadcast/round/$roundId<\w{8}>/reset controllers.RelayRound.reset(roundId: String)
POST /broadcast/round/$roundId<\w{8}>/push controllers.RelayRound.push(roundId: String)
2021-09-23 02:48:01 -06:00
GET /broadcast/:ts/:rs/$roundId<\w{8}>.pgn controllers.RelayRound.pgn(ts: String, rs: String, roundId: String)
GET /api/broadcast/round/$roundId<\w{8}>.pgn controllers.RelayRound.apiPgn(roundId: String)
2021-09-23 02:18:10 -06:00
GET /api/stream/broadcast/round/$roundId<\w{8}>.pgn controllers.RelayRound.stream(roundId: String)
2017-09-20 19:26:15 -06:00
2016-06-23 01:45:11 -06:00
# Learn
GET /learn controllers.Learn.index
2016-07-02 13:34:09 -06:00
POST /learn/score controllers.Learn.score
2016-07-05 04:51:18 -06:00
POST /learn/reset controllers.Learn.reset
2016-06-23 01:45:11 -06:00
2016-07-14 13:50:18 -06:00
# Patron
2016-07-10 14:12:22 -06:00
GET /patron controllers.Plan.index
GET /patron/thanks controllers.Plan.thanks
2016-07-19 17:26:00 -06:00
GET /patron/list controllers.Plan.list
2016-07-10 14:12:22 -06:00
POST /patron/switch controllers.Plan.switch
2016-07-13 08:14:20 -06:00
POST /patron/cancel controllers.Plan.cancel
2016-07-10 14:12:22 -06:00
POST /patron/webhook controllers.Plan.webhook
2021-06-02 04:06:06 -06:00
POST /patron/stripe/checkout controllers.Plan.stripeCheckout
2016-07-19 16:57:26 -06:00
POST /patron/ipn controllers.Plan.payPalIpn
2021-06-02 04:06:06 -06:00
POST /patron/stripe/update-payment controllers.Plan.updatePayment
GET /patron/stripe/update-payment controllers.Plan.updatePaymentCallback
2016-07-19 16:57:26 -06:00
GET /features controllers.Plan.features
2020-06-09 00:25:21 -06:00
GET /donate controllers.Main.movedPermanently(to: String = "/patron")
2016-06-05 15:31:17 -06:00
2017-01-21 06:51:29 -07:00
# Practice
2017-01-23 04:02:04 -07:00
GET /practice controllers.Practice.index
2017-02-04 03:06:02 -07:00
GET /practice/load/:studyId/:chapterId controllers.Practice.chapter(studyId: String, chapterId: String)
GET /practice/config controllers.Practice.config
POST /practice/config controllers.Practice.configSave
POST /practice/reset controllers.Practice.reset
GET /practice/:sectionId controllers.Practice.showSection(sectionId: String)
GET /practice/:sectionId/:studySlug controllers.Practice.showStudySlug(sectionId: String, studySlug: String)
2017-01-23 04:02:04 -07:00
GET /practice/:sectionId/:studySlug/:studyId controllers.Practice.show(sectionId: String, studySlug: String, studyId: String)
GET /practice/:sectionId/:studySlug/:studyId/:chapterId controllers.Practice.showChapter(sectionId: String, studySlug: String, studyId: String, chapterId: String)
2017-01-23 04:02:04 -07:00
POST /practice/complete/:chapterId/:moves controllers.Practice.complete(chapterId: String, moves: Int)
2017-01-21 06:51:29 -07:00
2017-12-29 22:05:58 -07:00
# Streamer
GET /streamer controllers.Streamer.index(page: Int ?= 1)
GET /api/streamer/featured controllers.Streamer.featured
GET /streamer/live controllers.Streamer.live
2017-12-29 22:05:58 -07:00
GET /streamer/edit controllers.Streamer.edit
2018-01-02 08:00:13 -07:00
POST /streamer/new controllers.Streamer.create
2017-12-29 22:05:58 -07:00
POST /streamer/edit controllers.Streamer.editApply
2017-12-31 07:04:29 -07:00
POST /streamer/approval/request controllers.Streamer.approvalRequest
2017-12-29 22:05:58 -07:00
GET /streamer/picture/edit controllers.Streamer.picture
POST /upload/image/streamer controllers.Streamer.pictureApply
2017-12-29 22:05:58 -07:00
GET /streamer/:username controllers.Streamer.show(username: String)
2021-03-19 13:11:18 -06:00
GET /streamer/:username/redirect controllers.Streamer.redirect(username: String)
2017-12-29 22:05:58 -07:00
# Round
2014-06-29 05:07:17 -06:00
GET /$gameId<\w{8}> controllers.Round.watcher(gameId: String, color: String = "white")
GET /$gameId<\w{8}>/$color<white|black> controllers.Round.watcher(gameId: String, color: String)
GET /$fullId<\w{12}> controllers.Round.player(fullId: String)
2017-08-17 16:07:43 -06:00
GET /$gameId<\w{8}>/$color<white|black>/sides controllers.Round.sides(gameId: String, color: String)
2014-06-29 05:07:17 -06:00
GET /$gameId<\w{8}>/continue/:mode controllers.Round.continue(gameId: String, mode: String)
2016-06-14 05:13:41 -06:00
GET /$gameId<\w{8}>/note controllers.Round.readNote(gameId: String)
2014-12-07 04:32:18 -07:00
POST /$gameId<\w{8}>/note controllers.Round.writeNote(gameId: String)
GET /$gameId<\w{8}>/mini controllers.Round.mini(gameId: String, color: String = "white")
GET /$gameId<\w{8}>/$color<white|black>/mini controllers.Round.mini(gameId: String, color: String)
2016-02-17 09:00:47 -07:00
GET /$fullId<\w{12}>/mini controllers.Round.miniFullId(fullId: String)
2014-06-29 05:07:17 -06:00
GET /$gameId<\w{8}>/edit controllers.Editor.game(gameId: String)
GET /$gameId<\w{8}>/$color<white|black>/analysis controllers.UserAnalysis.game(gameId: String, color: String)
2015-09-16 15:03:56 -06:00
POST /$fullId<\w{12}>/forecasts controllers.UserAnalysis.forecasts(fullId: String)
POST /$fullId<\w{12}>/forecasts/:uci controllers.UserAnalysis.forecastsOnMyTurn(fullId: String, uci: String)
POST /$fullId<\w{12}>/resign controllers.Round.resign(fullId: String)
2013-12-23 11:56:30 -07:00
2016-10-22 08:08:11 -06:00
GET /embed/$gameId<\w{8}> controllers.Analyse.embed(gameId: String, color: String = "white")
GET /embed/$gameId<\w{8}>/$color<white|black> controllers.Analyse.embed(gameId: String, color: String)
POST /$gameId<\w{8}>/delete controllers.Game.delete(gameId: String)
GET /round-next/$gameId<\w{8}> controllers.Round.next(gameId: String)
GET /whats-next/$fullId<\w{12}> controllers.Round.whatsNext(fullId: String)
# Tournament
GET /tournament controllers.Tournament.home
GET /tournament/featured controllers.Tournament.featured
2013-05-12 09:02:45 -06:00
GET /tournament/new controllers.Tournament.form
POST /tournament/new controllers.Tournament.create
2019-10-02 10:50:09 -06:00
GET /tournament/team-battle/new/:teamId controllers.Tournament.teamBattleForm(teamId: String)
2019-10-03 11:49:44 -06:00
GET /tournament/team-battle/edit/:id controllers.Tournament.teamBattleEdit(id: String)
POST /tournament/team-battle/edit/:id controllers.Tournament.teamBattleUpdate(id: String)
2017-12-11 08:51:09 -07:00
GET /tournament/calendar controllers.Tournament.calendar
GET /tournament/history controllers.Tournament.history(freq: String = "unique", page: Int ?= 1)
GET /tournament/history/:freq controllers.Tournament.history(freq: String, page: Int ?= 1)
2014-07-23 15:08:59 -06:00
GET /tournament/$id<\w{8}> controllers.Tournament.show(id: String)
GET /tournament/$id<\w{8}>/standing/:page controllers.Tournament.standing(id: String, page: Int)
2018-01-08 11:03:17 -07:00
GET /tournament/$id<\w{8}>/page-of/:userId controllers.Tournament.pageOf(id: String, userId: String)
2014-07-23 15:08:59 -06:00
POST /tournament/$id<\w{8}>/join controllers.Tournament.join(id: String)
2018-04-04 17:54:13 -06:00
POST /tournament/$id<\w{8}>/withdraw controllers.Tournament.pause(id: String)
2015-10-02 14:52:00 -06:00
GET /tournament/$id<\w{8}>/player/:user controllers.Tournament.player(id: String, user: String)
2019-10-05 13:52:28 -06:00
GET /tournament/$id<\w{8}>/team/:team controllers.Tournament.teamInfo(id: String, team: String)
POST /tournament/$id<\w{8}>/terminate controllers.Tournament.terminate(id: String)
2020-03-20 17:38:51 -06:00
GET /tournament/$id<\w{8}>/edit controllers.Tournament.edit(id: String)
POST /tournament/$id<\w{8}>/edit controllers.Tournament.update(id: String)
GET /tournament/$id<\w{8}>/teams controllers.Tournament.battleTeams(id: String)
2014-07-23 15:08:59 -06:00
GET /tournament/help controllers.Tournament.help(system: Option[String] ?= None)
2016-10-17 08:17:55 -06:00
GET /tournament/leaderboard controllers.Tournament.leaderboard
2017-12-05 09:38:16 -07:00
GET /tournament/shields controllers.Tournament.shields
2019-04-30 19:04:42 -06:00
GET /tournament/shields/:categ controllers.Tournament.categShields(categ: String)
2013-12-23 11:56:30 -07:00
2016-03-28 05:08:48 -06:00
# Tournament CRUD
2018-09-21 10:52:02 -06:00
GET /tournament/manager controllers.TournamentCrud.index(page: Int ?= 1)
2019-12-05 08:46:00 -07:00
GET /tournament/manager/clone/$id<\w{8}> controllers.TournamentCrud.cloneT(id: String)
2016-03-28 05:08:48 -06:00
GET /tournament/manager/$id<\w{8}> controllers.TournamentCrud.edit(id: String)
POST /tournament/manager/$id<\w{8}> controllers.TournamentCrud.update(id: String)
GET /tournament/manager/new controllers.TournamentCrud.form
POST /tournament/manager controllers.TournamentCrud.create
2020-04-29 10:31:34 -06:00
# Swiss
2020-05-08 12:02:39 -06:00
GET /swiss controllers.Swiss.home
2020-04-29 10:31:34 -06:00
GET /swiss/new/:teamId controllers.Swiss.form(teamId: String)
POST /swiss/new/:teamId controllers.Swiss.create(teamId: String)
GET /swiss/$id<\w{8}> controllers.Swiss.show(id: String)
GET /swiss/$id<\w{8}>/round/:round controllers.Swiss.round(id: String, round: Int)
2020-05-12 17:54:15 -06:00
GET /swiss/$id<\w{8}>.trf controllers.Swiss.exportTrf(id: String)
2020-05-03 17:50:10 -06:00
POST /swiss/$id<\w{8}>/join controllers.Swiss.join(id: String)
2020-05-06 16:00:04 -06:00
POST /swiss/$id<\w{8}>/withdraw controllers.Swiss.withdraw(id: String)
2020-05-04 00:31:50 -06:00
GET /swiss/$id<\w{8}>/edit controllers.Swiss.edit(id: String)
POST /swiss/$id<\w{8}>/edit controllers.Swiss.update(id: String)
POST /swiss/$id<\w{8}>/terminate controllers.Swiss.terminate(id: String)
2020-05-04 15:16:36 -06:00
GET /swiss/$id<\w{8}>/standing/:page controllers.Swiss.standing(id: String, page: Int)
2020-05-07 13:40:43 -06:00
GET /swiss/$id<\w{8}>/page-of/:user controllers.Swiss.pageOf(id: String, user: String)
2020-05-05 16:18:58 -06:00
GET /swiss/$id<\w{8}>/player/:user controllers.Swiss.player(id: String, user: String)
2020-05-15 12:15:14 -06:00
POST /swiss/$id<\w{8}>/schedule-next-round controllers.Swiss.scheduleNextRound(id: String)
2020-04-29 10:31:34 -06:00
2015-03-30 16:40:26 -06:00
# Simul
GET /simul controllers.Simul.home
GET /simul/new controllers.Simul.form
POST /simul/new controllers.Simul.create
2015-04-03 07:33:31 -06:00
GET /simul/reload controllers.Simul.homeReload
GET /simul/$id<\w{8}> controllers.Simul.show(id: String)
2020-08-03 10:52:03 -06:00
GET /simul/$id<\w{8}>/edit controllers.Simul.edit(id: String)
POST /simul/$id<\w{8}>/edit controllers.Simul.update(id: String)
2019-10-16 05:07:28 -06:00
POST /simul/$id<\w{8}>/host-ping controllers.Simul.hostPing(id: String)
POST /simul/$id<\w{8}>/accept/:user controllers.Simul.accept(id: String, user: String)
POST /simul/$id<\w{8}>/reject/:user controllers.Simul.reject(id: String, user: String)
POST /simul/$id<\w{8}>/start controllers.Simul.start(id: String)
POST /simul/$id<\w{8}>/abort controllers.Simul.abort(id: String)
2015-04-03 15:04:59 -06:00
POST /simul/$id<\w{8}>/join/:variant controllers.Simul.join(id: String, variant: String)
POST /simul/$id<\w{8}>/withdraw controllers.Simul.withdraw(id: String)
2015-03-30 16:40:26 -06:00
# Team
2013-05-06 14:49:12 -06:00
GET /team controllers.Team.home(page: Int ?= 1)
GET /team/new controllers.Team.form
POST /team/new controllers.Team.create
GET /team/me controllers.Team.mine
GET /team/leader controllers.Team.leader
2015-09-09 09:32:49 -06:00
GET /team/all controllers.Team.all(page: Int ?= 1)
2013-04-09 12:58:34 -06:00
GET /team/requests controllers.Team.requests
2013-05-06 14:49:12 -06:00
GET /team/search controllers.Team.search(text: String ?= "", page: Int ?= 1)
2019-10-02 10:50:09 -06:00
GET /team/autocomplete controllers.Team.autocomplete
GET /team/:id controllers.Team.show(id: String, page: Int ?= 1, mod: Boolean ?= false)
2013-05-06 14:49:12 -06:00
POST /team/:id/join controllers.Team.join(id: String)
POST /team/:id/quit controllers.Team.quit(id: String)
GET /team/:id/request/new controllers.Team.requestForm(id: String)
POST /team/:id/request/new controllers.Team.requestCreate(id: String)
POST /team/:id/request/process controllers.Team.requestProcess(id: String)
GET /team/:id/declined-requests controllers.Team.declinedRequests(id: String, page: Int ?=1)
2013-05-06 14:49:12 -06:00
GET /team/:id/edit controllers.Team.edit(id: String)
POST /team/:id/edit controllers.Team.update(id: String)
GET /team/:id/kick controllers.Team.kickForm(id: String)
POST /team/:id/kick controllers.Team.kick(id: String)
2019-07-23 06:39:25 -06:00
POST /team/:id/kick/:user controllers.Team.kickUser(id: String, user: String)
GET /team/:id/leaders controllers.Team.leadersForm(id: String)
POST /team/:id/leaders controllers.Team.leaders(id: String)
POST /team/:id/close controllers.Team.close(id: String)
2020-07-23 04:33:04 -06:00
POST /team/:id/disable controllers.Team.disable(id: String)
2020-04-26 12:25:40 -06:00
GET /team/:id/tournaments controllers.Team.tournaments(id: String)
GET /team/:id/pm-all controllers.Team.pmAll(id: String)
POST /team/:id/pm-all controllers.Team.pmAllSubmit(id: String)
2020-07-10 09:06:46 -06:00
POST /team/:id/subscribe controllers.Team.subscribe(id: String)
2020-04-12 11:20:25 -06:00
# Team API
GET /api/team/all controllers.Team.apiAll(page: Int ?= 1)
2020-05-10 09:02:52 -06:00
GET /api/team/search controllers.Team.apiSearch(text: String ?= "", page: Int ?= 1)
2020-04-24 10:19:32 -06:00
GET /api/team/of/:username controllers.Team.apiTeamsOf(username: String)
2020-04-12 11:31:33 -06:00
GET /api/team/:id controllers.Team.apiShow(id: String)
GET /api/team/:id/users controllers.Team.users(id: String)
GET /api/team/:id/arena controllers.Tournament.byTeam(id: String)
2020-07-21 04:28:25 -06:00
GET /api/team/:id/swiss controllers.Swiss.byTeam(id: String)
# Analyse
2015-06-27 11:01:49 -06:00
POST /$gameId<\w{8}>/request-analysis controllers.Analyse.requestAnalysis(gameId: String)
2013-12-23 11:56:30 -07:00
2020-03-04 02:40:27 -07:00
GET /game/export/$gameId<\w{8}> controllers.Game.exportOne(gameId: String)
GET /game/export/$gameId<\w{8}>.pgn controllers.Game.exportOne(gameId: String)
2020-03-05 11:40:33 -07:00
GET /game/export/png/$gameId<\w{8}>.png controllers.Export.legacyGameThumbnail(gameId: String)
GET /game/export/gif/thumbnail/$gameId<\w{8}>.gif controllers.Export.gameThumbnail(gameId: String)
2020-03-04 02:40:27 -07:00
GET /game/export/gif/$gameId<\w{8}>.gif controllers.Export.gif(gameId: String, color: String = "white")
GET /game/export/gif/$color<white|black>/$gameId<\w{8}>.gif controllers.Export.gif(gameId: String, color: String)
2016-03-11 10:09:59 -07:00
# Fishnet
GET /fishnet controllers.Main.movedPermanently(to: String = "https://github.com/niklasf/fishnet")
2020-04-14 17:02:14 -06:00
POST /fishnet/acquire controllers.Fishnet.acquire(slow: Boolean ?= false)
POST /fishnet/analysis/$workId<\w{8}> controllers.Fishnet.analysis(workId: String, slow: Boolean ?= false, stop: Boolean ?= false)
2016-03-14 22:53:39 -06:00
POST /fishnet/abort/$workId<\w{8}> controllers.Fishnet.abort(workId: String)
2016-03-22 11:48:54 -06:00
GET /fishnet/key/$key<\w{8}> controllers.Fishnet.keyExists(key: String)
2017-01-08 13:56:36 -07:00
GET /fishnet/status controllers.Fishnet.status
2016-03-11 10:09:59 -07:00
2013-10-19 09:22:32 -06:00
# Pref
POST /pref/:name controllers.Pref.set(name: String)
GET /account/preferences/:categ controllers.Pref.form(categ: String)
POST /account/preferences controllers.Pref.formApply
2013-12-23 11:56:30 -07:00
# Setup
2013-05-08 20:00:13 -06:00
GET /setup/ai controllers.Setup.aiForm
POST /setup/ai controllers.Setup.ai
2014-05-24 10:43:09 -06:00
GET /setup/friend controllers.Setup.friendForm(user: Option[String] ?= None)
POST /setup/friend controllers.Setup.friend(user: Option[String] ?= None)
2013-05-08 20:00:13 -06:00
GET /setup/hook controllers.Setup.hookForm
2019-07-13 12:02:50 -06:00
POST /setup/hook/:sri/like/:gameId controllers.Setup.like(sri: String, gameId: String)
POST /setup/hook/:sri controllers.Setup.hook(sri: String)
2013-05-08 20:00:13 -06:00
GET /setup/filter controllers.Setup.filterForm
GET /setup/validate-fen controllers.Setup.validateFen
2013-12-23 11:56:30 -07:00
2016-01-26 22:56:30 -07:00
# Challenge
GET /challenge controllers.Challenge.all
GET /challenge/$id<\w{8}> controllers.Challenge.show(id: String, color: Option[String] ?= None)
POST /challenge/$id<\w{8}>/accept controllers.Challenge.accept(id: String, color: Option[String] ?= None)
2016-01-31 06:44:12 -07:00
POST /challenge/$id<\w{8}>/decline controllers.Challenge.decline(id: String)
2016-01-30 03:27:41 -07:00
POST /challenge/$id<\w{8}>/cancel controllers.Challenge.cancel(id: String)
POST /challenge/$id<\w{8}>/to-friend controllers.Challenge.toFriend(id: String)
POST /challenge/rematch-of/$id<\w{8}> controllers.Challenge.rematchOf(id: String)
2016-01-26 22:56:30 -07:00
# Notify
2021-09-26 09:10:22 -06:00
GET /notify controllers.Notify.recent(page: Int ?= 1)
POST /notify/clear controllers.Notify.clear
2015-03-22 06:38:01 -06:00
# Video
GET /video controllers.Video.index
2015-03-24 14:39:45 -06:00
GET /video/tags controllers.Video.tags
2015-03-22 10:52:26 -06:00
GET /video/author/:author controllers.Video.author(author: String)
2015-03-22 08:01:57 -06:00
GET /video/:id controllers.Video.show(id: String)
2015-03-22 06:38:01 -06:00
# I18n
2014-12-31 09:15:34 -07:00
POST /translation/select controllers.I18n.select
2013-12-23 11:56:30 -07:00
# Authentication
2013-04-09 12:58:34 -06:00
GET /login controllers.Auth.login
POST /login controllers.Auth.authenticate
2017-08-24 09:24:00 -06:00
GET /logout controllers.Auth.logoutGet
POST /logout controllers.Auth.logout
2013-04-09 12:58:34 -06:00
GET /signup controllers.Auth.signup
POST /signup controllers.Auth.signupPost
2018-03-29 13:59:31 -06:00
GET /signup/check-your-email controllers.Auth.checkYourEmail
2018-03-29 15:46:29 -06:00
POST /signup/fix-email controllers.Auth.fixEmail
2015-06-25 08:54:26 -06:00
GET /signup/confirm/:token controllers.Auth.signupConfirmEmail(token: String)
2014-12-14 17:32:18 -07:00
GET /password/reset controllers.Auth.passwordReset
2015-06-25 09:49:48 -06:00
POST /password/reset/send controllers.Auth.passwordResetApply
2014-12-14 17:32:18 -07:00
GET /password/reset/sent/:email controllers.Auth.passwordResetSent(email: String)
GET /password/reset/confirm/:token controllers.Auth.passwordResetConfirm(token: String)
POST /password/reset/confirm/:token controllers.Auth.passwordResetConfirmApply(token: String)
POST /auth/set-fp/:fp/:ms controllers.Auth.setFingerPrint(fp: String, ms: Int)
POST /auth/token controllers.Auth.makeLoginToken
GET /auth/token/:token controllers.Auth.loginWithToken(token: String)
POST /auth/token/:token controllers.Auth.loginWithTokenPost(token: String, referrer: Option[String])
GET /auth/magic-link controllers.Auth.magicLink
POST /auth/magic-link/send controllers.Auth.magicLinkApply
GET /auth/magic-link/sent/:email controllers.Auth.magicLinkSent(email: String)
GET /auth/magic-link/login/:token controllers.Auth.magicLinkLogin(token: String)
2013-12-23 11:56:30 -07:00
# Mod
2019-12-31 11:17:47 -07:00
POST /mod/:username/alt/:v controllers.Mod.alt(username: String, v: Boolean)
POST /mod/:username/engine/:v controllers.Mod.engine(username: String, v: Boolean)
POST /mod/:username/booster/:v controllers.Mod.booster(username: String, v: Boolean)
POST /mod/:username/troll/:v controllers.Mod.troll(username: String, v: Boolean)
2017-10-31 10:13:37 -06:00
POST /mod/:username/delete-pms-and-chats controllers.Mod.deletePmsAndChats(username: String)
2017-03-30 10:21:52 -06:00
POST /mod/:username/warn controllers.Mod.warn(username: String, subject: String)
2020-12-19 09:01:02 -07:00
POST /mod/:username/kid controllers.Mod.kid(username: String)
2018-05-06 04:03:28 -06:00
POST /mod/:username/disable-2fa controllers.Mod.disableTwoFactor(username: String)
2014-02-01 06:13:22 -07:00
POST /mod/:username/close controllers.Mod.closeAccount(username: String)
2013-09-11 04:38:16 -06:00
POST /mod/:username/reopen controllers.Mod.reopenAccount(username: String)
2014-02-26 17:18:09 -07:00
POST /mod/:username/title controllers.Mod.setTitle(username: String)
2017-05-10 17:07:04 -06:00
POST /mod/:username/inquiry controllers.Mod.spontaneousInquiry(username: String)
2017-09-04 11:41:58 -06:00
GET /mod/:username/communication controllers.Mod.communicationPublic(username: String)
GET /mod/:username/communication/private controllers.Mod.communicationPrivate(username: String)
POST /mod/:username/rankban/:v controllers.Mod.rankban(username: String, v: Boolean)
POST /mod/:username/reportban/:v controllers.Mod.reportban(username: String, v: Boolean)
2017-08-03 04:43:29 -06:00
POST /mod/:username/impersonate controllers.Mod.impersonate(username: String)
2021-02-19 05:25:36 -07:00
GET /mod/:username/games controllers.GameMod.index(username: String)
2021-02-26 08:42:28 -07:00
POST /mod/:username/games controllers.GameMod.post(username: String)
2020-03-03 12:34:33 -07:00
GET /mod/table controllers.Mod.table
POST /mod/:username/refreshUserAssess controllers.Mod.refreshUserAssess(username: String)
2015-08-12 05:17:16 -06:00
POST /mod/:username/email controllers.Mod.setEmail(username: String)
2021-07-08 12:49:21 -06:00
POST /mod/inquiry-to-zulip controllers.Mod.inquiryToZulip
2016-01-10 21:09:37 -07:00
GET /mod/leaderboard controllers.Mod.gamify
2016-01-10 22:18:26 -07:00
GET /mod/leaderboard/:period controllers.Mod.gamifyPeriod(period: String)
2021-06-07 09:08:47 -06:00
GET /mod/activity controllers.Mod.activity
GET /mod/activity/:who/:period controllers.Mod.activityOf(who: String, period: String)
2021-06-08 09:35:55 -06:00
GET /mod/queues/:period controllers.Mod.queues(period: String)
GET /mod/search controllers.Mod.search
2016-06-10 18:13:57 -06:00
GET /mod/chat-user/:username controllers.Mod.chatUser(username: String)
2017-01-14 08:42:26 -07:00
GET /mod/:username/permissions controllers.Mod.permissions(username: String)
POST /mod/:username/permissions controllers.Mod.savePermissions(username: String)
2016-09-04 09:03:45 -06:00
GET /mod/public-chat controllers.Mod.publicChat
POST /mod/public-chat/timeout controllers.Mod.publicChatTimeout
GET /mod/email-confirm controllers.Mod.emailConfirm
2017-10-28 15:40:52 -06:00
GET /mod/chat-panic controllers.Mod.chatPanic
POST /mod/chat-panic controllers.Mod.chatPanicPost
2019-10-09 14:41:32 -06:00
GET /mod/print/:fh controllers.Mod.print(fh: String)
POST /mod/print/ban/:v/:fh controllers.Mod.printBan(v: Boolean, fh: String)
GET /mod/ip/:ip controllers.Mod.singleIp(ip: String)
POST /mod/ip/ban/:v/:ip controllers.Mod.singleIpBan(v: Boolean, ip: String)
GET /mod/presets/:group controllers.Mod.presets(group: String)
POST /mod/presets/:group controllers.Mod.presetsUpdate(group: String)
2018-07-29 23:01:25 -06:00
GET /api/stream/mod controllers.Mod.eventStream
2017-05-01 05:30:25 -06:00
# Irwin
2018-08-23 02:16:10 -06:00
GET /irwin controllers.Irwin.dashboard
POST /irwin/report controllers.Irwin.saveReport
GET /api/stream/irwin controllers.Irwin.eventStream
2013-12-23 11:56:30 -07:00
# Forum
GET /forum controllers.ForumCateg.index
GET /forum/search controllers.ForumPost.search(text: String ?= "", page: Int ?= 1)
2013-04-09 12:58:34 -06:00
GET /forum/:slug controllers.ForumCateg.show(slug: String, page: Int ?= 1)
GET /forum/:categSlug/form controllers.ForumTopic.form(categSlug: String)
POST /forum/:categSlug/new controllers.ForumTopic.create(categSlug: String)
GET /forum/participants/:topicId controllers.ForumTopic.participants(topicId: String)
GET /forum/:categSlug/:slug controllers.ForumTopic.show(categSlug: String, slug: String, page: Int ?= 1)
POST /forum/:categSlug/:slug/close controllers.ForumTopic.close(categSlug: String, slug: String)
POST /forum/:categSlug/:slug/hide controllers.ForumTopic.hide(categSlug: String, slug: String)
POST /forum/:categSlug/:slug/sticky controllers.ForumTopic.sticky(categSlug: String, slug: String)
POST /forum/:categSlug/:slug/new controllers.ForumPost.create(categSlug: String, slug: String, page: Int ?= 1)
POST /forum/:categSlug/delete/:id controllers.ForumPost.delete(categSlug: String, id: String)
2016-09-16 17:31:51 -06:00
POST /forum/post/:id controllers.ForumPost.edit(id: String)
2020-04-08 12:29:04 -06:00
POST /forum/post/:id/react/:reaction/:v controllers.ForumPost.react(id: String, reaction: String, v: Boolean)
2013-05-27 09:01:19 -06:00
GET /forum/redirect/post/:id controllers.ForumPost.redirect(id: String)
2013-12-23 11:56:30 -07:00
2020-01-27 09:21:37 -07:00
# Msg compat
POST /inbox/new controllers.Msg.compatCreate
2020-01-27 08:38:50 -07:00
# Msg
2020-01-26 13:49:25 -07:00
GET /inbox controllers.Msg.home
GET /inbox/search controllers.Msg.search(q: String)
GET /inbox/unread-count controllers.Msg.unreadCount
2020-01-29 11:21:44 -07:00
GET /inbox/:username controllers.Msg.convo(username: String, before: Option[Long] ?= None)
2020-01-27 16:04:22 -07:00
DELETE /inbox/:username controllers.Msg.convoDelete(username: String)
# Msg API/compat
POST /inbox/:username controllers.Msg.apiPost(username: String)
2020-08-24 04:05:50 -06:00
POST /inbox/:username/delete controllers.Msg.convoDelete(username: String)
2013-12-23 11:56:30 -07:00
2016-08-21 01:16:41 -06:00
# Coach
2020-04-27 11:40:37 -06:00
GET /coach controllers.Coach.all(page: Int ?= 1)
2016-08-22 04:55:55 -06:00
GET /coach/edit controllers.Coach.edit
POST /coach/edit controllers.Coach.editApply
2016-09-01 14:21:42 -06:00
GET /coach/picture/edit controllers.Coach.picture
POST /upload/image/coach controllers.Coach.pictureApply
2016-08-31 15:47:21 -06:00
POST /coach/approve-review/:id controllers.Coach.approveReview(id: String)
POST /coach/mod-review/:id controllers.Coach.modReview(id: String)
2016-08-22 06:04:01 -06:00
GET /coach/:username controllers.Coach.show(username: String)
2016-08-31 07:20:30 -06:00
POST /coach/:username/review controllers.Coach.review(username: String)
GET /coach/:lang/:country/:order controllers.Coach.search(lang: String, order: String, country: String, page: Int ?= 1)
2016-08-21 01:16:41 -06:00
2020-01-16 07:40:33 -07:00
# Clas
GET /class controllers.Clas.index
2020-01-16 10:52:20 -07:00
GET /class/new controllers.Clas.form
2020-05-11 10:27:37 -06:00
POST /class/become-teacher controllers.Clas.becomeTeacher
2020-01-16 10:52:20 -07:00
POST /class/new controllers.Clas.create
2020-05-10 22:45:36 -06:00
GET /class/invitation/:id controllers.Clas.invitation(id: String)
POST /class/invitation/:id controllers.Clas.invitationAccept(id: String)
2020-01-16 10:52:20 -07:00
GET /class/$id<\w{8}> controllers.Clas.show(id: String)
2020-01-16 12:01:11 -07:00
GET /class/$id<\w{8}>/edit controllers.Clas.edit(id: String)
POST /class/$id<\w{8}>/edit controllers.Clas.update(id: String)
2020-01-30 12:19:24 -07:00
GET /class/$id<\w{8}>/news controllers.Clas.wall(id: String)
GET /class/$id<\w{8}>/news/edit controllers.Clas.wallEdit(id: String)
POST /class/$id<\w{8}>/news/edit controllers.Clas.wallUpdate(id: String)
GET /class/$id<\w{8}>/notify controllers.Clas.notifyStudents(id: String)
POST /class/$id<\w{8}>/notifyPost controllers.Clas.notifyPost(id: String)
2020-05-11 09:53:18 -06:00
GET /class/$id<\w{8}>/students controllers.Clas.students(id: String)
2020-01-18 12:59:40 -07:00
POST /class/$id<\w{8}>/archive controllers.Clas.archive(id: String, v: Boolean)
GET /class/$id<\w{8}>/progress/learn controllers.Clas.learn(id: String)
2020-01-18 20:20:16 -07:00
GET /class/$id<\w{8}>/progress/:pt/:days controllers.Clas.progress(id: String, pt: String, days: Int)
2020-01-16 16:41:46 -07:00
GET /class/$id<\w{8}>/student/add controllers.Clas.studentForm(id: String)
2020-01-16 13:25:41 -07:00
POST /class/$id<\w{8}>/student/new controllers.Clas.studentCreate(id: String)
GET /class/$id<\w{8}>/student/many controllers.Clas.studentManyForm(id: String)
POST /class/$id<\w{8}>/student/many controllers.Clas.studentManyCreate(id: String)
2020-01-16 16:41:46 -07:00
POST /class/$id<\w{8}>/student/invite controllers.Clas.studentInvite(id: String)
2020-01-16 14:59:58 -07:00
GET /class/$id<\w{8}>/student/:username controllers.Clas.studentShow(id: String, username: String)
2020-01-17 13:05:42 -07:00
POST /class/$id<\w{8}>/student/:username/archive controllers.Clas.studentArchive(id: String, username: String, v: Boolean)
POST /class/$id<\w{8}>/student/:username/reset-password controllers.Clas.studentResetPassword(id: String, username: String)
2020-01-17 18:05:54 -07:00
GET /class/$id<\w{8}>/student/:username/edit controllers.Clas.studentEdit(id: String, username: String)
POST /class/$id<\w{8}>/student/:username/edit controllers.Clas.studentUpdate(id: String, username: String)
2020-01-19 16:07:34 -07:00
GET /class/$id<\w{8}>/student/:username/release controllers.Clas.studentRelease(id: String, username: String)
POST /class/$id<\w{8}>/student/:username/release controllers.Clas.studentReleasePost(id: String, username: String)
GET /class/$id<\w{8}>/student/:username/close controllers.Clas.studentClose(id: String, username: String)
POST /class/$id<\w{8}>/student/:username/close controllers.Clas.studentClosePost(id: String, username: String)
2020-05-11 09:53:18 -06:00
POST /class/$id<\w{8}>/invitation/revoke controllers.Clas.invitationRevoke(id: String)
2020-01-16 07:40:33 -07:00
2013-05-31 15:48:04 -06:00
# Paste
GET /paste controllers.Importer.importGame
POST /import controllers.Importer.sendGame
GET /import/master/$id<\w{8}>/:color controllers.Importer.masterGame(id: String, color: String)
2013-07-21 06:27:47 -06:00
# Edit
2016-05-13 16:01:44 -06:00
GET /editor.json controllers.Editor.data
GET /editor/*urlFen controllers.Editor.load(urlFen: String)
GET /editor controllers.Editor.index
2013-12-23 11:56:30 -07:00
# Report
GET /report controllers.Report.form
POST /report controllers.Report.create
POST /report/flag controllers.Report.flag
GET /report/thanks controllers.Report.thanks(reported: String)
2013-07-27 14:55:29 -06:00
GET /report/list controllers.Report.list
2017-05-10 05:42:10 -06:00
GET /report/list/:room controllers.Report.listWithFilter(room: String)
2017-05-09 17:23:10 -06:00
POST /report/:id/inquiry controllers.Report.inquiry(id: String)
2013-07-27 14:55:29 -06:00
POST /report/:id/process controllers.Report.process(id: String)
POST /report/:id/xfiles controllers.Report.xfiles(id: String)
2021-03-21 03:46:25 -06:00
POST /report/:id/snooze/:dur controllers.Report.snooze(id: String, dur: String)
2018-03-15 20:27:09 -06:00
GET /report/:username/cheat-inquiry controllers.Report.currentCheatInquiry(username: String)
2020-07-25 06:40:51 -06:00
# Appeal
2020-07-25 11:50:11 -06:00
GET /appeal controllers.Appeal.home
POST /appeal controllers.Appeal.post
2021-04-16 11:08:50 -06:00
GET /appeal/landing controllers.Appeal.landing
2020-07-30 03:37:46 -06:00
GET /appeal/queue controllers.Appeal.queue
2020-07-30 02:44:05 -06:00
GET /appeal/:username controllers.Appeal.show(username: String)
POST /appeal/:username controllers.Appeal.reply(username: String)
POST /appeal/:username/mute controllers.Appeal.mute(username: String)
2021-04-28 03:49:43 -06:00
POST /appeal/:username/snooze/:dur controllers.Appeal.snooze(username: String, dur: String)
POST /appeal/:username/send-to-zulip controllers.Appeal.sendToZulip(username: String)
2020-07-25 06:40:51 -06:00
2015-09-20 14:04:02 -06:00
# Stats
GET /stat/rating/distribution/:perf controllers.User.ratingDistribution(perf: String)
2015-09-20 14:04:02 -06:00
2013-12-30 19:00:56 -07:00
# API
2018-04-01 22:04:41 -06:00
GET /api controllers.Api.index
2017-01-22 14:21:57 -07:00
POST /api/users controllers.Api.usersByIds
GET /api/user/puzzle-activity controllers.Puzzle.activity
2021-03-19 02:48:46 -06:00
GET /api/puzzle/daily controllers.Puzzle.apiDaily
2021-01-20 01:44:41 -07:00
GET /api/puzzle/activity controllers.Puzzle.activity
GET /api/puzzle/dashboard/:days controllers.Puzzle.apiDashboard(days: Int)
GET /api/user/:name/tournament/created controllers.Api.tournamentsByOwner(name: String, status: List[Int])
2016-01-21 23:45:07 -07:00
GET /api/user/:name controllers.Api.user(name: String)
GET /api/user/:name/activity controllers.Api.activity(name: String)
POST /api/user/:name/note controllers.User.apiWriteNote(name: String)
GET /api/user/:name/rating-history controllers.User.ratingHistory(name: String)
2020-04-15 12:11:35 -06:00
GET /api/user/:name/current-game controllers.User.tvExport(name: String)
GET /api/user/:name/perf/:perfKey controllers.Api.perfStat(name: String, perfKey: String)
2014-06-06 03:08:43 -06:00
GET /api/game/:id controllers.Api.game(id: String)
GET /api/tournament controllers.Api.currentTournaments
GET /api/tournament/$id<\w{8}> controllers.Api.tournament(id: String)
GET /api/tournament/$id<\w{8}>/games controllers.Api.tournamentGames(id: String)
GET /api/tournament/$id<\w{8}>/results controllers.Api.tournamentResults(id: String)
GET /api/tournament/$id<\w{8}>/teams controllers.Api.tournamentTeams(id: String)
POST /api/tournament controllers.Tournament.apiCreate
POST /api/tournament/$id<\w{8}> controllers.Tournament.apiUpdate(id: String)
POST /api/tournament/$id<\w{8}>/join controllers.Tournament.apiJoin(id: String)
POST /api/tournament/$id<\w{8}>/withdraw controllers.Tournament.apiWithdraw(id: String)
POST /api/tournament/$id<\w{8}>/terminate controllers.Tournament.apiTerminate(id: String)
POST /api/tournament/team-battle/:id controllers.Tournament.apiTeamBattleUpdate(id: String)
2020-05-11 12:16:18 -06:00
POST /api/swiss/new/:teamId controllers.Swiss.apiCreate(teamId: String)
POST /api/swiss/:id/edit controllers.Swiss.apiUpdate(id: String)
POST /api/swiss/:id/join controllers.Swiss.apiJoin(id: String)
2021-04-13 14:05:57 -06:00
POST /api/swiss/:id/terminate controllers.Swiss.apiTerminate(id: String)
GET /api/swiss/:id/games controllers.Api.swissGames(id: String)
GET /api/swiss/:id/results controllers.Api.swissResults(id: String)
2019-10-17 09:28:51 -06:00
GET /api/simul controllers.Simul.apiList
2015-01-17 04:35:54 -07:00
GET /api/status controllers.Api.status
GET /api/users/status controllers.Api.usersStatus
GET /api/crosstable/:u1/:u2 controllers.Api.crosstable(u1: String, u2: String)
2018-04-16 18:02:31 -06:00
POST /api/stream/games-by-users controllers.Api.gamesByUsersStream
2018-04-16 17:58:20 -06:00
GET /api/stream/event controllers.Api.eventStream
GET /api/stream/game/:id controllers.Api.moveStream(id: String)
2018-04-26 18:04:45 -06:00
GET /api/account controllers.Account.apiMe
2018-05-21 06:10:22 -06:00
GET /api/account/playing controllers.Account.apiNowPlaying
GET /api/account/email controllers.Account.apiEmail
GET /api/account/kid controllers.Account.apiKid
POST /api/account/kid controllers.Account.apiKidPost
GET /api/account/preferences controllers.Pref.apiGet
2021-07-24 03:22:56 -06:00
GET /api/challenge controllers.Challenge.apiList
2020-04-23 12:34:25 -06:00
POST /api/challenge/ai controllers.Setup.apiAi
2020-04-23 20:03:47 -06:00
POST /api/challenge/open controllers.Challenge.openCreate
POST /api/challenge/:user controllers.Challenge.apiCreate(user: String)
POST /api/challenge/$id<\w{8}>/accept controllers.Challenge.apiAccept(id: String)
POST /api/challenge/$id<\w{8}>/decline controllers.Challenge.apiDecline(id: String)
POST /api/challenge/$id<\w{8}>/cancel controllers.Challenge.apiCancel(id: String)
POST /api/challenge/$id<\w{8}>/start-clocks controllers.Challenge.apiStartClocks(id: String)
POST /api/round/$id<\w{8}>/add-time/:seconds controllers.Round.apiAddTime(id: String, seconds: Int)
2020-07-03 07:53:20 -06:00
GET /api/cloud-eval controllers.Api.cloudEval
GET /api/broadcast controllers.RelayTour.apiIndex
2020-07-10 01:48:26 -06:00
POST /api/import controllers.Importer.apiSendGame
GET /api/bulk-pairing controllers.BulkPairing.list
POST /api/bulk-pairing controllers.BulkPairing.create
DELETE /api/bulk-pairing/:id controllers.BulkPairing.delete(id: String)
POST /api/bulk-pairing/:id/start-clocks controllers.BulkPairing.startClocks(id: String)
2013-12-30 19:00:56 -07:00
GET /api/games/user/:username controllers.Game.apiExportByUser(username: String)
2018-05-07 16:39:26 -06:00
# Mobile API only
GET /api/user/:name/games controllers.Api.userGames(name: String)
2018-04-15 15:26:36 -06:00
# Bot API
GET /api/bot/game/stream/:id controllers.PlayApi.botGameStream(id: String)
POST /api/bot/game/:id/move/:uci controllers.PlayApi.botMove(id: String, uci: String, offeringDraw: Option[Boolean] ?= None)
GET /api/bot/online controllers.PlayApi.botOnlineApi
POST /api/bot/*cmd controllers.PlayApi.botCommand(cmd: String)
GET /api/bot/*cmd controllers.PlayApi.botCommandGet(cmd: String)
GET /player/bots controllers.PlayApi.botOnline
# Board API
GET /api/board/game/stream/:id controllers.PlayApi.boardGameStream(id: String)
POST /api/board/game/:id/move/:uci controllers.PlayApi.boardMove(id: String, uci: String, offeringDraw: Option[Boolean] ?= None)
POST /api/board/seek controllers.Setup.boardApiHook
POST /api/board/*cmd controllers.PlayApi.boardCommandPost(cmd: String)
GET /api/board/*cmd controllers.PlayApi.boardCommandGet(cmd: String)
2018-04-15 15:26:36 -06:00
2018-03-09 14:55:11 -07:00
# Account
GET /account/passwd controllers.Account.passwd
POST /account/passwd controllers.Account.passwdApply
GET /account/email controllers.Account.email
POST /account/email controllers.Account.emailApply
GET /contact/email-confirm/help controllers.Account.emailConfirmHelp
2018-03-09 14:55:11 -07:00
GET /account/email/confirm/:token controllers.Account.emailConfirm(token: String)
GET /account/close controllers.Account.close
POST /account/closeConfirm controllers.Account.closeConfirm
GET /account/profile controllers.Account.profile
POST /account/profile controllers.Account.profileApply
2019-04-07 15:01:30 -06:00
GET /account/username controllers.Account.username
POST /account/username controllers.Account.usernameApply
2018-03-09 14:55:11 -07:00
GET /account/kid controllers.Account.kid
2018-04-02 18:33:23 -06:00
POST /account/kid controllers.Account.kidPost
2018-05-05 04:01:45 -06:00
GET /account/twofactor controllers.Account.twoFactor
POST /account/twofactor/setup controllers.Account.setupTwoFactor
2019-04-19 08:22:12 -06:00
POST /account/twofactor/disable controllers.Account.disableTwoFactor
2019-12-30 14:28:28 -07:00
GET /account/reopen controllers.Account.reopen
POST /account/reopen/send controllers.Account.reopenApply
GET /account/reopen/sent/:email controllers.Account.reopenSent(email: String)
GET /account/reopen/login/:token controllers.Account.reopenLogin(token: String)
2020-08-14 02:10:26 -06:00
GET /account/personal-data controllers.Account.data
2018-04-02 18:33:23 -06:00
# App BC
2018-03-09 14:55:11 -07:00
GET /account/security controllers.Account.security
POST /account/signout/:sessionId controllers.Account.signout(sessionId: String)
GET /account/info controllers.Account.info
GET /account/now-playing controllers.Account.nowPlaying
2018-04-01 16:46:05 -06:00
# OAuth
2021-07-07 04:48:08 -06:00
GET /oauth controllers.OAuth.authorize
POST /oauth controllers.OAuth.legacyTokenApply
GET /oauth/authorize controllers.OAuth.legacyAuthorize
POST /oauth/authorize controllers.OAuth.authorizeApply
POST /oauth/revoke-client controllers.OAuth.revokeClient
POST /api/token controllers.OAuth.tokenApply
DELETE /api/token controllers.OAuth.tokenRevoke
GET /account/oauth/token controllers.OAuthToken.index
GET /account/oauth/token/create controllers.OAuthToken.create
POST /account/oauth/token/create controllers.OAuthToken.createApply
POST /account/oauth/token/:id/delete controllers.OAuthToken.delete(id: String)
POST /api/token/admin-challenge controllers.OAuth.challengeTokens
2018-03-09 14:55:11 -07:00
2016-08-22 16:05:10 -06:00
# Events
2016-08-24 15:43:35 -06:00
GET /event/$id<\w{8}> controllers.Event.show(id: String)
2016-08-23 07:16:27 -06:00
GET /event/manager controllers.Event.manager
GET /event/manager/$id<\w{8}> controllers.Event.edit(id: String)
POST /event/manager/$id<\w{8}> controllers.Event.update(id: String)
2019-12-05 08:46:00 -07:00
GET /event/manager/clone/$id<\w{8}> controllers.Event.cloneE(id: String)
2016-08-23 07:16:27 -06:00
GET /event/manager/new controllers.Event.form
POST /event/manager controllers.Event.create
2016-08-22 16:05:10 -06:00
2013-04-09 12:58:34 -06:00
# Misc
2014-08-25 02:09:16 -06:00
GET /captcha/$id<\w{8}> controllers.Main.captchaCheck(id: String)
GET /developers controllers.Main.webmasters
2015-02-09 10:02:57 -07:00
GET /mobile controllers.Main.mobile
GET /lag controllers.Main.lag
2017-08-23 21:44:09 -06:00
GET /get-fishnet controllers.Main.getFishnet
2018-12-31 14:44:01 -07:00
GET /costs controllers.Main.costs
2019-11-18 11:13:06 -07:00
GET /verify-title controllers.Main.verifyTitle
2019-12-03 08:34:28 -07:00
GET /InstantChess.com controllers.Main.instantChess
2020-03-06 14:07:16 -07:00
GET /daily-puzzle-slack controllers.Main.dailyPuzzleSlackApp
2017-11-29 08:55:11 -07:00
# Dev
2017-10-31 17:15:44 -06:00
GET /dev/cli controllers.Dev.cli
POST /dev/cli controllers.Dev.cliPost
POST /cli controllers.Dev.command
2017-11-29 08:55:11 -07:00
GET /dev/settings controllers.Dev.settings
POST /dev/settings/:id controllers.Dev.settingsPost(id: String)
2014-08-25 02:09:16 -06:00
# Push
POST /mobile/register/:platform/:deviceId controllers.Push.mobileRegister(platform: String, deviceId: String)
POST /mobile/unregister controllers.Push.mobileUnregister
POST /push/subscribe controllers.Push.webSubscribe
2016-01-24 23:40:59 -07:00
# Pages
2018-12-25 00:04:55 -07:00
GET /terms-of-service controllers.Page.tos
2021-01-14 10:52:13 -07:00
GET /$bookmark<privacy|thanks|about|ads|changelog> controllers.Page.menuBookmark(bookmark: String)
2018-12-20 01:54:27 -07:00
GET /contact controllers.Main.contact
2019-04-07 07:40:34 -06:00
GET /faq controllers.Main.faq
2019-04-25 21:20:40 -06:00
GET /source controllers.Page.source
2019-08-25 05:27:04 -06:00
GET /qa controllers.Main.movedPermanently(to: String = "/faq")
2019-09-13 04:08:59 -06:00
GET /help controllers.Main.movedPermanently(to: String = "/contact")
2020-10-13 03:35:38 -06:00
GET /support controllers.Main.movedPermanently(to: String = "/contact")
2019-04-08 05:19:51 -06:00
GET /qa/:id/:slug controllers.Main.legacyQaQuestion(id: Int, slug: String)
2021-01-14 13:43:39 -07:00
GET /how-to-cheat controllers.Page.loneBookmark(bookmark = "how-to-cheat")
2020-10-05 03:24:13 -06:00
GET /page/:bookmark controllers.Page.loneBookmark(bookmark: String)
2016-01-24 23:40:59 -07:00
# Variants
2016-01-26 03:24:59 -07:00
GET /variant controllers.Page.variantHome
GET /variant/:key controllers.Page.variant(key)
2016-01-24 23:40:59 -07:00
# Help
2018-12-25 00:04:55 -07:00
GET /help/contribute controllers.Page.help
GET /help/master controllers.Page.master
2016-01-24 23:40:59 -07:00
2020-09-07 08:10:56 -06:00
# DGT
GET /dgt controllers.DgtCtrl.index
GET /dgt/play controllers.DgtCtrl.play
GET /dgt/config controllers.DgtCtrl.config
POST /dgt/config/token controllers.DgtCtrl.generateToken
2020-09-07 08:10:56 -06:00
2020-10-01 03:37:36 -06:00
# Accessibility
POST /toggle-blind-mode controllers.Main.toggleBlindMode
GET /prismic-preview controllers.Blog.preview(token: String)
2017-11-09 13:22:02 -07:00
POST /jslog/$id<\w{12}> controllers.Main.jslog(id: String)
POST /jsmon/:event controllers.Main.jsmon(event: String)
2015-08-15 15:04:14 -06:00
2019-08-25 05:27:04 -06:00
GET /swag controllers.Main.movedPermanently(to: String = "https://shop.spreadshirt.com/lichess-org")
2020-04-18 05:31:22 -06:00
GET /yt controllers.Main.movedPermanently(to: String = "https://www.youtube.com/channel/UCr6RfQga70yMM9-nuzAYTsA")
2021-10-06 11:31:03 -06:00
GET /dmca controllers.Main.movedPermanently(to: String = "https://docs.google.com/forms/d/e/1FAIpQLSdRVaJ6Wk2KHcrLcY0BxM7lTwYSQHDsY2DsGwbYoLUBo3ngfQ/viewform")
2019-08-25 05:27:04 -06:00
GET /assets/_$v<\w{6}>/*file controllers.Main.devAsset(v, path="public", file)
GET /assets/*file controllers.ExternalAssets.at(path="public", file)
2016-09-25 12:36:20 -06:00
2019-12-14 00:56:45 -07:00
GET /manifest.json controllers.Main.manifest
2016-09-25 12:36:20 -06:00
GET /robots.txt controllers.Main.robots
2019-09-20 09:57:26 -06:00
GET /$username<[\w-]{2,30}> controllers.User.redirect(username: String)