Skip to content

soprafs20-group09/frantic-docs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 

Repository files navigation

frantic-docs

A documentation repository for frantic. Contains REST and WebSocket API.



Frantic RESTful API

GET /lobbies

get list of lobbies

Parameters
Name Located in Description Required Schema
q query filter lobby names or creators No string
Responses
Code Description
200 list of lobbies

POST /lobbies

create a lobby from username

Responses
Code Description
201 lobby created
400 Bad request. Request body is missing or invalid.

PUT /lobbies/{id}

join a lobby with username

Parameters
Name Located in Description Required Schema
id path Yes integer
Responses
Code Description
201 OK. Username added to lobby.
400 Bad request. Request body is missing or invalid.
403 Forbidden. Lobby is private.
404 Lobby not found.
409 Username already exists on this server.


Frantic Websocket API

publish /app/register

Register Connection

Payload
Name Type
token string
Example of payload
{
  "token": "123-abc-456-def"
}

subscribe /user/queue/register

Player Registered Successfully

Payload
Name Type
username string
lobbyId string
Example of payload
{
  "username": "user1",
  "lobbyId": "1"
}

publish /app/lobby/:id/settings

Set Lobby Settings

Payload
Name Type
lobbyName string
gameDuration string
turnDuration string
publicLobby boolean
Example of payload
{
  "lobbyName": "kyrill's lobby",
  "gameDuration": "medium",
  "turnDuration": "normal",
  "publicLobby": "false"
}

subscribe /user/queue/lobby/:id/lobby-state

Update Lobby

Payload
Name Type
players array
players.username string
players.admin boolean
settings object
settings.lobbyName string
settings.gameDuration string
settings.gameDurationItems array
settings.gameDurationItems.name string
settings.gameDurationItems.value string
settings.turnDuration string
settings.turnDurationItems array
settings.turnDurationItems.name string
settings.turnDurationItems.value string
settings.publicLobby boolean
Example of payload
{
  "players": [
    {
      "username": "kyrill",
      "admin": false
    }
  ],
  "settings": {
    "lobbyName": "kyrill's lobby",
    "gameDuration": "medium",
    "gameDurationItems": [
      {
        "name": "Short",
        "value": "short"
      }
    ],
    "turnDuration": "normal",
    "turnDurationItems": [
      {
        "name": "Normal",
        "value": "normal"
      }
    ],
    "publicLobby": true
  }
}

publish /app/lobby/:id/kick

Kick Player

Payload
Name Type
username string
Example of payload
{
  "username": "kyrill"
}

subscribe /user/queue/disconnect

Disconnect Player

Payload
Name Type
reason string
Example of payload
{
  "reason": "Lobby was closed"
}

publish /app/lobby/:id/chat

Send Message

Payload
Name Type
message string
Example of payload
{
  "message": "I'm ready"
}

subscribe /user/queue/lobby/:id/chat

Update Chat

Payload
Name Type
type string
username string
icon string
message string
Example of payload
{
  "type": "msg",
  "username": "kyrill",
  "icon": "avatar:kyrill",
  "message": "I'm ready"
}

publish /app/lobby:id/start-game

Start Game

Payload
Name Type
Message Payload object
Example of payload
{}

subscribe /user/queue/lobby/:id/start-game

Start Game

Payload
Name Type
Message Payload object
Example of payload
{}

subscribe /user/queue/lobby/:id/start-round

Start Game Round

Payload
Name Type
Message Payload object
Example of payload
{}

subscribe /user/queue/lobby/:id/game-state

Game State

Payload
Name Type
discardPile object
discardPile.type string
discardPile.value string
discardPile.color string
discardPile.key integer
players array
players.username string
players.points integer
players.cards array
players.cards.type string
players.skipped boolean
players.admin boolean
Example of payload
{
  "discardPile": {
    "type": "number",
    "value": "1",
    "color": "red",
    "key": 35
  },
  "players": [
    {
      "username": "kyrill",
      "points": 12,
      "cards": [
        {
          "type": "back"
        }
      ],
      "skipped": false,
      "admin": true
    }
  ]
}

subscribe /user/queue/lobby/:id/hand

Hand

Payload
Name Type
cards array
cards.type string
cards.value string
cards.color string
cards.key integer
Example of payload
{
  "cards": [
    {
      "type": "number",
      "value": "3",
      "color": "red",
      "key": 35
    },
    {
      "type": "special",
      "value": "fuck-you",
      "color": "multicolor",
      "key": 48
    }
  ]
}

subscribe /user/queue/lobby/:id/playable

Playable

Payload
Name Type
cards array
canDraw boolean
canEnd boolean
Example of payload
{
  "cards": [
    3,
    5
  ],
  "canDraw": true,
  "canEnd": false
}

subscribe /user/queue/lobby/:id/timer

Timer

Payload
Name Type
seconds integer
Example of payload
{
  "seconds": 30
}

subscribe /user/queue/lobby/:id/animation-speed

Animation Speed

Payload
Name Type
hand integer
Example of payload
{
  "hand": 0
}

subscribe /user/queue/lobby/:id/start-turn

Start Turn

Payload
Name Type
currentPlayer string
timebombRounds integer
Example of payload
{
  "currentPlayer": "Kyrill",
  "timebombRounds": 3
}

publish /app/lobby/:id/play

