471 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			471 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| openapi: 3.0.0
 | |
| info:
 | |
|   title: Truth Inquiry
 | |
|   description: "Serious Game sur le theme de la communication non verbale"
 | |
|   version: 1.0.0
 | |
|   contact:
 | |
|     email: contact@simailadjalim.fr
 | |
|   license:
 | |
|     name: MIT
 | |
|     url: https://www.mit.edu/~amini/LICENSE.md
 | |
| 
 | |
| servers:
 | |
|   - url: truthInquiry.simailadjalim.fr
 | |
| 
 | |
| # Definition des tags ------------------------
 | |
| tags:
 | |
|   - name: "pages"
 | |
|     description: "Pages endpoints"
 | |
|   - name: "api"
 | |
|     description: "Api endpoints"
 | |
| 
 | |
| # Endpoints
 | |
| paths:
 | |
|   /:
 | |
|     get:
 | |
|       tags:
 | |
|         - pages
 | |
|       summary: "Main page"
 | |
|       description: "Home page of the game, it serves as a hub of all other pages : legal mentions, credits and game pages"
 | |
|       operationId: homePage
 | |
|       responses:
 | |
|         "200":
 | |
|           description: "return the home page of the game"
 | |
|           content:
 | |
|             text/html: {}
 | |
| 
 | |
|   /solo:
 | |
|     get:
 | |
|       tags:
 | |
|         - pages
 | |
|       summary: "solo game page"
 | |
|       description: "Sigle player game page, it holds all of the game logic from the player entering their username to the end of the game"
 | |
|       operationId: singlePage
 | |
|       responses:
 | |
|         "200":
 | |
|           description: "returns the game page"
 | |
|           content:
 | |
|             text/html: {}
 | |
| 
 | |
|   /multi:
 | |
|     get:
 | |
|       tags:
 | |
|         - pages
 | |
|       summary: "multiplayer game page"
 | |
|       description: "Multi player game page, it holds all of the game logic from the game creator starting the game to its end"
 | |
|       operationId: multiPage
 | |
|       responses:
 | |
|         "200":
 | |
|           description: "returns the game page"
 | |
|           content:
 | |
|             text/html: {}
 | |
| 
 | |
|   /legal:
 | |
|     get:
 | |
|       tags:
 | |
|         - pages
 | |
|       summary: "legal mention page"
 | |
|       description: "The legal mention page, holds the legal mentions such as where is hosted the website and who made it"
 | |
|       operationId: mentionLegales
 | |
|       responses:
 | |
|         "200":
 | |
|           description: "returns the legal mention page"
 | |
|           content:
 | |
|             text/html: {}
 | |
| 
 | |
|   /lobby/{game_id}:
 | |
|     get:
 | |
|       tags:
 | |
|         - pages
 | |
|       summary: "multiplayer lobby room"
 | |
|       description: "The multiplayer lobby room is shown before a multiplayer game starts, is shows the current member of the game, it is reacheable by the game id shown in the page and in the url"
 | |
|       parameters:
 | |
|         - in: path
 | |
|           name: game_id
 | |
|           schema:
 | |
|             type: string
 | |
|           required: true
 | |
|           description: gameId
 | |
| 
 | |
| 
 | |
|       operationId: invite
 | |
|       responses:
 | |
|         "200":
 | |
|           description: "return the lobby page."
 | |
|           content:
 | |
|             text/html: {}
 | |
|         "404":
 | |
|           description: "This does not exist or does not exist anymore"
 | |
|           content:
 | |
|             text/html: {}
 | |
| 
 | |
|   # Api ------------------------
 | |
| 
 | |
|   /api/v1/createGame:
 | |
|     post:
 | |
|       tags:
 | |
|         - api
 | |
|       summary: "Create a game session"
 | |
|       description: "This endpoint create a game in the server, the username passed as parametter is set as the game owner"
 | |
|       operationId: create_game
 | |
|       requestBody:
 | |
|         description: "username to set as game owner"
 | |
|         required: true
 | |
|         content:
 | |
|           application/json:
 | |
|             schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                 username:
 | |
|                   $ref: "#/components/schemas/username"
 | |
| 
 | |
|       responses:
 | |
|         "200":
 | |
|           description: "Returns a object, with the error code, and a game_id."
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 $ref: "#/components/schemas/newGameData"
 | |
|             text/plain; charset=utf-8:
 | |
|               schema:
 | |
|                 type: string
 | |
| 
 | |
|   /api/v1/joinGame:
 | |
|     post:
 | |
|       tags:
 | |
|         - api
 | |
|       summary: "Adds user to an existing game"
 | |
|       description: "This endpoint adds the username passed as parameter to the game identified by its game_id also passed as the parametter"
 | |
|       operationId: join_game
 | |
|       requestBody:
 | |
|         description: "object with a game_id and a username"
 | |
|         required: true
 | |
|         content:
 | |
|           application/json:
 | |
|             schema:
 | |
|               $ref: "#/components/schemas/joinGameData"
 | |
| 
 | |
|       responses:
 | |
|         "200":
 | |
