3.6 KiB
MOTH Client API
MOTH provides a WebDAV interface: this is described in MOTH Client Directory Structure.
This document explains the WebDAV directory structure as though it were a REST API. These endpoints are a subset of the functionality provided, but should be sufficient for many use cases.
Theme
Theme files are served as static content, just like any standard web server.
GET
/theme/${path}
- Retrieve File
Puzzles
Static Files
With the exception of the answer
file,
puzzle files are served as static content.
The entry point to a puzzle is index.html
:
see Puzzle Format
for details on its structure.
GET
/puzzles/${category}/${points}/${filename}
- Retrieve File
Answer Submission
GET
/puzzles/${category}/${points}/answer
- not supported
Responses
http code | meaning |
---|---|
405 | GET method is not supported |
POST
/puzzles/${category}/${points}/answer
- Submit Answer
Responses
http code | meaning |
---|---|
200 | Answer is correct, and points are awarded |
202 | Answer is correct, but points have already been awarded for this puzzle |
409 | Answer is incorrect |
401 | Authentication is invalid (bad team ID) |
State
Points Log
The points log contains a history of correct answer submission.
Each submission is terminated by a newline (\n
)
and consists of space-separated fields
of the format:
${timestamp} ${team_id} ${category} ${points}
GET
/state/points.log
- Retrieve points log
http code | meaning |
---|---|
200 | Points log in payload (text/plain) |
401 | Authentication is invalid (bad team ID) |
Team Name
GET
/state/self/name
- Retrieve my team name
Responses
http code | meaning |
---|---|
200 | Team ID in payload (text/plain) |
401 | Authentication is invalid (bad team ID) |
POST
/state/self/name
- Set my team name
Responses
http code | meaning |
---|---|
200 | Team ID is valid, and team name was recorded |
202 | Team ID is valid, but team name was previously set and cannot be changed |
401 | Authentication is invalid (bad team ID) |
Public Data
Up to 4096 bytes of arbitrary public data per team may be stored on the server. This data can be viewed by any authenticated team.
There are no restrictions on the content of the data: clients are free to store whatever they want.
GET
/state/${id}/public.bin
- Retrieve public data
Responses
http code | meaning |
---|---|
200 | Data follows (application/octet-stream) |
401 | Authentication is invalid (bad team ID) |
PUT
/state/${id}/public.bin
- Upload public data
Responses
http code | meaning |
---|---|
200 | Data follows (application/octet-stream) |
401 | Authentication is invalid (bad team ID) |
Private Data
Up to 4096 bytes of arbitrary data per team may be stored on the server. This data is only accessible by an authenticated request, and is private to the authenticated team.
There are no restrictions on the content of the data: clients are free to store whatever they want.
GET
/state/self/private.bin
- Retrieve private data
Responses
http code | meaning |
---|---|
200 | Data follows (application/octet-stream) |
401 | Authentication is invalid (bad team ID) |
POST
/state/self/private.bin
- Upload private data
Responses
http code | meaning |
---|---|
200 | Data follows (application/octet-stream) |
401 | Authentication is invalid (bad team ID) |