Play Card

Payload
Name Type
index integer
Example of payload
{
  "index": 3
}

subscribe /user/queue/lobby/:id/action-response

Response to Action Card

Payload
Name Type
action string
Example of payload
{
  "action": "gift"
}

publish /app/lobby/:id/action/gift

Gift

Payload
Name Type
cards array
target string
Example of payload
{
  "cards": [
    3,
    5
  ],
  "target": "kyrill"
}

publish /app/lobby/:id/action/exchange

Exchange

Payload
Name Type
cards array
target string
Example of payload
{
  "cards": [
    3,
    5
  ],
  "target": "kyrill"
}

publish /app/lobby/:id/action/skip

Skip

Payload
Name Type
target string
Example of payload
{
  "target": "kyrill"
}

publish /app/lobby/:id/action/fantastic

Fantastic

Accepts one of the following messages:

#1

Payload
Name Type
number integer
Example of payload
{
  "number": 3
}

#2

Payload
Name Type
color string
Example of payload
{
  "color": "red"
}

publish /app/lobby/:id/action/fantastic-four

Fantastic Four

Accepts one of the following messages:

#1

Payload
Name Type
targets object
number integer
Example of payload
{
  "targets": {
    "kyrill": 1,
    "remy": 3
  },
  "number": 3
}

#2

Payload
Name Type
targets object
color string
Example of payload
{
  "targets": {
    "kyrill": 1,
    "remy": 3
  },
  "color": "red"
}

subscribe /user/queue/lobby/:id/attack-window

Counter Attack / Nice Try Opportunity

Payload
Name Type
time integer
playable array
Example of payload
{
  "time": 5,
  "playable": [
    3,
    5
  ]
}

subscribe /user/queue/lobby/:id/attack-turn

Counter Attack Turn

Payload
Name Type
currentPlayer string
Example of payload
{
  "currentPlayer": "Kyrill"
}

publish /app/lobby/:id/action/counterattack

Counter Attack

Payload
Name Type
color string
Example of payload
{
  "color": "red"
}

publish /app/lobby/:id/action/nice-try

Nice Try

Payload
Name Type
color string
Example of payload
{
  "color": "red"
}

publish /app/lobby/:id/action/equality

Equality

Payload
Name Type
target string
color string
Example of payload
{
  "target": "kyrill",
  "color": "red"
}

subscribe /user/queue/lobby/:id/event

Event Happens

Payload
Name Type
event string
message string
Example of payload
{
  "event": "tornado",
  "message": "All cards in the hands of the players…"
}

publish /app/lobby/:id/action/surprise-party

Surprise Party

Payload
Name Type
card integer
target string
Example of payload
{
  "card": 3,
  "target": "kyrill"
}

publish /app/lobby/:id/action/merry-christmas

Merry Christmas

Payload
Name Type
targets array
Example of payload
{
  "targets": [
    {
      "kyrill": [
        3,
        5
      ]
    }
  ]
}

subscribe /user/queue/lobby/:id/gambling-man-window

Gambling Man Selection

Payload
Name Type
playable array
Example of payload
{
  "playable": [
    3,
    5
  ]
}

subscribe /user/queue/lobby/:id/recession

Recession Amount

Payload
Name Type
amount integer
Example of payload
{
  "amount": 2
}

publish /app/lobby/:id/action/recession

Recession

Payload
Name Type
cards array
Example of payload
{
  "cards": [
    3,
    5
  ]
}

subscribe /user/queue/lobby/:id/market-window

Market Selection

Payload
Name Type
cards array
cards.type string
cards.value string
cards.color string
cards.key integer
Example of payload
{
  "cards": [
    {
      "type": "number",
      "value": "3",
      "color": "red",
      "key": 35
    },
    {
      "type": "special",
      "value": "fuck-you",
      "color": "multicolor",
      "key": 48
    }
  ]
}

publish /app/lobby/:id/action/market

Market

Payload
Name Type
card integer
Example of payload
{
  "card": 3
}

publish /app/lobby/:id/draw

Draw Card

Payload
Name Type
Message Payload object
Example of payload
{}

subscribe /user/queue/lobby/:id/draw

Draw Card Animation

Payload
Name Type
amount integer
Example of payload
{
  "amount": 5
}

publish /app/lobby/:id/end-turn

End Turn

Payload
Name Type
Message Payload object
Example of payload
{}

subscribe /user/queue/lobby/:id/end-round

Game Round is Over

Payload
Name Type
players object
changes object
admin string
pointLimit integer
icon string
message string
Example of payload
{
  "players": {
    "kyrill": 54,
    "remy": 63
  },
  "changes": {
    "kyrill": 12,
    "remy": 14
  },
  "admin": "kyrill",
  "pointLimit": 168,
  "icon": "event:doomsday",
  "message": "Doomday happened."
}

subscribe /user/queue/lobby/:id/end-game

Game is Over

Payload
Name Type
players object
Example of payload
{
  "players": {
    "kyrill": 120,
    "remy": 80
  }
}

publish /app/lobby/:id/rematch

Rematch

Payload
Name Type
Message Payload object
Example of payload
{}

subscribe /user/queue/reconnect

Reconnect

Payload
Name Type
token string
Example of payload
{
  "token": "abc-123-abc-123"
}

About

A documentation repository for frantic.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •