-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathopenapi.json
1 lines (1 loc) · 24.8 KB
/
openapi.json
1
{"openapi": "3.0.2", "info": {"title": "Instagram Clone Backend", "description": "**FastAPI** and **Beanie** *(MongoDB)* helps you do awesome stuff. \ud83d\ude80", "contact": {"name": "Juan Pablo Cadena Aguilar", "url": "https://www.github.com/jpcadena", "email": "[email protected]"}, "license": {"name": "Apache 2.0", "url": "https://www.apache.org/licenses/LICENSE-2.0.html"}, "version": "0.1.0"}, "paths": {"/api/users": {"get": {"tags": ["users"], "summary": "Get Users", "description": "Get all Users basic information from the system.\n- :return: List of Users retrieved from database with username and email\n- :rtype: list[UserDisplay]", "operationId": "get_users", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"title": "Response Users-Get Users", "type": "array", "items": {"$ref": "#/components/schemas/UserDisplay"}}}}}}, "security": [{"JWT": []}]}, "post": {"tags": ["users"], "summary": "Register User", "description": "Register new user into the system.\n- :param user: Body Object with username, email, first name,\nmiddle name [OPTIONAL], last name, password, gender [OPTIONAL],\nbirthdate [OPTIONAL], phone_number [OPTIONAL], address [OPTIONAL],\ncity [OPTIONAL], state [OPTIONAL] and country [OPTIONAL].\n- :type user: UserCreate\n- :return: User created with its name and email\n- :rtype: UserDisplay", "operationId": "register_user", "requestBody": {"content": {"application/json": {"schema": {"title": "New user", "allOf": [{"$ref": "#/components/schemas/UserCreate"}], "description": "New user to register"}}}, "required": true}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserDisplay"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/users/me": {"get": {"tags": ["users"], "summary": "Get Me", "description": "Get current user information from the system.\n- :return: Current User information retrieved\n- :rtype: UserDisplay", "operationId": "get_me", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserMe"}}}}}, "security": [{"JWT": []}]}}, "/api/users/{user_id}": {"get": {"tags": ["users"], "summary": "Get User", "description": "Get User basic information by ID from the system.\n- :param user_id: Path parameter of User ID to be searched.\n- :type user_id: PydanticObjectId\n- :return: User retrieved from database with username and email\n- :rtype: UserDisplay", "operationId": "get_user", "parameters": [{"description": "ID of the User to searched", "required": true, "schema": {"title": "User ID", "type": "string", "description": "ID of the User to searched", "examples": ["5eb7cf5a86d9755df3a6c593", "5eb7cfb05e32e07750a1756a"]}, "example": "63aefa38afda3a176c1e3562", "name": "user_id", "in": "path"}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserDisplay"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"JWT": []}]}, "put": {"tags": ["users"], "summary": "Update User", "description": "Update user information by ID into the system.\n- :param user_id: Path parameter of User ID to be updated.\n- :type user_id: PydanticObjectId\n- :param user: Body User object with new data to update that includes\n username, email, password [OPTIONAL], gender [OPTIONAL],\n phone_number [OPTIONAL], address [OPTIONAL], city [OPTIONAL],\n state [OPTIONAL] and country [OPTIONAL].\n- :type user: UserUpdate\n- :return: List of Users retrieved from database with username and email\n- :rtype: list[UserDisplay]", "operationId": "update_user", "parameters": [{"description": "ID of the User to updated", "required": true, "schema": {"title": "User ID", "type": "string", "description": "ID of the User to updated", "examples": ["5eb7cf5a86d9755df3a6c593", "5eb7cfb05e32e07750a1756a"]}, "example": "63aefa38afda3a176c1e3562", "name": "user_id", "in": "path"}], "requestBody": {"content": {"application/json": {"schema": {"title": "User data", "allOf": [{"$ref": "#/components/schemas/UserUpdate"}], "description": "New user data to update"}}}, "required": true}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/UserDisplay"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"JWT": []}]}, "delete": {"tags": ["users"], "summary": "Delete User", "description": "Delete user by ID from the system.\n- :param user_id: Path parameter of User ID to be deleted.\n- :type user_id: PydanticObjectId", "operationId": "delete_user", "parameters": [{"description": "ID of the User to deleted", "required": true, "schema": {"title": "User ID", "type": "string", "description": "ID of the User to deleted", "examples": ["5eb7cf5a86d9755df3a6c593", "5eb7cfb05e32e07750a1756a"]}, "example": "63aefa38afda3a176c1e3562", "name": "user_id", "in": "path"}], "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"JWT": []}]}}, "/api/posts": {"get": {"tags": ["posts"], "summary": "Get Posts", "description": "Retrieve all posts from the system.\n- :return: All posts from logged-in user\n- :rtype: list[PostDisplay]", "operationId": "get_posts", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"title": "Response Posts-Get Posts", "type": "array", "items": {"$ref": "#/components/schemas/PostDisplay"}}}}}}, "security": [{"JWT": []}]}, "post": {"tags": ["posts"], "summary": "Create Post", "description": "Create a new post into the system.\n- :param post: Body Object with image_url and caption to be created\n- :type post: PostCreate\n- :return: Post created with id, image_url, caption,\ntimestamp for creation, user ID\n- :rtype: PostDisplay", "operationId": "create_post", "requestBody": {"content": {"application/json": {"schema": {"title": "New post", "allOf": [{"$ref": "#/components/schemas/PostCreate"}], "description": "New post to create"}}}, "required": true}, "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PostDisplay"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"JWT": []}]}}, "/api/posts/{post_id}": {"get": {"tags": ["posts"], "summary": "Get Post", "description": "Search for specific Post by ID from the system.\n- :param post_id: Path Parameter of Post ID to search\n- :type post_id: PydanticObjectId\n- :return: Found Post from logged-in user\n- :rtype: PostDisplay", "operationId": "get_post", "parameters": [{"description": "ID of the PostCreate to searched", "required": true, "schema": {"title": "PostCreate ID", "type": "string", "description": "ID of the PostCreate to searched", "examples": ["5eb7cf5a86d9755df3a6c593", "5eb7cfb05e32e07750a1756a"]}, "example": 1, "name": "post_id", "in": "path"}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/PostDisplay"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"JWT": []}]}, "delete": {"tags": ["posts"], "summary": "Delete Post", "description": "Delete post by its ID from the system.\n- :param post_id: Path parameter of Post ID to be deleted.\n- :type post_id: PydanticObjectId\n- :return: Response with data about deleted Post\n- :rtype: Response", "operationId": "delete_post", "parameters": [{"description": "ID of the Post to deleted", "required": true, "schema": {"title": "Post ID", "type": "string", "description": "ID of the Post to deleted", "examples": ["5eb7cf5a86d9755df3a6c593", "5eb7cfb05e32e07750a1756a"]}, "example": "63aefa38afda3a176c1e3562", "name": "post_id", "in": "path"}], "responses": {"204": {"description": "Successful Response"}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}, "security": [{"JWT": []}]}}, "/api/authentication/login": {"post": {"tags": ["authentication"], "summary": "Login", "description": "Login with OAuth2 authentication using request form.\n- :param user: Object from request body with username and password\n as DI\n- :type user: OAuth2PasswordRequestForm\n- :return: Token information with access token, its type and\n refresh token\n- :rtype: dict", "operationId": "login", "requestBody": {"content": {"application/x-www-form-urlencoded": {"schema": {"$ref": "#/components/schemas/Body_authentication-login"}}}, "required": true}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/TokenResponse"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/authentication/refresh_token": {"get": {"tags": ["authentication"], "summary": "Refresh Token", "description": "Generate new access token based on given refresh token.\n- :param token: Refresh token to generate a new access token\n- :type token: str\n- :return: New access token for the user\n- :rtype: dict", "operationId": "refresh_token", "parameters": [{"description": "Refresh Token to generate a new access token", "required": true, "schema": {"title": "Refresh Token", "type": "string", "description": "Refresh Token to generate a new access token"}, "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9", "name": "token", "in": "query"}], "responses": {"201": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/authentication/password-recovery-by-email": {"post": {"tags": ["authentication"], "summary": "Recover Password By Email", "description": "Password Recovery method by e-mail.\n- :param email: Query parameter of Email to recover password from User\n- :type email: EmailStr\n- :return: Confirmation message for email sent\n- :rtype: dict", "operationId": "recover_password_by_email", "parameters": [{"description": "Email to recover password", "required": true, "schema": {"title": "Email", "type": "string", "description": "Email to recover password", "format": "email"}, "example": "[email protected]", "name": "email", "in": "query"}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Msg"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/authentication/password-recovery-by-username": {"post": {"tags": ["authentication"], "summary": "Recover Password By Username", "description": "Password Recovery method by username.\n- :param username: Query parameter of Username to recover password\n from User\n- :type user: str\n- :return: Confirmation message for email sent\n- :rtype: dict", "operationId": "recover_password_by_username", "parameters": [{"description": "Username to recover password", "required": true, "schema": {"title": "Username", "type": "string", "description": "Username to recover password"}, "example": "username", "name": "username", "in": "query"}], "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Msg"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/authentication/reset-password": {"post": {"tags": ["authentication"], "summary": "Reset Password", "description": "Reset password method.\n- :param data: Body Object with token and new password to reset\n- :type token: TokenResetPassword\n- :return: Confirmation message for password changed\n- :rtype: dict", "operationId": "reset_password", "requestBody": {"content": {"application/json": {"schema": {"title": "Token and new password", "allOf": [{"$ref": "#/components/schemas/TokenResetPassword"}], "description": "Token and new password to reset"}}}, "required": true}, "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Msg"}}}}, "422": {"description": "Validation Error", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/HTTPValidationError"}}}}}}}, "/api/authentication/logout": {"post": {"tags": ["authentication"], "summary": "Logout", "description": "Log out method.\n- :return: Response to redirect to homepage\n- :rtype: RedirectResponse", "operationId": "logout", "responses": {"302": {"description": "Successful Response"}}, "security": [{"JWT": []}]}}, "/": {"get": {"summary": "Root", "description": "Function to retrieve homepage.\n- :return: Welcome message\n- :rtype: Msg", "responses": {"200": {"description": "Successful Response", "content": {"application/json": {"schema": {}}}}}}}}, "components": {"schemas": {"Body_authentication-login": {"title": "Body_authentication-login", "required": ["username", "password"], "type": "object", "properties": {"grant_type": {"title": "Grant Type", "pattern": "password", "type": "string"}, "username": {"title": "Username", "type": "string"}, "password": {"title": "Password", "type": "string"}, "scope": {"title": "Scope", "type": "string", "default": ""}, "client_id": {"title": "Client Id", "type": "string"}, "client_secret": {"title": "Client Secret", "type": "string"}}}, "Gender": {"title": "Gender", "enum": ["male", "female", "other"], "type": "string", "description": "Gender class based on Enum"}, "HTTPValidationError": {"title": "HTTPValidationError", "type": "object", "properties": {"detail": {"title": "Detail", "type": "array", "items": {"$ref": "#/components/schemas/ValidationError"}}}}, "Msg": {"title": "Msg", "required": ["msg"], "type": "object", "properties": {"msg": {"title": "Message", "type": "string", "description": "Message response"}}, "description": "Msg for Response that inherits from BaseMsg (Pydantic Base Model) and\n ConcreteMsg (Abstract Base Class).", "example": {"msg": "This is a confirmation message."}}, "PostCreate": {"title": "PostCreate", "required": ["image_url", "caption"], "type": "object", "properties": {"image_url": {"title": "Post image URL", "maxLength": 2083, "minLength": 1, "type": "string", "description": "URL of the Post image", "format": "uri"}, "caption": {"title": "Post caption", "maxLength": 2200, "minLength": 1, "type": "string", "description": "Caption of the Post"}}, "description": "PostCreate for Request based on Pydantic Base Model.", "example": {"image_url": "https://imgur.com/", "caption": "My caption"}}, "PostDisplay": {"title": "PostDisplay", "required": ["image_url", "caption"], "type": "object", "properties": {"image_url": {"title": "Post image URL", "maxLength": 2083, "minLength": 1, "type": "string", "description": "URL of the Post image", "format": "uri"}, "caption": {"title": "Post caption", "maxLength": 2200, "minLength": 1, "type": "string", "description": "Caption of the Post"}, "created_at": {"title": "Created at", "type": "string", "description": "Timestamp for creation of the PostCreate", "format": "date-time", "default": "2023-01-08T19:02:23.503412"}}, "description": "PostDisplay for Response that inherits from Post Create.", "example": {"image_url": "https://imgur.com/", "caption": "My caption", "created_at": "2023-01-09T00:02:23.503412"}}, "TokenResetPassword": {"title": "TokenResetPassword", "required": ["token", "password"], "type": "object", "properties": {"token": {"title": "Token", "type": "string", "description": "Access token"}, "password": {"title": "New password", "maxLength": 14, "minLength": 8, "pattern": "^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,14}$", "type": "string", "description": "New password to reset"}}, "description": "Token Reset Password for Request based on Pydantic Base Model.", "example": {"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c", "password": "Hk7pH9*35Fu&3U"}}, "TokenResponse": {"title": "TokenResponse", "required": ["access_token", "token_type", "refresh_token"], "type": "object", "properties": {"access_token": {"title": "Token", "type": "string", "description": "Access token"}, "token_type": {"title": "Token type", "type": "string", "description": "Type of the token"}, "refresh_token": {"title": "Refresh Token", "type": "string", "description": "Refresh token"}}, "description": "Token for Response based on Pydantic Base Model.", "example": {"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2NzA4MTg0NDUsImlzcyI6Imh0dHBzOi8vd3d3Lmluc3RhZ3JhbWNsb25lLmNvbSIsInN1YiI6MSwiZW1haWwiOiJqcGNhZGVuYUBlc3BvbC5lZHUuZWMiLCJpYXQiOjE2NzA4MTQ1NDUsInByZWZlcnJlZF91c2VybmFtZSI6ImpwY2FkZW5hIiwidXBkYXRlZF9hdCI6bnVsbH0.STF4EOTtyO81lKNR4H36G7l2uRuUBfFvfuKUd4CMqJM", "token_type": "bearer", "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2NzA4MTg0NDUsImlzcyI6Imh0dHBzOi8vd3d3Lmluc3RhZ3JhbWNsb25lLmNvbSIsInN1YiI6MSwiZW1haWwiOiJqcGNhZGVuYUBlc3BvbC5lZHUuZWMiLCJpYXQiOjE2NzA4MTQ1NDUsInByZWZlcnJlZF91c2VybmFtZSI6ImpwY2FkZW5hIiwidXBkYXRlZF9hdCI6bnVsbH0.STF4EOTtyO81lKNR4H36G7l2uRuUBfFvfuKUd4CMqJM"}}, "UserCreate": {"title": "UserCreate", "required": ["username", "email", "given_name", "family_name", "password"], "type": "object", "properties": {"username": {"title": "Username", "maxLength": 50, "minLength": 1, "type": "string", "description": "Username to identify the user", "unique": true}, "email": {"title": "Email", "type": "string", "description": "Preferred e-mail address of the User", "format": "email", "unique": true}, "phone_number": {"title": "Telephone", "pattern": "\\(?\\+[0-9]{1,3}\\)? ?-?[0-9]{1,3} ?-?[0-9]{3,5}?-?[0-9]{4}( ?-?[0-9]{3})? ?(\\w{1,10}\\s?\\d{1,6})?", "type": "string", "description": "Preferred telephone number of the User"}, "address": {"title": "Address", "type": "string", "description": "Preferred postal address of the User"}, "given_name": {"title": "First name", "maxLength": 50, "minLength": 1, "type": "string", "description": "Given name(s) or first name(s) of the User"}, "family_name": {"title": "Last name", "maxLength": 50, "minLength": 1, "type": "string", "description": "Surname(s) or last name(s) of the User"}, "middle_name": {"title": "Middle name", "maxLength": 50, "type": "string", "description": "Middle name(s) of the User"}, "gender": {"title": "Gender", "allOf": [{"$ref": "#/components/schemas/Gender"}], "description": "Gender of the User", "default": "male"}, "birthdate": {"title": "Birthdate", "type": "string", "description": "Birthday of the User", "format": "date"}, "updated_at": {"title": "Updated at", "type": "string", "description": "Time the User information was last updated", "format": "date-time"}, "city": {"title": "City", "type": "string", "description": "City for address of the User"}, "state": {"title": "State", "type": "string", "description": "State for address of the User"}, "country": {"title": "Country", "type": "string", "description": "Country for address of the User"}, "password": {"title": "Password", "maxLength": 14, "minLength": 8, "pattern": "^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,14}$", "type": "string", "description": "Password of the User"}}, "description": "User Create for Request that inherits from User Display with\n additional fields.", "example": {"username": "username", "email": "[email protected]", "given_name": "Some", "middle_name": "One", "family_name": "Example", "password": "Hk7pH9*35Fu&3U", "gender": "male", "birthdate": "2004-01-01", "phone_number": "+593987654321", "address": "2403 S Bell Blvd", "city": "Austin", "state": "Texas", "country": "United States"}}, "UserDisplay": {"title": "UserDisplay", "required": ["username", "email"], "type": "object", "properties": {"username": {"title": "Username", "maxLength": 50, "minLength": 1, "type": "string", "description": "Username to identify the user", "unique": true}, "email": {"title": "Email", "type": "string", "description": "Preferred e-mail address of the User", "format": "email", "unique": true}}, "description": "User Display for Response based on Pydantic Base Model.", "example": {"username": "username", "email": "[email protected]"}}, "UserMe": {"title": "UserMe", "required": ["username", "email", "given_name", "family_name"], "type": "object", "properties": {"username": {"title": "Username", "maxLength": 50, "minLength": 1, "type": "string", "description": "Username to identify the user", "unique": true}, "email": {"title": "Email", "type": "string", "description": "Preferred e-mail address of the User", "format": "email", "unique": true}, "phone_number": {"title": "Telephone", "pattern": "\\(?\\+[0-9]{1,3}\\)? ?-?[0-9]{1,3} ?-?[0-9]{3,5}?-?[0-9]{4}( ?-?[0-9]{3})? ?(\\w{1,10}\\s?\\d{1,6})?", "type": "string", "description": "Preferred telephone number of the User"}, "address": {"title": "Address", "type": "string", "description": "Preferred postal address of the User"}, "given_name": {"title": "First name", "maxLength": 50, "minLength": 1, "type": "string", "description": "Given name(s) or first name(s) of the User"}, "family_name": {"title": "Last name", "maxLength": 50, "minLength": 1, "type": "string", "description": "Surname(s) or last name(s) of the User"}, "middle_name": {"title": "Middle name", "maxLength": 50, "type": "string", "description": "Middle name(s) of the User"}, "gender": {"title": "Gender", "allOf": [{"$ref": "#/components/schemas/Gender"}], "description": "Gender of the User", "default": "male"}, "birthdate": {"title": "Birthdate", "type": "string", "description": "Birthday of the User", "format": "date"}, "updated_at": {"title": "Updated at", "type": "string", "description": "Time the User information was last updated", "format": "date-time"}, "city": {"title": "City", "type": "string", "description": "City for address of the User"}, "state": {"title": "State", "type": "string", "description": "State for address of the User"}, "country": {"title": "Country", "type": "string", "description": "Country for address of the User"}}, "description": "User Me for Response that inherits from User Display with\n additional fields.", "example": {"username": "username", "email": "[email protected]", "given_name": "Some", "middle_name": "One", "family_name": "Example", "gender": "male", "birthdate": "2004-01-01", "phone_number": "+593987654321", "address": "2403 S Bell Blvd", "city": "Austin", "state": "Texas", "country": "United States"}}, "UserUpdate": {"title": "UserUpdate", "required": ["username", "email"], "type": "object", "properties": {"username": {"title": "Username", "maxLength": 50, "minLength": 1, "type": "string", "description": "Username to identify the user", "unique": true}, "email": {"title": "Email", "type": "string", "description": "Preferred e-mail address of the User", "format": "email", "unique": true}, "phone_number": {"title": "Telephone", "pattern": "\\(?\\+[0-9]{1,3}\\)? ?-?[0-9]{1,3} ?-?[0-9]{3,5}?-?[0-9]{4}( ?-?[0-9]{3})? ?(\\w{1,10}\\s?\\d{1,6})?", "type": "string", "description": "Preferred telephone number of the User"}, "address": {"title": "Address", "type": "string", "description": "Preferred postal address of the User"}, "city": {"title": "City", "type": "string", "description": "City for address of the User"}, "state": {"title": "State", "type": "string", "description": "State for address of the User"}, "country": {"title": "Country", "type": "string", "description": "Country for address of the User"}, "password": {"title": "New password", "maxLength": 14, "minLength": 8, "pattern": "^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,14}$", "type": "string", "description": "New password of the User"}}, "description": "User Update for Request that inherits from UserDisplay with\n additional fields.", "example": {"username": "new_username", "email": "[email protected]", "phone_number": "+593987654321", "address": "2403 S Bell Blvd", "city": "Austin", "state": "Texas", "country": "United States", "password": "NewPassword1-"}}, "ValidationError": {"title": "ValidationError", "required": ["loc", "msg", "type"], "type": "object", "properties": {"loc": {"title": "Location", "type": "array", "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}}, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}}}}, "securitySchemes": {"JWT": {"type": "oauth2", "flows": {"password": {"scopes": {}, "tokenUrl": "/authentication/login"}}}}}}