basePath: /api/v1 definitions: files.File: properties: created: type: string id: type: integer mime: type: string name: type: string size: type: integer type: object handler.AuthURL: properties: url: type: string type: object migration.Status: properties: id: type: integer migrator_name: type: string time_unix: type: integer type: object models.APIUserPassword: properties: email: description: The user's email address maxLength: 250 type: string id: description: The unique, numeric id of this user. type: integer password: description: The user's password in clear text. Only used when registering the user. maxLength: 250 minLength: 8 type: string username: description: The username of the username. Is always unique. maxLength: 250 minLength: 3 type: string type: object models.BulkAssignees: properties: assignees: description: A list with all assignees items: $ref: '#/definitions/models.User' type: array type: object models.BulkTask: properties: assignees: description: An array of users who are assigned to this task items: $ref: '#/definitions/models.User' type: array attachments: description: All attachments this task has items: $ref: '#/definitions/models.TaskAttachment' type: array created: description: A unix timestamp when this task was created. You cannot change this value. type: integer createdBy: $ref: '#/definitions/models.User' description: The user who initially created the task. type: object description: description: The task description. type: string done: description: Whether a task is done or not. type: boolean doneAt: description: The unix timestamp when a task was marked as done. type: integer dueDate: description: A unix timestamp when the task is due. type: integer endDate: description: When this task ends. type: integer hexColor: description: The task color in hex maxLength: 6 type: string id: description: The unique, numeric id of this task. type: integer identifier: description: The task identifier, based on the list identifier and the task's index type: string index: description: The task index, calculated per list type: integer labels: description: An array of labels which are associated with this task. items: $ref: '#/definitions/models.Label' type: array listID: description: The list this task belongs to. type: integer percentDone: description: Determines how far a task is left from being done type: number priority: description: The task priority. Can be anything you want, it is possible to sort by this later. type: integer related_tasks: $ref: '#/definitions/models.RelatedTaskMap' description: All related tasks, grouped by their relation kind type: object reminderDates: description: An array of unix timestamps when the user wants to be reminded of the task. items: type: integer type: array repeatAfter: description: An amount in seconds this task repeats itself. If this is set, when marking the task as done, it will mark itself as "undone" and then increase all remindes and the due date by its amount. type: integer startDate: description: When this task starts. type: integer task_ids: description: A list of task ids to update items: type: integer type: array text: description: The task text. This is what you'll see in the list. maxLength: 250 minLength: 3 type: string updated: description: A unix timestamp when this task was last updated. You cannot change this value. type: integer type: object models.EmailConfirm: properties: token: description: The email confirm token sent via email. type: string type: object models.Label: properties: created: description: A unix timestamp when this label was created. You cannot change this value. type: integer created_by: $ref: '#/definitions/models.User' description: The user who created this label type: object description: description: The label description. type: string hex_color: description: The color this label has maxLength: 6 type: string id: description: The unique, numeric id of this label. type: integer title: description: The title of the lable. You'll see this one on tasks associated with it. maxLength: 250 minLength: 3 type: string updated: description: A unix timestamp when this label was last updated. You cannot change this value. type: integer type: object models.LabelTask: properties: created: description: A unix timestamp when this task was created. You cannot change this value. type: integer label_id: description: The label id you want to associate with a task. type: integer type: object models.LabelTaskBulk: properties: labels: description: All labels you want to update at once. items: $ref: '#/definitions/models.Label' type: array type: object models.LinkSharing: properties: created: description: A unix timestamp when this list was shared. You cannot change this value. type: integer hash: description: The public id to get this shared list type: string id: description: The ID of the shared thing type: integer right: default: 0 description: The right this list is shared with. 0 = Read only, 1 = Read & Write, 2 = Admin. See the docs for more details. maximum: 2 type: integer shared_by: $ref: '#/definitions/models.User' description: The user who shared this list type: object sharing_type: default: 0 description: The kind of this link. 0 = undefined, 1 = without password, 2 = with password (currently not implemented). maximum: 2 type: integer updated: description: A unix timestamp when this share was last updated. You cannot change this value. type: integer type: object models.List: properties: created: description: A unix timestamp when this list was created. You cannot change this value. type: integer description: description: The description of the list. type: string id: description: The unique, numeric id of this list. type: integer identifier: description: The unique list short identifier. Used to build task identifiers. maxLength: 10 minLength: 0 type: string owner: $ref: '#/definitions/models.User' description: The user who created this list. type: object title: description: The title of the list. You'll see this in the namespace overview. maxLength: 250 minLength: 3 type: string updated: description: A unix timestamp when this list was last updated. You cannot change this value. type: integer type: object models.ListUser: properties: created: description: A unix timestamp when this relation was created. You cannot change this value. type: integer id: description: The unique, numeric id of this list <-> user relation. type: integer right: default: 0 description: The right this user has. 0 = Read only, 1 = Read & Write, 2 = Admin. See the docs for more details. maximum: 2 type: integer updated: description: A unix timestamp when this relation was last updated. You cannot change this value. type: integer userID: description: The username. type: string type: object models.Message: properties: message: description: A standard message. type: string type: object models.Namespace: properties: created: description: A unix timestamp when this namespace was created. You cannot change this value. type: integer description: description: The description of the namespace type: string id: description: The unique, numeric id of this namespace. type: integer name: description: The name of this namespace. maxLength: 250 minLength: 5 type: string owner: $ref: '#/definitions/models.User' description: The user who owns this namespace type: object updated: description: A unix timestamp when this namespace was last updated. You cannot change this value. type: integer type: object models.NamespaceUser: properties: created: description: A unix timestamp when this relation was created. You cannot change this value. type: integer id: description: The unique, numeric id of this namespace <-> user relation. type: integer right: default: 0 description: The right this user has. 0 = Read only, 1 = Read & Write, 2 = Admin. See the docs for more details. maximum: 2 type: integer updated: description: A unix timestamp when this relation was last updated. You cannot change this value. type: integer userID: description: The username. type: string type: object models.NamespaceWithLists: properties: created: description: A unix timestamp when this namespace was created. You cannot change this value. type: integer description: description: The description of the namespace type: string id: description: The unique, numeric id of this namespace. type: integer lists: items: $ref: '#/definitions/models.List' type: array name: description: The name of this namespace. maxLength: 250 minLength: 5 type: string owner: $ref: '#/definitions/models.User' description: The user who owns this namespace type: object updated: description: A unix timestamp when this namespace was last updated. You cannot change this value. type: integer type: object models.PasswordReset: properties: new_password: description: The new password for this user. type: string token: description: The previously issued reset token. type: string type: object models.PasswordTokenRequest: properties: email: maxLength: 250 type: string type: object models.RelatedTaskMap: additionalProperties: items: properties: assignees: description: An array of users who are assigned to this task items: $ref: '#/definitions/models.User' type: array attachments: description: All attachments this task has items: $ref: '#/definitions/models.TaskAttachment' type: array created: description: A unix timestamp when this task was created. You cannot change this value. type: integer createdBy: $ref: '#/definitions/models.User' description: The user who initially created the task. type: object description: description: The task description. type: string done: description: Whether a task is done or not. type: boolean doneAt: description: The unix timestamp when a task was marked as done. type: integer dueDate: description: A unix timestamp when the task is due. type: integer endDate: description: When this task ends. type: integer hexColor: description: The task color in hex maxLength: 6 type: string id: description: The unique, numeric id of this task. type: integer identifier: description: The task identifier, based on the list identifier and the task's index type: string index: description: The task index, calculated per list type: integer labels: description: An array of labels which are associated with this task. items: $ref: '#/definitions/models.Label' type: array listID: description: The list this task belongs to. type: integer percentDone: description: Determines how far a task is left from being done type: number priority: description: The task priority. Can be anything you want, it is possible to sort by this later. type: integer related_tasks: $ref: '#/definitions/models.RelatedTaskMap' description: All related tasks, grouped by their relation kind type: object reminderDates: description: An array of unix timestamps when the user wants to be reminded of the task. items: type: integer type: array repeatAfter: description: An amount in seconds this task repeats itself. If this is set, when marking the task as done, it will mark itself as "undone" and then increase all remindes and the due date by its amount. type: integer startDate: description: When this task starts. type: integer text: description: The task text. This is what you'll see in the list. maxLength: 250 minLength: 3 type: string updated: description: A unix timestamp when this task was last updated. You cannot change this value. type: integer type: object type: array type: object models.Task: properties: assignees: description: An array of users who are assigned to this task items: $ref: '#/definitions/models.User' type: array attachments: description: All attachments this task has items: $ref: '#/definitions/models.TaskAttachment' type: array created: description: A unix timestamp when this task was created. You cannot change this value. type: integer createdBy: $ref: '#/definitions/models.User' description: The user who initially created the task. type: object description: description: The task description. type: string done: description: Whether a task is done or not. type: boolean doneAt: description: The unix timestamp when a task was marked as done. type: integer dueDate: description: A unix timestamp when the task is due. type: integer endDate: description: When this task ends. type: integer hexColor: description: The task color in hex maxLength: 6 type: string id: description: The unique, numeric id of this task. type: integer identifier: description: The task identifier, based on the list identifier and the task's index type: string index: description: The task index, calculated per list type: integer labels: description: An array of labels which are associated with this task. items: $ref: '#/definitions/models.Label' type: array listID: description: The list this task belongs to. type: integer percentDone: description: Determines how far a task is left from being done type: number priority: description: The task priority. Can be anything you want, it is possible to sort by this later. type: integer related_tasks: $ref: '#/definitions/models.RelatedTaskMap' description: All related tasks, grouped by their relation kind type: object reminderDates: description: An array of unix timestamps when the user wants to be reminded of the task. items: type: integer type: array repeatAfter: description: An amount in seconds this task repeats itself. If this is set, when marking the task as done, it will mark itself as "undone" and then increase all remindes and the due date by its amount. type: integer startDate: description: When this task starts. type: integer text: description: The task text. This is what you'll see in the list. maxLength: 250 minLength: 3 type: string updated: description: A unix timestamp when this task was last updated. You cannot change this value. type: integer type: object models.TaskAssginee: properties: created: type: integer user_id: type: integer type: object models.TaskAttachment: properties: created: type: integer created_by: $ref: '#/definitions/models.User' type: object file: $ref: '#/definitions/files.File' type: object id: type: integer task_id: type: integer type: object models.TaskRelation: properties: created: description: A unix timestamp when this label was created. You cannot change this value. type: integer created_by: $ref: '#/definitions/models.User' description: The user who created this relation type: object other_task_id: description: The ID of the other task, the task which is being related. type: integer relation_kind: description: The kind of the relation. type: string task_id: description: The ID of the "base" task, the task which has a relation to another. type: integer type: object models.Team: properties: created: description: A unix timestamp when this relation was created. You cannot change this value. type: integer createdBy: $ref: '#/definitions/models.User' description: The user who created this team. type: object description: description: The team's description. type: string id: description: The unique, numeric id of this team. type: integer members: description: An array of all members in this team. items: $ref: '#/definitions/models.TeamUser' type: array name: description: The name of this team. maxLength: 250 minLength: 5 type: string updated: description: A unix timestamp when this relation was last updated. You cannot change this value. type: integer type: object models.TeamList: properties: created: description: A unix timestamp when this relation was created. You cannot change this value. type: integer id: description: The unique, numeric id of this list <-> team relation. type: integer right: default: 0 description: The right this team has. 0 = Read only, 1 = Read & Write, 2 = Admin. See the docs for more details. maximum: 2 type: integer teamID: description: The team id. type: integer updated: description: A unix timestamp when this relation was last updated. You cannot change this value. type: integer type: object models.TeamMember: properties: admin: description: Whether or not the member is an admin of the team. See the docs for more about what a team admin can do type: boolean created: description: A unix timestamp when this relation was created. You cannot change this value. type: integer id: description: The unique, numeric id of this team member relation. type: integer username: description: The username of the member. We use this to prevent automated user id entering. type: string type: object models.TeamNamespace: properties: created: description: A unix timestamp when this relation was created. You cannot change this value. type: integer id: description: The unique, numeric id of this namespace <-> team relation. type: integer right: default: 0 description: The right this team has. 0 = Read only, 1 = Read & Write, 2 = Admin. See the docs for more details. maximum: 2 type: integer teamID: description: The team id. type: integer updated: description: A unix timestamp when this relation was last updated. You cannot change this value. type: integer type: object models.TeamUser: properties: admin: description: Whether or not the member is an admin of the team. See the docs for more about what a team admin can do type: boolean avatarUrl: description: The users md5-hashed email address, used to get the avatar from gravatar and the likes. type: string created: description: A unix timestamp when this task was created. You cannot change this value. type: integer email: description: The user's email address. maxLength: 250 type: string id: description: The unique, numeric id of this user. type: integer updated: description: A unix timestamp when this task was last updated. You cannot change this value. type: integer username: description: The username of the user. Is always unique. maxLength: 250 minLength: 3 type: string type: object models.TeamWithRight: properties: created: description: A unix timestamp when this relation was created. You cannot change this value. type: integer createdBy: $ref: '#/definitions/models.User' description: The user who created this team. type: object description: description: The team's description. type: string id: description: The unique, numeric id of this team. type: integer members: description: An array of all members in this team. items: $ref: '#/definitions/models.TeamUser' type: array name: description: The name of this team. maxLength: 250 minLength: 5 type: string right: type: integer updated: description: A unix timestamp when this relation was last updated. You cannot change this value. type: integer type: object models.User: properties: avatarUrl: description: The users md5-hashed email address, used to get the avatar from gravatar and the likes. type: string created: description: A unix timestamp when this task was created. You cannot change this value. type: integer email: description: The user's email address. maxLength: 250 type: string id: description: The unique, numeric id of this user. type: integer updated: description: A unix timestamp when this task was last updated. You cannot change this value. type: integer username: description: The username of the user. Is always unique. maxLength: 250 minLength: 3 type: string type: object models.UserLogin: properties: password: description: The password for the user. type: string username: description: The username used to log in. type: string type: object models.UserWithRight: properties: avatarUrl: description: The users md5-hashed email address, used to get the avatar from gravatar and the likes. type: string created: description: A unix timestamp when this task was created. You cannot change this value. type: integer email: description: The user's email address. maxLength: 250 type: string id: description: The unique, numeric id of this user. type: integer right: type: integer updated: description: A unix timestamp when this task was last updated. You cannot change this value. type: integer username: description: The username of the user. Is always unique. maxLength: 250 minLength: 3 type: string type: object v1.Token: properties: token: type: string type: object v1.UserPassword: properties: new_password: type: string old_password: type: string type: object v1.vikunjaInfos: properties: available_migrators: items: type: string type: array frontend_url: type: string link_sharing_enabled: type: boolean max_file_size: type: string motd: type: string registration_enabled: type: boolean version: type: string type: object wunderlist.Migration: properties: code: description: Code is the code used to get a user api token type: string type: object info: contact: email: hello@vikunja.io name: General Vikunja contact url: http://vikunja.io/en/contact/ description: |- # Pagination Every endpoint capable of pagination will return two headers: * `x-pagination-total-pages`: The total number of available pages for this request * `x-pagination-result-count`: The number of items returned for this request. # Authorization **JWT-Auth:** Main authorization method, used for most of the requests. Needs `Authorization: Bearer `-header to authenticate successfully. **BasicAuth:** Only used when requesting tasks via caldav. license: name: GPLv3 url: http://code.vikunja.io/api/src/branch/master/LICENSE title: Vikunja API paths: /info: get: description: Returns the version, frontendurl, motd and various settings of Vikunja produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/v1.vikunjaInfos' summary: Info tags: - service /labels: get: consumes: - application/json description: Returns all labels which are either created by the user or associated with a task the user has at least read-access to. parameters: - description: The page number. Used for pagination. If not provided, the first page of results is returned. in: query name: page type: integer - description: The maximum number of items per page. Note this parameter is limited by the configured maximum of items per page. in: query name: per_page type: integer - description: Search labels by label text. in: query name: s type: string produces: - application/json responses: "200": description: The labels schema: items: $ref: '#/definitions/models.Label' type: array "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Get all labels a user has access to tags: - labels put: consumes: - application/json description: Creates a new label. parameters: - description: The label object in: body name: label required: true schema: $ref: '#/definitions/models.Label' type: object produces: - application/json responses: "200": description: The created label object. schema: $ref: '#/definitions/models.Label' "400": description: Invalid label object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Create a label tags: - labels /labels/{id}: delete: consumes: - application/json description: Delete an existing label. The user needs to be the creator of the label to be able to do this. parameters: - description: Label ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: The label was successfully deleted. schema: $ref: '#/definitions/models.Label' "403": description: Not allowed to delete the label. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "404": description: Label not found. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Delete a label tags: - labels get: consumes: - application/json description: Returns one label by its ID. parameters: - description: Label ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: The label schema: $ref: '#/definitions/models.Label' "403": description: The user does not have access to the label schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "404": description: Label not found schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Gets one label tags: - labels put: consumes: - application/json description: Update an existing label. The user needs to be the creator of the label to be able to do this. parameters: - description: Label ID in: path name: id required: true type: integer - description: The label object in: body name: label required: true schema: $ref: '#/definitions/models.Label' type: object produces: - application/json responses: "200": description: The created label object. schema: $ref: '#/definitions/models.Label' "400": description: Invalid label object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "403": description: Not allowed to update the label. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "404": description: Label not found. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Update a label tags: - labels /lists: get: consumes: - application/json description: Returns all lists a user has access to. parameters: - description: The page number. Used for pagination. If not provided, the first page of results is returned. in: query name: page type: integer - description: The maximum number of items per page. Note this parameter is limited by the configured maximum of items per page. in: query name: per_page type: integer - description: Search lists by title. in: query name: s type: string produces: - application/json responses: "200": description: The lists schema: items: $ref: '#/definitions/models.List' type: array "403": description: The user does not have access to the list schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Get all lists a user has access to tags: - list /lists/{id}: delete: description: Delets a list parameters: - description: List ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: The list was successfully deleted. schema: $ref: '#/definitions/models.Message' "400": description: Invalid list object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "403": description: The user does not have access to the list schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Deletes a list tags: - list get: consumes: - application/json description: Returns a list by its ID. parameters: - description: List ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: The list schema: $ref: '#/definitions/models.List' "403": description: The user does not have access to the list schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Gets one list tags: - list post: consumes: - application/json description: Updates a list. This does not include adding a task (see below). parameters: - description: List ID in: path name: id required: true type: integer - description: The list with updated values you want to update. in: body name: list required: true schema: $ref: '#/definitions/models.List' type: object produces: - application/json responses: "200": description: The updated list. schema: $ref: '#/definitions/models.List' "400": description: Invalid list object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "403": description: The user does not have access to the list schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Updates a list tags: - list put: consumes: - application/json description: Inserts a task into a list. parameters: - description: List ID in: path name: id required: true type: integer - description: The task object in: body name: task required: true schema: $ref: '#/definitions/models.Task' type: object produces: - application/json responses: "200": description: The created task object. schema: $ref: '#/definitions/models.Task' "400": description: Invalid task object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "403": description: The user does not have access to the list schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Create a task tags: - task /lists/{id}/listusers: get: consumes: - application/json description: Lists all users (without emailadresses). Also possible to search for a specific user. parameters: - description: Search for a user by its name. in: query name: s type: string - description: List ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: All (found) users. schema: items: $ref: '#/definitions/models.User' type: array "400": description: Something's invalid. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "401": description: The user does not have the right to see the list. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal server error. schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Get users tags: - list /lists/{id}/teams: get: consumes: - application/json description: Returns a list with all teams which have access on a given list. parameters: - description: List ID in: path name: id required: true type: integer - description: The page number. Used for pagination. If not provided, the first page of results is returned. in: query name: page type: integer - description: The maximum number of items per page. Note this parameter is limited by the configured maximum of items per page. in: query name: per_page type: integer - description: Search teams by its name. in: query name: s type: string produces: - application/json responses: "200": description: The teams with their right. schema: items: $ref: '#/definitions/models.TeamWithRight' type: array "403": description: No right to see the list. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Get teams on a list tags: - sharing put: consumes: - application/json description: Gives a team access to a list. parameters: - description: List ID in: path name: id required: true type: integer - description: The team you want to add to the list. in: body name: list required: true schema: $ref: '#/definitions/models.TeamList' type: object produces: - application/json responses: "200": description: The created team<->list relation. schema: $ref: '#/definitions/models.TeamList' "400": description: Invalid team list object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "403": description: The user does not have access to the list schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "404": description: The team does not exist. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Add a team to a list tags: - sharing /lists/{id}/users: get: consumes: - application/json description: Returns a list with all users which have access on a given list. parameters: - description: List ID in: path name: id required: true type: integer - description: The page number. Used for pagination. If not provided, the first page of results is returned. in: query name: page type: integer - description: The maximum number of items per page. Note this parameter is limited by the configured maximum of items per page. in: query name: per_page type: integer - description: Search users by its name. in: query name: s type: string produces: - application/json responses: "200": description: The users with the right they have. schema: items: $ref: '#/definitions/models.UserWithRight' type: array "403": description: No right to see the list. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Get users on a list tags: - sharing put: consumes: - application/json description: Gives a user access to a list. parameters: - description: List ID in: path name: id required: true type: integer - description: The user you want to add to the list. in: body name: list required: true schema: $ref: '#/definitions/models.ListUser' type: object produces: - application/json responses: "200": description: The created user<->list relation. schema: $ref: '#/definitions/models.ListUser' "400": description: Invalid user list object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "403": description: The user does not have access to the list schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "404": description: The user does not exist. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Add a user to a list tags: - sharing /lists/{list}/shares: get: consumes: - application/json description: Returns all link shares which exist for a given list parameters: - description: List ID in: path name: list required: true type: integer - description: The page number. Used for pagination. If not provided, the first page of results is returned. in: query name: page type: integer - description: The maximum number of items per page. Note this parameter is limited by the configured maximum of items per page. in: query name: per_page type: integer - description: Search shares by hash. in: query name: s type: string produces: - application/json responses: "200": description: The share links schema: items: $ref: '#/definitions/models.LinkSharing' type: array "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Get all link shares for a list tags: - sharing put: consumes: - application/json description: Share a list via link. The user needs to have write-access to the list to be able do this. parameters: - description: List ID in: path name: list required: true type: integer - description: The new link share object in: body name: label required: true schema: $ref: '#/definitions/models.LinkSharing' type: object produces: - application/json responses: "200": description: The created link share object. schema: $ref: '#/definitions/models.LinkSharing' "400": description: Invalid link share object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "403": description: Not allowed to add the list share. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "404": description: The list does not exist. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Share a list via link tags: - sharing /lists/{list}/shares/{share}: delete: consumes: - application/json description: Remove a link share. The user needs to have write-access to the list to be able do this. parameters: - description: List ID in: path name: list required: true type: integer - description: Share Link ID in: path name: share required: true type: integer produces: - application/json responses: "200": description: The link was successfully removed. schema: $ref: '#/definitions/models.Message' "403": description: Not allowed to remove the link. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "404": description: Share Link not found. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Remove a link share tags: - sharing get: consumes: - application/json description: Returns one link share by its ID. parameters: - description: List ID in: path name: list required: true type: integer - description: Share ID in: path name: share required: true type: integer produces: - application/json responses: "200": description: The share links schema: $ref: '#/definitions/models.LinkSharing' "403": description: No access to the list schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "404": description: Share Link not found. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Get one link shares for a list tags: - sharing /lists/{listID}/tasks: get: consumes: - application/json description: Returns all tasks for the current list. parameters: - description: The list ID. in: path name: listID required: true type: integer - description: The page number. Used for pagination. If not provided, the first page of results is returned. in: query name: page type: integer - description: The maximum number of items per page. Note this parameter is limited by the configured maximum of items per page. in: query name: per_page type: integer - description: Search tasks by task text. in: query name: s type: string - description: The sorting parameter. You can pass this multiple times to get the tasks ordered by multiple different parametes, along with `order_by`. Possible values to sort by are `id`, `text`, `description`, `done`, `done_at_unix`, `due_date_unix`, `created_by_id`, `list_id`, `repeat_after`, `priority`, `start_date_unix`, `end_date_unix`, `hex_color`, `percent_done`, `uid`, `created`, `updated`. Default is `id`. in: query name: sort_by type: string - description: The ordering parameter. Possible values to order by are `asc` or `desc`. Default is `asc`. in: query name: order_by type: string - description: The start date parameter to filter by. Expects a unix timestamp. If no end date, but a start date is specified, the end date is set to the current time. in: query name: startdate type: integer - description: The end date parameter to filter by. Expects a unix timestamp. If no start date, but an end date is specified, the start date is set to the current time. in: query name: enddate type: integer produces: - application/json responses: "200": description: The tasks schema: items: $ref: '#/definitions/models.Task' type: array "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Get tasks in a list tags: - task /lists/{listID}/teams/{teamID}: delete: description: Delets a team from a list. The team won't have access to the list anymore. parameters: - description: List ID in: path name: listID required: true type: integer - description: Team ID in: path name: teamID required: true type: integer produces: - application/json responses: "200": description: The team was successfully deleted. schema: $ref: '#/definitions/models.Message' "403": description: The user does not have access to the list schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "404": description: Team or list does not exist. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Delete a team from a list tags: - sharing post: consumes: - application/json description: Update a team <-> list relation. Mostly used to update the right that team has. parameters: - description: List ID in: path name: listID required: true type: integer - description: Team ID in: path name: teamID required: true type: integer - description: The team you want to update. in: body name: list required: true schema: $ref: '#/definitions/models.TeamList' type: object produces: - application/json responses: "200": description: The updated team <-> list relation. schema: $ref: '#/definitions/models.TeamList' "403": description: The user does not have admin-access to the list schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "404": description: Team or list does not exist. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Update a team <-> list relation tags: - sharing /lists/{listID}/users/{userID}: delete: description: Delets a user from a list. The user won't have access to the list anymore. parameters: - description: List ID in: path name: listID required: true type: integer - description: User ID in: path name: userID required: true type: integer produces: - application/json responses: "200": description: The user was successfully removed from the list. schema: $ref: '#/definitions/models.Message' "403": description: The user does not have access to the list schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "404": description: user or list does not exist. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Delete a user from a list tags: - sharing post: consumes: - application/json description: Update a user <-> list relation. Mostly used to update the right that user has. parameters: - description: List ID in: path name: listID required: true type: integer - description: User ID in: path name: userID required: true type: integer - description: The user you want to update. in: body name: list required: true schema: $ref: '#/definitions/models.ListUser' type: object produces: - application/json responses: "200": description: The updated user <-> list relation. schema: $ref: '#/definitions/models.ListUser' "403": description: The user does not have admin-access to the list schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "404": description: User or list does not exist. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Update a user <-> list relation tags: - sharing /login: post: consumes: - application/json description: Logs a user in. Returns a JWT-Token to authenticate further requests. parameters: - description: The login credentials in: body name: credentials required: true schema: $ref: '#/definitions/models.UserLogin' type: object produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/v1.Token' "400": description: Invalid user password model. schema: $ref: '#/definitions/models.Message' "403": description: Invalid username or password. schema: $ref: '#/definitions/models.Message' summary: Login tags: - user /migration/wunderlist/auth: get: description: Returns the auth url where the user needs to get its auth code. This code can then be used to migrate everything from wunderlist to Vikunja. produces: - application/json responses: "200": description: The auth url. schema: $ref: '#/definitions/handler.AuthURL' "500": description: Internal server error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Get the auth url from wunderlist tags: - migration /migration/wunderlist/migrate: post: consumes: - application/json description: Migrates all folders, lists, tasks, notes, reminders, subtasks and files from wunderlist to vikunja. parameters: - description: The auth code previously obtained from the auth url. See the docs for /migration/wunderlist/auth. in: body name: migrationCode required: true schema: $ref: '#/definitions/wunderlist.Migration' type: object produces: - application/json responses: "200": description: A message telling you everything was migrated successfully. schema: $ref: '#/definitions/models.Message' "500": description: Internal server error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Migrate all lists, tasks etc. from wunderlist tags: - migration /migration/wunderlist/status: get: description: Returns if the current user already did the migation or not. This is useful to show a confirmation message in the frontend if the user is trying to do the same migration again. produces: - application/json responses: "200": description: The migration status schema: $ref: '#/definitions/migration.Status' "500": description: Internal server error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Get migration status tags: - migration /namespace/{id}: post: consumes: - application/json description: Updates a namespace. parameters: - description: Namespace ID in: path name: id required: true type: integer - description: The namespace with updated values you want to update. in: body name: namespace required: true schema: $ref: '#/definitions/models.Namespace' type: object produces: - application/json responses: "200": description: The updated namespace. schema: $ref: '#/definitions/models.Namespace' "400": description: Invalid namespace object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "403": description: The user does not have access to the namespace schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Updates a namespace tags: - namespace /namespaces: get: consumes: - application/json description: Returns all namespaces a user has access to. parameters: - description: The page number. Used for pagination. If not provided, the first page of results is returned. in: query name: page type: integer - description: The maximum number of items per page. Note this parameter is limited by the configured maximum of items per page. in: query name: per_page type: integer - description: Search namespaces by name. in: query name: s type: string produces: - application/json responses: "200": description: The Namespaces. schema: items: $ref: '#/definitions/models.NamespaceWithLists' type: array "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Get all namespaces a user has access to tags: - namespace put: consumes: - application/json description: Creates a new namespace. parameters: - description: The namespace you want to create. in: body name: namespace required: true schema: $ref: '#/definitions/models.Namespace' type: object produces: - application/json responses: "200": description: The created namespace. schema: $ref: '#/definitions/models.Namespace' "400": description: Invalid namespace object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "403": description: The user does not have access to the namespace schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Creates a new namespace tags: - namespace /namespaces/{id}: delete: description: Delets a namespace parameters: - description: Namespace ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: The namespace was successfully deleted. schema: $ref: '#/definitions/models.Message' "400": description: Invalid namespace object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "403": description: The user does not have access to the namespace schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Deletes a namespace tags: - namespace get: consumes: - application/json description: Returns a namespace by its ID. parameters: - description: Namespace ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: The Namespace schema: $ref: '#/definitions/models.Namespace' "403": description: The user does not have access to that namespace. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Gets one namespace tags: - namespace /namespaces/{id}/lists: get: consumes: - application/json description: Returns all lists inside of a namespace. parameters: - description: Namespace ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: The lists. schema: items: $ref: '#/definitions/models.List' type: array "403": description: No access to that namespace. schema: $ref: '#/definitions/models.Message' "404": description: The namespace does not exist. schema: $ref: '#/definitions/models.Message' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Get all lists in a namespace tags: - namespace /namespaces/{id}/teams: get: consumes: - application/json description: Returns a namespace with all teams which have access on a given namespace. parameters: - description: Namespace ID in: path name: id required: true type: integer - description: The page number. Used for pagination. If not provided, the first page of results is returned. in: query name: page type: integer - description: The maximum number of items per page. Note this parameter is limited by the configured maximum of items per page. in: query name: per_page type: integer - description: Search teams by its name. in: query name: s type: string produces: - application/json responses: "200": description: The teams with the right they have. schema: items: $ref: '#/definitions/models.TeamWithRight' type: array "403": description: No right to see the namespace. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Get teams on a namespace tags: - sharing put: consumes: - application/json description: Gives a team access to a namespace. parameters: - description: Namespace ID in: path name: id required: true type: integer - description: The team you want to add to the namespace. in: body name: namespace required: true schema: $ref: '#/definitions/models.TeamNamespace' type: object produces: - application/json responses: "200": description: The created team<->namespace relation. schema: $ref: '#/definitions/models.TeamNamespace' "400": description: Invalid team namespace object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "403": description: The team does not have access to the namespace schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "404": description: The team does not exist. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Add a team to a namespace tags: - sharing /namespaces/{id}/users: get: consumes: - application/json description: Returns a namespace with all users which have access on a given namespace. parameters: - description: Namespace ID in: path name: id required: true type: integer - description: The page number. Used for pagination. If not provided, the first page of results is returned. in: query name: page type: integer - description: The maximum number of items per page. Note this parameter is limited by the configured maximum of items per page. in: query name: per_page type: integer - description: Search users by its name. in: query name: s type: string produces: - application/json responses: "200": description: The users with the right they have. schema: items: $ref: '#/definitions/models.UserWithRight' type: array "403": description: No right to see the namespace. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Get users on a namespace tags: - sharing put: consumes: - application/json description: Gives a user access to a namespace. parameters: - description: Namespace ID in: path name: id required: true type: integer - description: The user you want to add to the namespace. in: body name: namespace required: true schema: $ref: '#/definitions/models.NamespaceUser' type: object produces: - application/json responses: "200": description: The created user<->namespace relation. schema: $ref: '#/definitions/models.NamespaceUser' "400": description: Invalid user namespace object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "403": description: The user does not have access to the namespace schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "404": description: The user does not exist. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Add a user to a namespace tags: - sharing /namespaces/{namespaceID}/lists: put: consumes: - application/json description: Creates a new list in a given namespace. The user needs write-access to the namespace. parameters: - description: Namespace ID in: path name: namespaceID required: true type: integer - description: The list you want to create. in: body name: list required: true schema: $ref: '#/definitions/models.List' type: object produces: - application/json responses: "200": description: The created list. schema: $ref: '#/definitions/models.List' "400": description: Invalid list object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "403": description: The user does not have access to the list schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Creates a new list tags: - list /namespaces/{namespaceID}/teams/{teamID}: delete: description: Delets a team from a namespace. The team won't have access to the namespace anymore. parameters: - description: Namespace ID in: path name: namespaceID required: true type: integer - description: team ID in: path name: teamID required: true type: integer produces: - application/json responses: "200": description: The team was successfully deleted. schema: $ref: '#/definitions/models.Message' "403": description: The team does not have access to the namespace schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "404": description: team or namespace does not exist. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Delete a team from a namespace tags: - sharing post: consumes: - application/json description: Update a team <-> namespace relation. Mostly used to update the right that team has. parameters: - description: Namespace ID in: path name: namespaceID required: true type: integer - description: Team ID in: path name: teamID required: true type: integer - description: The team you want to update. in: body name: namespace required: true schema: $ref: '#/definitions/models.TeamNamespace' type: object produces: - application/json responses: "200": description: The updated team <-> namespace relation. schema: $ref: '#/definitions/models.TeamNamespace' "403": description: The team does not have admin-access to the namespace schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "404": description: Team or namespace does not exist. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Update a team <-> namespace relation tags: - sharing /namespaces/{namespaceID}/users/{userID}: delete: description: Delets a user from a namespace. The user won't have access to the namespace anymore. parameters: - description: Namespace ID in: path name: namespaceID required: true type: integer - description: user ID in: path name: userID required: true type: integer produces: - application/json responses: "200": description: The user was successfully deleted. schema: $ref: '#/definitions/models.Message' "403": description: The user does not have access to the namespace schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "404": description: user or namespace does not exist. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Delete a user from a namespace tags: - sharing post: consumes: - application/json description: Update a user <-> namespace relation. Mostly used to update the right that user has. parameters: - description: Namespace ID in: path name: namespaceID required: true type: integer - description: User ID in: path name: userID required: true type: integer - description: The user you want to update. in: body name: namespace required: true schema: $ref: '#/definitions/models.NamespaceUser' type: object produces: - application/json responses: "200": description: The updated user <-> namespace relation. schema: $ref: '#/definitions/models.NamespaceUser' "403": description: The user does not have admin-access to the namespace schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "404": description: User or namespace does not exist. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Update a user <-> namespace relation tags: - sharing /register: post: consumes: - application/json description: Creates a new user account. parameters: - description: The user credentials in: body name: credentials required: true schema: $ref: '#/definitions/models.APIUserPassword' type: object produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.User' "400": description: No or invalid user register object provided / User already exists. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' summary: Register tags: - user /shares/{share}/auth: post: consumes: - application/json description: Get a jwt auth token for a shared list from a share hash. parameters: - description: The share hash in: path name: share required: true type: string produces: - application/json responses: "200": description: The valid jwt auth token. schema: $ref: '#/definitions/v1.Token' "400": description: Invalid link share object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' summary: Get an auth token for a share tags: - sharing /tasks/{ID}: get: consumes: - application/json description: Returns one task by its ID parameters: - description: The task ID in: path name: ID required: true type: integer produces: - application/json responses: "200": description: The task schema: $ref: '#/definitions/models.Task' "404": description: Task not found schema: $ref: '#/definitions/models.Message' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Get one task tags: - task /tasks/{id}: delete: description: Deletes a task from a list. This does not mean "mark it done". parameters: - description: Task ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: The created task object. schema: $ref: '#/definitions/models.Message' "400": description: Invalid task ID provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "403": description: The user does not have access to the list schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Delete a task tags: - task post: consumes: - application/json description: Updates a task. This includes marking it as done. Assignees you pass will be updated, see their individual endpoints for more details on how this is done. To update labels, see the description of the endpoint. parameters: - description: Task ID in: path name: id required: true type: integer - description: The task object in: body name: task required: true schema: $ref: '#/definitions/models.Task' type: object produces: - application/json responses: "200": description: The updated task object. schema: $ref: '#/definitions/models.Task' "400": description: Invalid task object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "403": description: The user does not have access to the task (aka its list) schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Update a task tags: - task /tasks/{id}/attachments: get: consumes: - application/json description: Get all task attachments for one task. parameters: - description: Task ID in: path name: id required: true type: integer - description: The page number. Used for pagination. If not provided, the first page of results is returned. in: query name: page type: integer - description: The maximum number of items per page. Note this parameter is limited by the configured maximum of items per page. in: query name: per_page type: integer produces: - application/json responses: "200": description: All attachments for this task schema: items: $ref: '#/definitions/models.TaskAttachment' type: array "403": description: No access to this task. schema: $ref: '#/definitions/models.Message' "404": description: The task does not exist. schema: $ref: '#/definitions/models.Message' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Get all attachments for one task. tags: - task put: consumes: - multipart/form-data description: Upload a task attachment. You can pass multiple files with the files form param. parameters: - description: Task ID in: path name: id required: true type: integer - description: The file, as multipart form file. You can pass multiple. in: formData name: files required: true type: string produces: - application/json responses: "200": description: Attachments were uploaded successfully. schema: $ref: '#/definitions/models.Message' "403": description: No access to the task. schema: $ref: '#/definitions/models.Message' "404": description: The task does not exist. schema: $ref: '#/definitions/models.Message' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Upload a task attachment tags: - task /tasks/{id}/attachments/{attachmentID}: delete: consumes: - application/json description: Delete an attachment. parameters: - description: Task ID in: path name: id required: true type: integer - description: Attachment ID in: path name: attachmentID required: true type: integer produces: - application/json responses: "200": description: The attachment was deleted successfully. schema: $ref: '#/definitions/models.Message' "403": description: No access to this task. schema: $ref: '#/definitions/models.Message' "404": description: The task does not exist. schema: $ref: '#/definitions/models.Message' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Delete an attachment tags: - task get: description: Get one attachment for download. **Returns json on error.** parameters: - description: Task ID in: path name: id required: true type: integer - description: Attachment ID in: path name: attachmentID required: true type: integer produces: - application/octet-stream responses: "200": description: The attachment file. schema: type: "" "403": description: No access to this task. schema: $ref: '#/definitions/models.Message' "404": description: The task does not exist. schema: $ref: '#/definitions/models.Message' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Get one attachment. tags: - task /tasks/{task}/labels: get: consumes: - application/json description: Returns all labels which are assicociated with a given task. parameters: - description: Task ID in: path name: task required: true type: integer - description: The page number. Used for pagination. If not provided, the first page of results is returned. in: query name: page type: integer - description: The maximum number of items per page. Note this parameter is limited by the configured maximum of items per page. in: query name: per_page type: integer - description: Search labels by label text. in: query name: s type: string produces: - application/json responses: "200": description: The labels schema: items: $ref: '#/definitions/models.Label' type: array "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Get all labels on a task tags: - labels put: consumes: - application/json description: Add a label to a task. The user needs to have write-access to the list to be able do this. parameters: - description: Task ID in: path name: task required: true type: integer - description: The label object in: body name: label required: true schema: $ref: '#/definitions/models.LabelTask' type: object produces: - application/json responses: "200": description: The created label relation object. schema: $ref: '#/definitions/models.LabelTask' "400": description: Invalid label object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "403": description: Not allowed to add the label. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "404": description: The label does not exist. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Add a label to a task tags: - labels /tasks/{task}/labels/{label}: delete: consumes: - application/json description: Remove a label from a task. The user needs to have write-access to the list to be able do this. parameters: - description: Task ID in: path name: task required: true type: integer - description: Label ID in: path name: label required: true type: integer produces: - application/json responses: "200": description: The label was successfully removed. schema: $ref: '#/definitions/models.Message' "403": description: Not allowed to remove the label. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "404": description: Label not found. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Remove a label from a task tags: - labels /tasks/{taskID}/assignees: get: consumes: - application/json description: Returns an array with all assignees for this task. parameters: - description: The page number. Used for pagination. If not provided, the first page of results is returned. in: query name: page type: integer - description: The maximum number of items per page. Note this parameter is limited by the configured maximum of items per page. in: query name: per_page type: integer - description: Search assignees by their username. in: query name: s type: string - description: Task ID in: path name: taskID required: true type: integer produces: - application/json responses: "200": description: The assignees schema: items: $ref: '#/definitions/models.User' type: array "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Get all assignees for a task tags: - assignees put: consumes: - application/json description: Adds a new assignee to a task. The assignee needs to have access to the list, the doer must be able to edit this task. parameters: - description: The assingee object in: body name: assignee required: true schema: $ref: '#/definitions/models.TaskAssginee' type: object - description: Task ID in: path name: taskID required: true type: integer produces: - application/json responses: "200": description: The created assingee object. schema: $ref: '#/definitions/models.TaskAssginee' "400": description: Invalid assignee object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Add a new assignee to a task tags: - assignees /tasks/{taskID}/assignees/{userID}: delete: consumes: - application/json description: Un-assign a user from a task. parameters: - description: Task ID in: path name: taskID required: true type: integer - description: Assignee user ID in: path name: userID required: true type: integer produces: - application/json responses: "200": description: The assignee was successfully deleted. schema: $ref: '#/definitions/models.Message' "403": description: Not allowed to delete the assignee. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Delete an assignee tags: - assignees /tasks/{taskID}/assignees/bulk: post: consumes: - application/json description: Adds multiple new assignees to a task. The assignee needs to have access to the list, the doer must be able to edit this task. Every user not in the list will be unassigned from the task, pass an empty array to unassign everyone. parameters: - description: The array of assignees in: body name: assignee required: true schema: $ref: '#/definitions/models.BulkAssignees' type: object - description: Task ID in: path name: taskID required: true type: integer produces: - application/json responses: "200": description: The created assingees object. schema: $ref: '#/definitions/models.TaskAssginee' "400": description: Invalid assignee object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Add multiple new assignees to a task tags: - assignees /tasks/{taskID}/labels/bulk: post: consumes: - application/json description: Updates all labels on a task. Every label which is not passed but exists on the task will be deleted. Every label which does not exist on the task will be added. All labels which are passed and already exist on the task won't be touched. parameters: - description: The array of labels in: body name: label required: true schema: $ref: '#/definitions/models.LabelTaskBulk' type: object - description: Task ID in: path name: taskID required: true type: integer produces: - application/json responses: "200": description: The updated labels object. schema: $ref: '#/definitions/models.LabelTaskBulk' "400": description: Invalid label object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Update all labels on a task. tags: - labels /tasks/{taskID}/relations: delete: consumes: - application/json parameters: - description: The relation object in: body name: relation required: true schema: $ref: '#/definitions/models.TaskRelation' type: object - description: Task ID in: path name: taskID required: true type: integer produces: - application/json responses: "200": description: The task relation was successfully deleted. schema: $ref: '#/definitions/models.Message' "400": description: Invalid task relation object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "404": description: The task relation was not found. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Remove a task relation tags: - task put: consumes: - application/json description: Creates a new relation between two tasks. The user needs to have update rights on the base task and at least read rights on the other task. Both tasks do not need to be on the same list. Take a look at the docs for available task relation kinds. parameters: - description: The relation object in: body name: relation required: true schema: $ref: '#/definitions/models.TaskRelation' type: object - description: Task ID in: path name: taskID required: true type: integer produces: - application/json responses: "200": description: The created task relation object. schema: $ref: '#/definitions/models.TaskRelation' "400": description: Invalid task relation object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Create a new relation between two tasks tags: - task /tasks/all: get: consumes: - application/json description: Returns all tasks on any list the user has access to. parameters: - description: The page number. Used for pagination. If not provided, the first page of results is returned. in: query name: page type: integer - description: The maximum number of items per page. Note this parameter is limited by the configured maximum of items per page. in: query name: per_page type: integer - description: Search tasks by task text. in: query name: s type: string - description: The sorting parameter. Possible values to sort by are priority, prioritydesc, priorityasc, duedate, duedatedesc, duedateasc. in: query name: sort type: string - description: The start date parameter to filter by. Expects a unix timestamp. If no end date, but a start date is specified, the end date is set to the current time. in: query name: startdate type: integer - description: The end date parameter to filter by. Expects a unix timestamp. If no start date, but an end date is specified, the start date is set to the current time. in: query name: enddate type: integer produces: - application/json responses: "200": description: The tasks schema: items: $ref: '#/definitions/models.Task' type: array "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Get tasks tags: - task /tasks/bulk: post: consumes: - application/json description: 'Updates a bunch of tasks at once. This includes marking them as done. Note: although you could supply another ID, it will be ignored. Use task_ids instead.' parameters: - description: The task object. Looks like a normal task, the only difference is it uses an array of list_ids to update. in: body name: task required: true schema: $ref: '#/definitions/models.BulkTask' type: object produces: - application/json responses: "200": description: The updated task object. schema: $ref: '#/definitions/models.Task' "400": description: Invalid task object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "403": description: The user does not have access to the task (aka its list) schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Update a bunch of tasks at once tags: - task /teams: get: consumes: - application/json description: Returns all teams the current user is part of. parameters: - description: The page number. Used for pagination. If not provided, the first page of results is returned. in: query name: page type: integer - description: The maximum number of items per page. Note this parameter is limited by the configured maximum of items per page. in: query name: per_page type: integer - description: Search teams by its name. in: query name: s type: string produces: - application/json responses: "200": description: The teams. schema: items: $ref: '#/definitions/models.Team' type: array "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Get teams tags: - team put: consumes: - application/json description: Creates a new team in a given namespace. The user needs write-access to the namespace. parameters: - description: The team you want to create. in: body name: team required: true schema: $ref: '#/definitions/models.Team' type: object produces: - application/json responses: "200": description: The created team. schema: $ref: '#/definitions/models.Team' "400": description: Invalid team object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Creates a new team tags: - team /teams/{id}: delete: description: Delets a team. This will also remove the access for all users in that team. parameters: - description: Team ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: The team was successfully deleted. schema: $ref: '#/definitions/models.Message' "400": description: Invalid team object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Deletes a team tags: - team post: consumes: - application/json description: Updates a team. parameters: - description: Team ID in: path name: id required: true type: integer - description: The team with updated values you want to update. in: body name: team required: true schema: $ref: '#/definitions/models.Team' type: object produces: - application/json responses: "200": description: The updated team. schema: $ref: '#/definitions/models.Team' "400": description: Invalid team object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Updates a team tags: - team /teams/{id}/members: put: consumes: - application/json description: Add a user to a team. parameters: - description: Team ID in: path name: id required: true type: integer - description: The user to be added to a team. in: body name: team required: true schema: $ref: '#/definitions/models.TeamMember' type: object produces: - application/json responses: "200": description: The newly created member object schema: $ref: '#/definitions/models.TeamMember' "400": description: Invalid member object provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "403": description: The user does not have access to the team schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Add a user to a team tags: - team /teams/{id}/members/{userID}: delete: description: Remove a user from a team. This will also revoke any access this user might have via that team. parameters: - description: Team ID in: path name: id required: true type: integer - description: User ID in: path name: userID required: true type: integer produces: - application/json responses: "200": description: The user was successfully removed from the team. schema: $ref: '#/definitions/models.Message' "500": description: Internal error schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Remove a user from a team tags: - team /user: get: consumes: - application/json description: Returns the current user object. produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.User' "404": description: User does not exist. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal server error. schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Get user information tags: - user /user/confirm: post: consumes: - application/json description: Confirms the email of a newly registered user. parameters: - description: The token. in: body name: credentials required: true schema: $ref: '#/definitions/models.EmailConfirm' type: object produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.Message' "412": description: Bad token provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' summary: Confirm the email of a new user tags: - user /user/password: post: consumes: - application/json description: Lets the current user change its password. parameters: - description: The current and new password. in: body name: userPassword required: true schema: $ref: '#/definitions/v1.UserPassword' type: object produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.Message' "400": description: Something's invalid. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "404": description: User does not exist. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal server error. schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Change password tags: - user /user/password/reset: post: consumes: - application/json description: Resets a user email with a previously reset token. parameters: - description: The token with the new password. in: body name: credentials required: true schema: $ref: '#/definitions/models.PasswordReset' type: object produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.Message' "400": description: Bad token provided. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' summary: Resets a password tags: - user /user/password/token: post: consumes: - application/json description: Requests a token to reset a users password. The token is sent via email. parameters: - description: The username of the user to request a token for. in: body name: credentials required: true schema: $ref: '#/definitions/models.PasswordTokenRequest' type: object produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/models.Message' "404": description: The user does not exist. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal error schema: $ref: '#/definitions/models.Message' summary: Request password reset token tags: - user /user/token: post: consumes: - application/json description: Returns a new valid jwt user token with an extended length. produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/v1.Token' "400": description: Only user token are available for renew. schema: $ref: '#/definitions/models.Message' summary: Renew user token tags: - user /users: get: consumes: - application/json description: Lists all users (without emailadresses). Also possible to search for a specific user. parameters: - description: Search for a user by its name. in: query name: s type: string produces: - application/json responses: "200": description: All (found) users. schema: items: $ref: '#/definitions/models.User' type: array "400": description: Something's invalid. schema: $ref: '#/definitions/code.vikunja.io/web.HTTPError' "500": description: Internal server error. schema: $ref: '#/definitions/models.Message' security: - JWTKeyAuth: [] summary: Get users tags: - user securityDefinitions: BasicAuth: type: basic JWTKeyAuth: in: header name: Authorization type: apiKey swagger: "2.0"