|           description: "returns a object with the error code."
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   error:
 | |
|                     $ref: "#/components/schemas/error"
 | |
|             text/plain; charset=utf-8:
 | |
|               schema:
 | |
|                 type: string
 | |
| 
 | |
|   /api/v1/isOwner:
 | |
|     post:
 | |
|       tags:
 | |
|         - api
 | |
|       summary: "ask if the user is the game owner"
 | |
|       description : "This endpoint it used to know if the username stored in the cookie is the owner of the game"
 | |
|       operationId: is_owner
 | |
|       parameters:
 | |
|         - in: cookie
 | |
|           name: session
 | |
|           description: Local session, holds data used to authentificate the user and the games they belong.
 | |
|           required: true
 | |
|           schema:
 | |
|               type: object
 | |
|       responses:
 | |
|         "200":
 | |
|           description: "returns an object with the error code."
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   error:
 | |
|                     $ref: "#/components/schemas/error"
 | |
|                   owner:
 | |
|                     type: boolean
 | |
|                     description: "boolean determining if the palyer is the owner of the gzame"
 | |
| 
 | |
|   /api/v1/startGame:
 | |
|     post:
 | |
|       tags:
 | |
|         - api
 | |
|       summary: "Start the game"
 | |
|       description: "Starts the game and generate necessary data"
 | |
|       operationId: startGame
 | |
|       parameters:
 | |
|         - in: cookie
 | |
|           name: session
 | |
|           description: Local session, holds data used to authentificate the user and the games they belong.
 | |
|           required: true
 | |
|           schema:
 | |
|               type: object
 | |
| 
 | |
|       responses:
 | |
|         "200":
 | |
|           description: "returns a object with the error code."
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   error:
 | |
|                     $ref: "#/components/schemas/error"
 | |
| 
 | |
|   /api/v1/getGameData:
 | |
|     post:
 | |
|       tags:
 | |
|         - api
 | |
|       summary: "get game data"
 | |
|       description: "Guess the game from the cookie and returns general game data necessary to the client to work properly"
 | |
|       operationId: getGame
 | |
|       parameters:
 | |
|         - in: cookie
 | |
|           name: session
 | |
|           description: Local session, holds data used to authentificate the user and the games they belong.
 | |
|           required: true
 | |
|           schema:
 | |
|               type: object
 | |
|       responses:
 | |
|         "200":
 | |
|           description: "returns a object with the error code."
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 $ref: "#/components/schemas/gameData"
 | |
| 
 | |
|   /api/v1/getGameMembers:
 | |
|     post:
 | |
|       tags:
 | |
|         - api
 | |
|       summary: "Get game members"
 | |
|       description: "Guess the game from the cookie and returns the members of that game"
 | |
|       operationId: getMembers
 | |
|       parameters:
 | |
|         - in: cookie
 | |
|           name: session
 | |
|           description: Local session, holds data used to authentificate the user and the games they belong.
 | |
|           required: true
 | |
|           schema:
 | |
|               type: object
 | |
|       responses:
 | |
|         "200":
 | |
|           description: "List of members in the game"
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   "error":
 | |
|                     $ref: "#/components/schemas/error"
 | |
|                   "members":
 | |
|                     type: array
 | |
|                     items:
 | |
|                       type: string
 | |
| 
 | |
|   /api/v1/hasJoined:
 | |
|     post:
 | |
|       tags:
 | |
|         - api
 | |
|       summary: "Check if the player is in a given game"
 | |
|       description: "Checks the cookie to see if the client is currently in a given game"
 | |
|       operationId: has_joined
 | |
|       parameters:
 | |
|         - in: cookie
 | |
|           name: session
 | |
|           description: Local session, holds data used to authentificate the user and the games they belong.
 | |
|           required: true
 | |
|           schema:
 | |
|               type: object
 | |
|       responses:
 | |
|         "200":
 | |
|           description: "Returns error code and a boolean determining if the player is in the game"
 | |
|           content:
 | |
|             application/json:
 | |
|               schema:
 | |
|                 type: object
 | |
|                 properties:
 | |
|                   "error":
 | |
|                     $ref: "#/components/schemas/error"
 | |
|                   "joined":
 | |
|                     type: boolean
 | |
|   
 | |
|   /api/v1/getNpcImage:
 | |
|     post: 
 | |
|       tags:
 | |
|         - "api"
 | |
|       summary: Get an image from its ID
 | |
|       description: >
 | |
|         This endpoint is used to show NPC images in the result page. The image id is provided by the server upon
 | |
|         finishing the game. a static ID is needed because the server delete information related to the game after finishing it        
 | |
|       operationId: get_npc_image
 | |
|       requestBody:
 | |
|         description: "image_id we want the image of"
 | |
|         required: true
 | |
|         content:
 | |
|           application/json:
 | |
|             schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                 image_id:
 | |
|                   type: integer
 | |
|       responses:
 | |
|         "200":
 | |
|           description: "image"
 | |
|           content:
 | |
|             image/png:
 | |
|               schema:
 | |
|                 type: string
 | |
| 
 | |
|   /api/v1/getNpcReaction:
 | |
