2.5 KiB
MOTH API
Data encoding
MOTH runs as an HTTP service,
accepting standard HTTP GET
and POST
.
Parameters may be encoded with standard GET
query parameters
(like GET /endpoint?a=1&b=2
),
or with POST
as application/x-www-form-encoded
data.
Endpoints
/state
Returns the current MOTH event state as a JSON object.
Parameters
id
: team ID (optional)
Return
{
"Config": {
"Devel": true/false
},
"Messages: "HTML to be rendered as broadcast messages",
"TeamNames": {
"self": "Requesting team name", # Only if regestered team id is a provided
"0": "Team 1 Name",
"1": "Team 2 Name",
...
},
"PointsLog": {
[1602679698, "0", "category", 1], # epochTime, teamID, category, points
...
},
"Puzzles": {
"category": [1, 2, 3, 6], # list of unlocked puzzles for category
...
}
}
/register
Registers a name to a team ID.
This is only required once per team, but user interfaces may find it less confusing to users to present a "login" page. For this reason "this team is already registered" does not return an error.
Parameters
id
: team IDname
: team name
Return
An object inspired by JSend:
{
"status": "success/fail/error",
"data": {
"short": "short description",
"description": "long description"
}
}
/answer
Submits an answer for points.
If the answer is wrong, no points are awarded 😉
Parameters
id
: team IDcategory
: along withpoints
, uniquely identifies a puzzlepoints
: along withcategory
, uniquely identifies a puzzle
Return
An object inspired by JSend:
{
"status": "success/fail/error",
"data": {
"short": "short description",
"description": "long description"
}
}
/content/{category}/{points}/{filename}
Retrieves static content associated with a puzzle.
Every puzzle provides puzzle.json
,
a JSON object containing
information about the puzzle such as the body
and list of attached files.
Parameters are all in the URL for this endpoint,
so curl
and wget
can be used.
Parameters
{category}
(in URL): along with{points}
, uniquely identifies a puzzle{points}
(in URL): along with{category}
, uniquely identifies a puzzle{filename}
(in URL): filename to retrieve
Return
Raw file octets,
with a (hopefully) suitable
Content-type
HTTP header field.