---
# System prepended metadata

title: App websocket API

---

# App websocket API

Pour se connecter
```json
{
    "type": "connectGame",
    "status": "ok",
    "token": theToken,
    "data": {
        gameId: String/Number,
        username: String,
        password: String,
    },
}
```

retour du serveur
```json
{
    "type": "connectGame",
    "status": "ok",
    "token": null,
    "data": {
       "token": String,
       "roles": [
           {
               "name": String,
               "image": String,
               "summary": String
           }
       ]
    },
}
```

Pour set un role préféré
```json
{
    "type": "setRole",
    "status": "ok",
    "token": theToken,
    "data": {
        roleName: String,
    },
}
```

Quand il faut reload un page l'app recoit

```json
{
    "type": "reloadPage",
    "status": "ok",
    "token": null,
    "data": {},
}
```


```json
{
    "type": "getHomePage", // le nom de l'action qui requiert un envoi
    "emitter": String, // a voir peut-etre un token
    "date": Date,
    "data": {
        "characterName": String,
        "characterPhoto": String, // null pour l'instant
        "characterRole": String,
        "characterSummaryRole": String,
        "characterHints": JSONArray,
        "scenarioTitle": String,
        "scenarioSummary": String
        "characterProperties":{
                "alive": boolean,
                "protected": boolean,
                "poisoned": boolean,
            }
        },
}
```

```json
{
    "type": "getMyPlayer", // le nom de l'action qui requiert un envoi
    "emitter": String, // a voir peut-etre un token
    "date": Date,
    "data": {
        "CharacterRole": Role,
        },
}
```
```json
{
    type: "getObjectPage", // le nom de l'action qui requiert un envoi
    emitter: String, // a voir peut-etre un token
    date: Date,
    data: {
        objectName: String
        },
}
```
Pour récupérer les données sur un personnage (envoyé depuis l'app)
```json
type: "getPlayerData", // le nom de l'action qui requiert un envoi
    emitter: String, // a voir peut-etre un token
    date: Date,
    data: {
        playerRoleName: String
        },
```

```json
{
    "type": "getMyActions", // le nom de l'action qui requiert un envoi
    "emitter": String, // a voir peut-etre un token
    "date": Date,
    "data": {
        "characterActions": {
            "Pickpocket": {
                "possible": Boolean //Si les prérequis sont remplis, if false = display errorMesage on clic
                "errorMessage": "Vous n'avez plus de point d'action",
                // DEPRECATED "summary": "Vous volez qq bouhaha",
                "description": "blablabla" //accessible en cliquant sur un bouton plus d'infos
            }
        },
        "gameCharacters": List,
        "gameObjects": List,
        "gameRooms": List
        },
}
```
```json
{
    "type": "makeAction", 
    "status": "ok",
    "token": null,
    "data": {
        "actionName":String
    }
}
```

Quand un joueur a fait une demande d'action le serveur envoie :
```json
{
    "type": "makeAction", 
    "status": "ok",
    "token": null,
    "data": {
        "choices": [
            {
                "message": "Veuillez choisir le joueur qui va faire un potin",
                "possibilities": [ "toto", "tutu", "titi"],
                "min": 1,
                "max": 1
            },
            {
                "message": "Veuillez choisir le joueur sur qui sera le potin",
                "possibilities": [ "toto", "tutu", "titi"],
                "min": 1,
                "max": 1
            }
        ]
    }
}
```
ou une erreur si l'action n'est pas possible

retour en fin d'action 
```json
{
    "type": "actionResult",
    "status": "ok",
    "token": null,
    "data": {
        "actionName": String,
        "choices": [ 
            ["titi"],
            ["toto"]
        ]
    }
}
```

```json
{
    type: "getEventsPage", // le nom de l'action qui requiert un envoi
    emitter: String, // a voir peut-etre un token
    date: Date,
    data: {
        events:
            [
                
            ]
        },
}
```

Récupère la page les personnages avec une liste des noms des personnages

```json
{
    type: "getPlayersPage", // le nom de l'action qui requiert un envoi
    emitter: String, // a voir peut-etre un token
    date: Date,
    data: {
        charactersName: List String,
        
        },
}
```
Récupère une page précise d'un personnage avec son rôle et ce que mon personnage pense de lui

```json
{
    type: "getPlayerData", // le nom de l'action qui requiert un envoi
    emitter: String, // a voir peut-etre un token
    date: Date,
    data: {
        characterRole: String,
        characterThoughts: String
        },
}
```
```json
{
    type: "getMyInventoryPage", // le nom de l'action qui requiert un envoi
    emitter: String, // a voir peut-etre un token
    date: Date,
    data: {
        characterObject: String List,       
        },
}
```
```json
{
    type: "getObjectPage", // le nom de l'action qui requiert un envoi
    emitter: String, // a voir peut-etre un token
    date: Date,
    data: {
        objectPhoto: String,
        objectDescription: String
        },
}
```
Quand le serveur envoie une notification
```json
{
    "type": "notification",
    "status": "ok",
    "token": "null",
    "data": {
        "type": String //warn, info, announce, death
        "message": String
    }
}