{"openapi": "3.1.0", "info": {"contact": {"email": "contact@valbou.fr", "name": "Valbou vTaskr API Support", "url": "http://www.valbou.fr/contact"}, "description": "vTaskr is an open-source Task/Todo list manager", "license": {"name": "LGPL v3", "url": "https://www.gnu.org/licenses/lgpl-3.0.en.html"}, "title": "vTaskr", "version": "0.1.1"}, "servers": [{"description": "Production API", "url": "https://api.vtaskr.com"}], "tags": [], "paths": {"/api/v1/forgotten-password": {"post": {"description": "Allow request to change password", "operationId": "postRequestChangePassword", "requestBody": {"content": {"application/json": {"schema": {"properties": {"email": {"example": "my@email.com", "format": "email", "type": "string"}}, "required": ["email"], "type": "object"}}}, "description": "Email used to login", "required": true}, "responses": {"200": {"content": {}, "description": "no response content"}, "400": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Bad request format"}}, "security": [], "summary": "To change password"}}, "/api/v1/group/{group_id}": {"delete": {"description": "Delete the group with specified id", "operationId": "deleteGroup", "parameters": [{"description": "Id of the group you are looking for", "in": "path", "name": "group_id", "required": true, "schema": {"type": "string"}}], "responses": {"204": {"content": {}, "description": "no content"}}, "summary": "Delete a group"}, "get": {"description": "Get the group with specified id", "operationId": "getGroup", "parameters": [{"description": "Id of the group you are looking for", "in": "path", "name": "group_id", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Group"}}}, "description": "A group"}}, "summary": "Get a group"}, "patch": {"description": "Update group", "operationId": "patchGroup", "parameters": [{"description": "Id of the group you are looking for", "in": "path", "name": "group_id", "required": true, "schema": {"type": "string"}}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Group"}}}, "description": "Group to update", "required": true}, "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Group"}}}, "description": "Updated group"}, "400": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Bad request"}}, "summary": "Update the group"}, "put": {"description": "Update group", "operationId": "putGroup", "parameters": [{"description": "Id of the group you are looking for", "in": "path", "name": "group_id", "required": true, "schema": {"type": "string"}}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Group"}}}, "description": "Group to update", "required": true}, "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Group"}}}, "description": "Updated group"}, "400": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Bad request"}}, "summary": "Update the group"}}, "/api/v1/group/{group_id}/invitations": {"get": {"description": "Get invitations waiting for acceptation", "operationId": "getInvitations", "parameters": [{"description": "Id of the group's invitations you are looking for", "in": "path", "name": "group_id", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Invitation"}}}, "description": "An invitations list"}}, "summary": "Get invitations"}}, "/api/v1/group/{group_id}/members": {"get": {"description": "Get group's members", "operationId": "getGroupMembers", "parameters": [{"description": "Id of the group's members you are looking for", "in": "path", "name": "group_id", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Role"}}}, "description": "A members list"}}, "summary": "Get group's members"}}, "/api/v1/groups": {"get": {"description": "Get all groups", "operationId": "getGroups", "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Group"}}}, "description": ""}, "403": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Unauthorized"}}, "summary": "Give all groups with optionnal filters"}, "post": {"description": "Create a new group", "operationId": "createGroup", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Group"}}}, "description": "Group to create", "required": true}, "responses": {"201": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Group"}}}, "description": "Created group"}, "400": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Bad request"}}, "summary": "Create a new group and the admin role to the user"}}, "/api/v1/invite": {"post": {"description": "Send invitation to join a group", "operationId": "postInvitationGroup", "requestBody": {"content": {"application/json": {"schema": {"properties": {"in_group_id": {"type": "string"}, "to_user_email": {"example": "my@email.com", "format": "email", "type": "string"}, "with_roletype_id": {"type": "string"}}, "required": ["from_user_id", "to_user_email", "in_group_id", "with_roletype_id"], "type": "object"}}}, "description": "Invitation data", "required": true}, "responses": {"201": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Invitation"}}}, "description": "Invitation created"}, "400": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Bad request format"}}, "security": [], "summary": "Invite in group"}}, "/api/v1/invite/accepted": {"post": {"description": "Accept invitation with an account", "operationId": "postInvitationAccept", "requestBody": {"content": {"application/json": {"schema": {"properties": {"hash": {"example": "a91776c5fbbde1910bc55e7390417d54805a99b0", "type": "string"}}, "required": ["hash"], "type": "object"}}}, "description": "To find the correct invitation", "required": true}, "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Role"}}}, "description": "Role accepted"}, "400": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Bad request format"}}, "security": [], "summary": "To join a group"}}, "/api/v1/invite/{invitation_id}": {"delete": {"description": "Delete an invitation with specified id", "operationId": "deleteInvitation", "parameters": [{"description": "Id of invitation you are looking for", "in": "path", "name": "invitation_id", "required": true, "schema": {"type": "string"}}], "responses": {"204": {"content": {}, "description": "no content"}}, "summary": "Delete an invitation"}}, "/api/v1/new-email": {"post": {"description": "Register new email for an account", "operationId": "postSetNewEmail", "requestBody": {"content": {"application/json": {"schema": {"properties": {"code": {"example": "1A2b3C", "type": "string"}, "hash": {"example": "a91776c5fbbde1910bc55e7390417d54805a99b0", "type": "string"}, "new_email": {"example": "my_new@email.com", "format": "email", "type": "string"}, "old_email": {"example": "my_old@email.com", "format": "email", "type": "string"}}, "required": ["new_email", "old_email", "hash", "code"], "type": "object"}}}, "description": "To set the new email to the correct user", "required": true}, "responses": {"200": {"content": {}, "description": "no response content"}, "400": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Bad request format"}}, "security": [], "summary": "To set new email"}}, "/api/v1/new-password": {"post": {"description": "Allow request to change password", "operationId": "postSetNewPassword", "requestBody": {"content": {"application/json": {"schema": {"properties": {"email": {"example": "my@email.com", "format": "email", "type": "string"}, "hash": {"example": "a91776c5fbbde1910bc55e7390417d54805a99b0", "type": "string"}, "new_password": {"example": "12_aB-34#Cd", "type": "string"}}, "required": ["email", "hash", "new_password"], "type": "object"}}}, "description": "To set the new password", "required": true}, "responses": {"200": {"content": {}, "description": "no response content"}, "400": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Bad request format"}}, "security": [], "summary": "To set a new password"}}, "/api/v1/right/{right_id}": {"delete": {"description": "Delete the right with specified id", "operationId": "deleteRight", "parameters": [{"description": "Id of the right you are looking for", "in": "path", "name": "right_id", "required": true, "schema": {"type": "string"}}], "responses": {"204": {"content": {}, "description": "no content"}}, "summary": "Delete a right"}, "get": {"description": "Get the right with specified id", "operationId": "getRight", "parameters": [{"description": "Id of the right you are looking for", "in": "path", "name": "right_id", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Right"}}}, "description": "A right"}}, "summary": "Get a right"}, "patch": {"description": "Update right", "operationId": "patchRight", "parameters": [{"description": "Id of the right you are looking for", "in": "path", "name": "right_id", "required": true, "schema": {"type": "string"}}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Right"}}}, "description": "Right to update", "required": true}, "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Right"}}}, "description": "Updated right"}, "400": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Bad request"}}, "summary": "Update the right"}, "put": {"description": "Update right", "operationId": "putRight", "parameters": [{"description": "Id of the right you are looking for", "in": "path", "name": "right_id", "required": true, "schema": {"type": "string"}}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Right"}}}, "description": "Right to update", "required": true}, "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Right"}}}, "description": "Updated right"}, "400": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Bad request"}}, "summary": "Update the right"}}, "/api/v1/rights": {"get": {"description": "Get all rights", "operationId": "getRights", "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Right"}}}, "description": ""}, "403": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Unauthorized"}}, "summary": "Give all rights with optionnal filters"}, "post": {"description": "Create a new right", "operationId": "createRight", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Right"}}}, "description": "Right to create", "required": true}, "responses": {"201": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Right"}}}, "description": "Created right"}, "400": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Bad request"}}, "summary": "Create a new right"}}, "/api/v1/role/{role_id}": {"delete": {"description": "Delete the role with specified id", "operationId": "deleteRole", "parameters": [{"description": "Id of the role you are looking for", "in": "path", "name": "role_id", "required": true, "schema": {"type": "string"}}], "responses": {"204": {"content": {}, "description": "no content"}}, "summary": "Delete a role"}, "get": {"description": "Get the role with specified id", "operationId": "getRole", "parameters": [{"description": "Id of the role you are looking for", "in": "path", "name": "role_id", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Role"}}}, "description": "A role"}}, "summary": "Get a role"}, "patch": {"description": "Update role", "operationId": "patchRole", "parameters": [{"description": "Id of the role you are looking for", "in": "path", "name": "role_id", "required": true, "schema": {"type": "string"}}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Role"}}}, "description": "Role to update", "required": true}, "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Role"}}}, "description": "Updated role"}, "400": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Bad request"}}, "summary": "Update the role"}, "put": {"description": "Update role", "operationId": "putRole", "parameters": [{"description": "Id of the role you are looking for", "in": "path", "name": "role_id", "required": true, "schema": {"type": "string"}}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Role"}}}, "description": "Role to update", "required": true}, "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Role"}}}, "description": "Updated role"}, "400": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Bad request"}}, "summary": "Update the role"}}, "/api/v1/roles": {"get": {"description": "Get all roles", "operationId": "getRoles", "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Role"}}}, "description": ""}, "403": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Unauthorized"}}, "summary": "Give all roles with optionnal filters"}, "post": {"description": "Create a new role", "operationId": "createRole", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Role"}}}, "description": "Role to create", "required": true}, "responses": {"201": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Role"}}}, "description": "Created role"}, "400": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Bad request"}}, "summary": "Create a new role if user id a group's admin"}}, "/api/v1/roletype/{roletype_id}": {"delete": {"description": "Delete the role type with specified id", "operationId": "deleteRoleType", "parameters": [{"description": "Id of the role type you are looking for", "in": "path", "name": "roletype_id", "required": true, "schema": {"type": "string"}}], "responses": {"204": {"content": {}, "description": "no content"}}, "summary": "Delete a role type"}, "get": {"description": "Get the role type with specified id", "operationId": "getRoleType", "parameters": [{"description": "Id of the role type you are looking for", "in": "path", "name": "roletype_id", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RoleType"}}}, "description": "A role type"}}, "summary": "Get a role type"}, "patch": {"description": "Update role type", "operationId": "patchRoleType", "parameters": [{"description": "Id of the role type you are looking for", "in": "path", "name": "roletype_id", "required": true, "schema": {"type": "string"}}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RoleType"}}}, "description": "Role type to update", "required": true}, "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RoleType"}}}, "description": "Updated role type"}, "400": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Bad request"}}, "summary": "Update the role type"}, "put": {"description": "Update role type", "operationId": "putRoleType", "parameters": [{"description": "Id of the role type you are looking for", "in": "path", "name": "roletype_id", "required": true, "schema": {"type": "string"}}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RoleType"}}}, "description": "Role type to update", "required": true}, "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RoleType"}}}, "description": "Updated role type"}, "400": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Bad request"}}, "summary": "Update the role type"}}, "/api/v1/roletypes": {"get": {"description": "Get all role types", "operationId": "getRoleTypes", "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RoleType"}}}, "description": ""}, "403": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Unauthorized"}}, "summary": "Give all role types with optionnal filters"}, "post": {"description": "Create a new role type", "operationId": "createRoleType", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RoleType"}}}, "description": "Role type to create", "required": true}, "responses": {"201": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/RoleType"}}}, "description": "Created role type"}, "400": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Bad request"}}, "summary": "Create a new role type"}}, "/api/v1/tag/{tag_id}": {"delete": {"description": "Delete the tag with specified id", "operationId": "deleteTag", "parameters": [{"description": "Id of the tag you are looking for", "in": "path", "name": "tag_id", "required": true, "schema": {"type": "string"}}], "responses": {"204": {"content": {}, "description": "no content"}}, "summary": "Delete a tag"}, "get": {"description": "Get the tag with specified id", "operationId": "getTag", "parameters": [{"description": "Id of the tag you are looking for", "in": "path", "name": "tag_id", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Tag"}}}, "description": "Created tag"}}, "summary": "Get a tag"}, "patch": {"description": "Update the tag with specified id", "operationId": "patchTag", "parameters": [{"description": "Id of the tag you are looking for", "in": "path", "name": "tag_id", "required": true, "schema": {"type": "string"}}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Tag"}}}, "description": "Tag to update", "required": true}, "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Tag"}}}, "description": "Updated tag"}}, "summary": "Update a tag"}, "put": {"description": "Update the tag with specified id", "operationId": "putTag", "parameters": [{"description": "Id of the tag you are looking for", "in": "path", "name": "tag_id", "required": true, "schema": {"type": "string"}}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Tag"}}}, "description": "Tag to update", "required": true}, "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Tag"}}}, "description": "Updated tag"}}, "summary": "Update a tag"}}, "/api/v1/tag/{tag_id}/tasks": {"get": {"description": "Get all tasks associated to this tag", "operationId": "getTagTasks", "parameters": [{"description": "Id of the tag you are looking for", "in": "path", "name": "tag_id", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/Task"}, "type": "array"}}}, "description": "Task list"}}, "summary": "Get tasks with this tag"}}, "/api/v1/tags": {"get": {"description": "Get all current tenant's tags", "operationId": "getTenantTags", "responses": {"200": {"content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/Tag"}, "type": "array"}}}, "description": "Tag list"}}, "summary": "Get tenant's tags"}, "post": {"description": "Create tag for the current tenant", "operationId": "postTag", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Tag"}}}, "description": "Tag to create", "required": true}, "responses": {"201": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Tag"}}}, "description": "Created tag"}, "400": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Bad request"}}, "summary": "Create a tag"}}, "/api/v1/task/{task_id}": {"delete": {"description": "Delete the task with specified id", "operationId": "deleteTask", "parameters": [{"description": "Id of the task you are looking for", "in": "path", "name": "task_id", "required": true, "schema": {"type": "string"}}], "responses": {"204": {"content": {}, "description": "no content"}}, "summary": "Delete a task"}, "get": {"description": "Get the task with specified id", "operationId": "getTask", "parameters": [{"description": "Id of the task you are looking for", "in": "path", "name": "task_id", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Task"}}}, "description": "Created task"}}, "summary": "Get a task"}, "patch": {"description": "Update the task with specified id", "operationId": "patchTask", "parameters": [{"description": "Id of the task you are looking for", "in": "path", "name": "task_id", "required": true, "schema": {"type": "string"}}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Task"}}}, "description": "Task to update", "required": true}, "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Task"}}}, "description": "Updated task"}}, "summary": "Update a task"}, "put": {"description": "Update the task with specified id", "operationId": "putTask", "parameters": [{"description": "Id of the task you are looking for", "in": "path", "name": "task_id", "required": true, "schema": {"type": "string"}}], "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Task"}}}, "description": "Task to update", "required": true}, "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Task"}}}, "description": "Updated task"}}, "summary": "Update a task"}}, "/api/v1/task/{task_id}/tags": {"get": {"description": "Get all tags associated to this task", "operationId": "getTaskTags", "parameters": [{"description": "Id of the task you are looking for", "in": "path", "name": "task_id", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/Tag"}, "type": "array"}}}, "description": "Tag list"}}, "summary": "Get tags with this task"}, "put": {"description": "Set tags associated to this task", "operationId": "setTaskTags", "parameters": [{"description": "Id of the task you are looking for", "in": "path", "name": "task_id", "required": true, "schema": {"type": "string"}}], "requestBody": {"content": {"application/json": {"schema": {"properties": {"tag_ids": {"items": {"type": "string"}, "type": "array"}}, "type": "object"}}}, "description": "Exhaustive tags id list", "required": true}, "responses": {"201": {"content": {}, "description": "Tags associated"}}, "summary": "Set tags to this task"}}, "/api/v1/tasks": {"get": {"description": "Get all current tenant's tasks", "operationId": "getTenantTasks", "responses": {"200": {"content": {"application/json": {"schema": {"items": {"$ref": "#/components/schemas/Task"}, "type": "array"}}}, "description": "Task list"}}, "summary": "Get tenant's tasks"}, "post": {"description": "Create task for the current tenant", "operationId": "postTask", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Task"}}}, "description": "Task to create", "required": true}, "responses": {"201": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Task"}}}, "description": "Created task"}, "400": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Bad request"}}, "summary": "Create a task"}}, "/api/v1/users/2fa": {"post": {"description": "Secure user auth with 2FA confirmation", "operationId": "postConfirm2FA", "requestBody": {"content": {"application/json": {"schema": {"properties": {"code_2FA": {"example": "1A2b3C", "type": "string"}}, "required": ["code_2FA"], "type": "object"}}}, "description": "Code to confirm user identity", "required": true}, "responses": {"200": {"content": {}, "description": "no response content"}, "400": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Bad request format"}}, "summary": "To confirm 2FA auth"}}, "/api/v1/users/login": {"post": {"description": "Endpoint for user login", "operationId": "postLogin", "requestBody": {"content": {"application/json": {"schema": {"properties": {"email": {"example": "my@email.com", "type": "string"}, "password": {"example": "12_aB-34#Cd", "type": "string"}}, "required": ["email", "password"], "type": "object"}}}, "description": "Credentials to login user", "required": true}, "responses": {"201": {"content": {"application/json": {"schema": {"properties": {"token": {"type": "string"}}, "type": "object"}}}, "description": "Return a token to confirm with 2FA"}, "400": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Bad request format"}, "401": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Login required"}}, "summary": "To login an user"}}, "/api/v1/users/logout": {"delete": {"description": "Delete a valid token", "operationId": "deleteLogout", "responses": {"204": {"content": {}, "description": "no response content"}, "403": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Unauthorized"}}, "summary": "To logout an user"}}, "/api/v1/users/me": {"patch": {"description": "Update current user", "operationId": "patchUser", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/User"}}}, "description": "Update current user", "required": true}, "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/User"}}}, "description": "no response content"}, "403": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Unauthorized"}}, "summary": "Update current user"}, "put": {"description": "Update current user", "operationId": "putUser", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/User"}}}, "description": "Update current user", "required": true}, "responses": {"200": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/User"}}}, "description": "no response content"}, "403": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Unauthorized"}}, "summary": "Update current user"}}, "/api/v1/users/me/change-email": {"post": {"description": "Allow request to change email", "operationId": "postRequestChangeEmail", "requestBody": {"content": {"application/json": {"schema": {"properties": {"new_email": {"example": "my_new@email.com", "format": "email", "type": "string"}}, "required": ["new_email"], "type": "object"}}}, "description": "Change for this new email", "required": true}, "responses": {"200": {"content": {}, "description": "no response content"}, "400": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Bad request format"}}, "summary": "To change email"}}, "/api/v1/users/register": {"post": {"description": "Register a new user", "operationId": "postRegister", "requestBody": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/User", "password": {"type": "string"}}}}, "description": "User to register", "required": true}, "responses": {"201": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/User"}}}, "description": "no response content"}, "400": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Bad request format"}, "401": {"content": {"application/json": {"schema": {"$ref": "#/components/schemas/APIError"}}}, "description": "Login required"}}, "summary": "Register user"}}}, "components": {"headers": {}, "parameters": {}, "requestBodies": {}, "responses": {}, "schemas": {"APIError": {"properties": {"error": {"type": "string"}, "status": {"format": "int32", "type": "integer"}}, "type": "object"}, "Contact": {"properties": {"created_at": {"format": "date-time", "type": "string"}, "email": {"type": "string"}, "first_name": {"type": "string"}, "id": {"type": "string"}, "last_name": {"type": "string"}, "locale": {"type": "string"}, "phone_number": {"type": "string"}, "telegram": {"type": "string"}, "timezone": {"type": "string"}, "updated_at": {"format": "date-time", "type": "string"}}, "required": ["email"], "type": "object"}, "Group": {"properties": {"created_at": {"format": "date-time", "type": "string"}, "id": {"type": "string"}, "is_private": {"type": "boolean"}, "name": {"type": "string"}}, "required": ["name"], "type": "object"}, "Invitation": {"properties": {"created_at": {"format": "date-time", "type": "string"}, "from_user_id": {"type": "string"}, "id": {"type": "string"}, "in_group_id": {"type": "string"}, "to_user_email": {"type": "string"}, "with_roletype_id": {"type": "string"}}, "required": ["from_user_id", "to_user_email", "in_group_id", "with_roletype_id"], "type": "object"}, "Right": {"properties": {"created_at": {"format": "date-time", "type": "string"}, "id": {"type": "string"}, "permissions": {"type": "integer"}, "resource": {"type": "string"}, "roletype_id": {"type": "string"}}, "required": ["roletype_id", "resource", "permissions"], "type": "object"}, "Role": {"properties": {"created_at": {"format": "date-time", "type": "string"}, "group": {"$ref": "#/components/schemas/Group"}, "group_id": {"type": "string"}, "id": {"type": "string"}, "roletype": {"$ref": "#/components/schemas/RoleType"}, "roletype_id": {"type": "string"}, "user": {"$ref": "#/components/schemas/User"}, "user_id": {"type": "string"}}, "required": ["user_id", "group_id", "roletype_id"], "type": "object"}, "RoleType": {"properties": {"created_at": {"format": "date-time", "type": "string"}, "group_id": {"type": "string"}, "id": {"type": "string"}, "name": {"type": "string"}}, "required": ["name"], "type": "object"}, "Tag": {"properties": {"backgound_color": {"type": "string"}, "created_at": {"format": "date-time", "type": "string"}, "id": {"type": "string"}, "tenant_id": {"type": "string"}, "text_color": {"type": "string"}, "title": {"type": "string"}}, "required": ["tenant_id", "title"], "type": "object"}, "Task": {"properties": {"assigned_to": {"type": "string"}, "created_at": {"format": "date-time", "type": "string"}, "description": {"type": "string"}, "duration": {"format": "int32", "type": "integer"}, "emergency": {"type": "boolean"}, "id": {"type": "string"}, "important": {"type": "boolean"}, "scheduled_at": {"format": "date-time", "type": "string"}, "tenant_id": {"type": "string"}, "title": {"type": "string"}}, "required": ["tenant_id", "title"], "type": "object"}, "User": {"properties": {"created_at": {"format": "date-time", "type": "string"}, "email": {"type": "string"}, "first_name": {"type": "string"}, "id": {"type": "string"}, "last_login_at": {"format": "date-time", "type": "string"}, "last_name": {"type": "string"}, "locale": {"type": "string"}, "timezone": {"type": "string"}}, "required": ["first_name", "last_name", "email", "locale", "timezone"], "type": "object"}}, "securitySchemes": {"bearerAuth": {"bearerFormat": "bearer", "scheme": "bearer", "type": "http"}}}, "security": [{"bearerAuth": []}]}