|     post:
 | |
|       tags:
 | |
|         - api
 | |
|       summary: "Get an image corresponding to the reaction of a NPC in this game"
 | |
|       description: "This endpoint is used during the game to get a random image corresponding to the assigned reaction of a NPC. The image may change every request"
 | |
|       operationId: get_npc_reaction
 | |
|       parameters:
 | |
|         - in: cookie
 | |
|           name: session
 | |
|           description: Local session, holds data used to authentificate the user and the games they belong.
 | |
|           required: true
 | |
|           schema:
 | |
|               type: object
 | |
|       requestBody:
 | |
|         description: "ID of the NPC we want to get the image of"
 | |
|         required: true
 | |
|         content:
 | |
|           application/json:
 | |
|             schema:
 | |
|               type: object
 | |
|               properties:
 | |
|                 npcid:
 | |
|                   type: integer
 | |
|       responses:
 | |
|         "200":
 | |
|           description: "image"
 | |
|           content:
 | |
|             image/png:
 | |
|               schema:
 | |
|                 type: string
 | |
|   #/api/v1/gameProgress
 | |
|   #/api/v1/submitAnwers
 | |
| 
 | |
|       
 | |
| components: #----------------------------------
 | |
|   schemas:
 | |
|     error:
 | |
|       type: integer
 | |
|       description: "request error code"
 | |
|       enum:
 | |
|         - 0
 | |
|         - 1
 | |
| 
 | |
|     game_id:
 | |
|       type: string
 | |
|       description: "ID of the game"
 | |
| 
 | |
|     username:
 | |
|       type: string
 | |
|       description: "player username"
 | |
| 
 | |
|     npc:
 | |
|       type: object
 | |
|       description: "npc to interogate in the game"
 | |
|       properties:
 | |
|         "QA_0" :
 | |
|           type: string
 | |
|           description: "'Where?' type answer"
 | |
|         "QA_1" :
 | |
|           type: string
 | |
|           description: "'With who?' type answer"
 | |
|         name:
 | |
|           type: string
 | |
|           description: "npc name"
 | |
| 
 | |
|     salle:
 | |
|       type: object
 | |
|       description: "object representing a single room the the game story"
 | |
|       properties:
 | |
|         name:
 | |
|           type: string
 | |
|           description: virtual room name
 | |
|         npcs:
 | |
|           type: array
 | |
|           description: array of the npc_id present in the room, should always be at the number of two, execept for the bulgar who was alone in the room
 | |
|           items:
 | |
|             type: string
 | |
|     #____________________________#
 | |
| 
 | |
|     game:
 | |
|       type: object
 | |
|       description: "Main game data, should be queried once"
 | |
|       properties:
 | |
|         npcs:
 | |
|           type: object
 | |
|           description: "List of the randomly chosen npc, with their answer for each type of questions"
 | |
|           properties:
 | |
|             "npc_id_0":
 | |
|               $ref: "#/components/schemas/npc"
 | |
|             "npc_id_1":
 | |
|               $ref: "#/components/schemas/npc"
 | |
|             "npc_id_2":
 | |
|               $ref: "#/components/schemas/npc"
 | |
|             "npc_id_3":
 | |
|               $ref: "#/components/schemas/npc"
 | |
|             "npc_id_4":
 | |
|               $ref: "#/components/schemas/npc"
 | |
|         questions:
 | |
|           type: object
 | |
|           description: "Question identified by their type, randomly chosen by the server"
 | |
|           properties:
 | |
|             "QA_0":
 | |
|               type: string
 | |
|               description: "'Where?' type question"
 | |
|             "QA_1":
 | |
|               type: string
 | |
|               description: "'With who?' type question"
 | |
|         rooms:
 | |
|           type: object
 | |
|           description: "object storing the virtual rooms that holds the npcs"
 | |
|           properties:
 | |
|             "room_id_0":
 | |
|              $ref: "#/components/schemas/salle"
 | |
|             "room_id_1":
 | |
|              $ref: "#/components/schemas/salle"
 | |
|             "room_id_2":
 | |
|              $ref: "#/components/schemas/salle"
 | |
|         traits:
 | |
|           type : array
 | |
|           description: "List of available traits on in this game session"
 | |
|           items:
 | |
|             type: string
 | |
| 
 | |
|     newGameData:
 | |
|       type: object
 | |
|       properties:
 | |
|         error:
 | |
|           $ref: "#/components/schemas/error"
 | |
|         game_id:
 | |
|           $ref: "#/components/schemas/game_id"
 | |
|         
 | |
| 
 | |
|     joinGameData:
 | |
|       type: object
 | |
|       properties:
 | |
|         game_id:
 | |
|           $ref: "#/components/schemas/game_id"
 | |
|         username:
 | |
|           $ref: "#/components/schemas/username"
 | |
| 
 | |
|     gameData:
 | |
|       type: object
 | |
|       properties:
 | |
|         error:
 | |
|           $ref: "#/components/schemas/error"
 | |
|         gameData:
 | |
|           $ref: "#/components/schemas/game"
 | |
| 
 | |
| 
 |