register_swagger = { "methods": ["POST"], "tags": ["User"], "description": "Registers a new user in the app. Also sends a notification to the user via the provided email", "parameters": [ { "in": "body", "name": "body", "description": 'Username, displayname and password of the new user\n- Username can be only lowercase and up to 64 characters\n- Displayname can contain special characters (. _ -) and lower and upper characters\n- Password must be at least 8 characters long, contain both lower and upper characters, numbers and special characters\n- Email has to be in format "name@domain.tld" and up to 64 characters long in total', "required": True, "schema": { "type": "object", "properties": { "username": {"type": "string", "example": "mycoolusername"}, "email": {"type": "string", "example": "mymail@dot.com"}, "displayname": {"type": "string", "example": "MyCoolDisplayName"}, "password": {"type": "string", "example": "My5tr0ngP@55w0rd"}, }, }, } ], } login_swagger = { "methods": ["POST"], "tags": ["User"], "description": "Logs in using username and password and returns a JWT token for further authorization of requests.\n**The token is valid for 1 hour**", "parameters": [ { "in": "body", "name": "body", "description": "Username and password payload", "required": True, "schema": { "type": "object", "properties": { "username": {"type": "string", "example": "mycoolusername"}, "password": {"type": "string", "example": "MyStrongPassword123"}, }, }, } ], "responses": { "200": { "description": "Returns a fresh token", "schema": { "type": "object", "properties": { "token": { "type": "string", "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmcmVzaCI6ZmFsc2UsImlhdCI6MTcxMDMyMjkyOCwianRpIjoiZDFhYzQxZDktZjA4NC00MmYzLThlMWUtZWFmZjJiNGU1MDAyIiwidHlwZSI6ImFjY2VzcyIsInN1YiI6MjMwMDEsIm5iZiI6MTcxMDMyMjkyOCwiZXhwIjoxNzEwMzI2NTI4fQ.SW7LAi1j5vDOEIvzeN-sy0eHPP9PFJFkXYY029O35w0", } }, }, }, "400": { "description": "Possible causes:\n- Missing username or password from request.\n- Nonexistent username" }, "401": {"description": "Password is incorrect"}, }, } logout_swagger = { "methods": ["DELETE"], "tags": ["User"], "security": [{"JWT": []}], "description": "Logs out the user via provided JWT token", "parameters": [], "responses": {"200": {"description": "User successfully logged out"}}, } update_swagger = { "methods": ["PUT"], "tags": ["User"], "security": [{"JWT": []}], "description": "Updates user attributes.", "parameters": [ { "in": "body", "name": "body", "description": "Attributes to update for the user.", "required": True, "schema": { "type": "object", "properties": { "new_username": {"type": "string", "example": "mycoolusername"}, "new_email": {"type": "string", "example": "mymail@dot.com"}, "new_displayname": { "type": "string", "example": "MyCoolDisplayName", }, "new_password": {"type": "string", "example": "My5tr0ngP@55w0rd"}, }, }, } ], "responses": { "200": {"description": "User attributes updated successfully."}, "400": {"description": "Bad request. Check the request body for errors."}, "401": {"description": "Unauthorized. User must be logged in."}, "409": {"description": "Conflict. Check the response message for details."}, "500": { "description": "Internal server error. Contact the system administrator." }, }, } delete_swagger = { "methods": ["DELETE"], "tags": ["User"], "security": [{"JWT": []}], "description": "Deletes a user via JWT token", "parameters": [], "responses": {"200": {"description": "User successfully deleted"}}, }