X-Git-Url: https://git.cworth.org/git?p=lmno-api;a=blobdiff_plain;f=api.text;h=250ed107c86aad50698332b5185a5402c85debf2;hp=f4ea703d3cd33d49f30845a5646eb54bae3f04d1;hb=748f60bb7e13cc3422d8d628268d6ee55f1fae83;hpb=9e13e7ccf1313d83e3d253a2c490988ff3d2b833 diff --git a/api.text b/api.text index f4ea703..250ed10 100644 --- a/api.text +++ b/api.text @@ -1,5 +1,87 @@ -Gameplay API endpoints (within a current game) -============================================== +Empires Game Protocol +===================== +Version: 0.4 + +For a specific game the following API endpoints are defined. +(Note: Only the trailing portion of the API URI is provided here. + The preceding portions of the path must be determined externally.) + +/events + + This is a server-sent events stream that allows the server to push + game-related events to clients. When a client connects to this API + endpoint the server will return a header that includes: + + Content-type: text/event-stream + Connection: keep-alive + Cache-Control: no-cache + + and will keep the connection open to return events. + + The following event types will be returned by the server: + + TYPE: players + + WHEN: When a client first connects + + PURPOSE: Describes all players in the game already + + EXAMPLE: + + event: players + data: [{"id":1,"name":"Carl"},{"id":2,"name":"Kevin"}] + + TYPE: player-join + + WHEN: When a player joins the game + + EXAMPLE: + + event: player-join + data: {"id":3,"name":"Richard"} + + TYPE: player-leave + + WHEN: When a player leaves the game + + EXAMPLE: + + event: player-leave + data: {"id":3} + + TYPE: game-state + + WHEN: When client first connects and whenever game state changes + + VALUES: Game state will be one of the following: + + JOIN: Players are choosing characters and joining the game + REVEAL: Character names are being revealed to players + CAPTURE: Players are guessing characters in capture attempts + + EXAMPLE: + + event: game-state + data: {"state":"REVEAL"} + + TYPE: character-reveal + + WHEN: Periodically during the REVEAL state of the game + + EXAMPLE: + + event: character-reveal + data: {"character":"Albert Einstein"} + + TYPE: capture + + WHEN: When one player captures another + + EXAMPLE: + + event: capture + data: {"captor": 2, "captee": 1} + /register Method: POST @@ -14,6 +96,22 @@ Gameplay API endpoints (within a current game) Behavior: Removes an existing player with the given ID +/reveal + + Method: POST + + When: Only valid when in game state of JOIN + + Behavior: Change state to REVEAL; reveal character names to all clienta + +/start + + Method: POST + + When: Only valid when in game state of REVEAL + + Behavior: Change game state to CAPTURE + /reset Method: POST