basePath: /api/v1
definitions:
  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
      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.
        maxLength: 250
        type: string
      done:
        description: Whether a task is done or not.
        type: boolean
      dueDate:
        description: A unix timestamp when the task is due.
        type: integer
      endDate:
        description: When this task ends.
        type: integer
      id:
        description: The unique, numeric id of this task.
        type: integer
      labels:
        description: An array of labels which are associated with this task.
        items:
          $ref: '#/definitions/models.Label'
        type: array
      parentTaskID:
        description: If the task is a subtask, this is the id of its parent.
        type: integer
      priority:
        description: The task priority. Can be anything you want, it is possible to
          sort by this later.
        type: integer
      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
      subtasks:
        description: An array of subtasks.
        items:
          $ref: '#/definitions/models.ListTask'
        type: array
      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.
        maxLength: 250
        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.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.
        maxLength: 1000
        type: string
      id:
        description: The unique, numeric id of this list.
        type: integer
      owner:
        $ref: '#/definitions/models.User'
        description: The user who created this list.
        type: object
      tasks:
        description: An array of tasks which belong to the list.
        items:
          $ref: '#/definitions/models.ListTask'
        type: array
      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.ListTask:
    properties:
      assignees:
        description: An array of users who are assigned to this task
        items:
          $ref: '#/definitions/models.User'
        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.
        maxLength: 250
        type: string
      done:
        description: Whether a task is done or not.
        type: boolean
      dueDate:
        description: A unix timestamp when the task is due.
        type: integer
      endDate:
        description: When this task ends.
        type: integer
      id:
        description: The unique, numeric id of this task.
        type: integer
      labels:
        description: An array of labels which are associated with this task.
        items:
          $ref: '#/definitions/models.Label'
        type: array
      parentTaskID:
        description: If the task is a subtask, this is the id of its parent.
        type: integer
      priority:
        description: The task priority. Can be anything you want, it is possible to
          sort by this later.
        type: integer
      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
      subtasks:
        description: An array of subtasks.
        items:
          $ref: '#/definitions/models.ListTask'
        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.ListTaskAssginee:
    properties:
      created:
        type: integer
      user_id:
        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 user id.
        type: integer
    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
        maxLength: 250
        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 user id.
        type: integer
    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
        maxLength: 250
        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.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.
        maxLength: 250
        minLength: 0
        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
      userID:
        description: The id of the member.
        type: integer
    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
      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.
        maxLength: 250
        minLength: 0
        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:
      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:
      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
host: '{{.Host}}'
info:
  contact:
    email: hello@vikunja.io
    name: General Vikunja contact
    url: http://vikunja.io/en/contact/
  description: '<!-- ReDoc-Inject: <security-definitions> -->'
  license:
    name: GPLv3
    url: http://code.vikunja.io/api/src/branch/master/LICENSE
  title: Vikunja API
  version: '{{.Version}}'
paths:
  /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: p
        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'
            type: object
      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'
            type: object
        "400":
          description: Invalid label object provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "403":
          description: Not allowed to delete the label.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "404":
          description: Label not found.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "403":
          description: The user does not have access to the label
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "404":
          description: Label not found
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "400":
          description: Invalid label object provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "403":
          description: Not allowed to update the label.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "404":
          description: Label not found.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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: p
        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'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "400":
          description: Invalid list object provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "403":
          description: The user does not have access to the list
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      security:
      - JWTKeyAuth: []
      summary: Deletes a list
      tags:
      - list
    get:
      consumes:
      - application/json
      description: Returns a team by its ID.
      parameters:
      - description: Team ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: The team
          schema:
            $ref: '#/definitions/models.Team'
            type: object
        "403":
          description: The user does not have access to the team
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      security:
      - JWTKeyAuth: []
      summary: Gets one team
      tags:
      - team
    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'
            type: object
        "400":
          description: Invalid list object provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "403":
          description: The user does not have access to the list
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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.ListTask'
          type: object
      produces:
      - application/json
      responses:
        "200":
          description: The created task object.
          schema:
            $ref: '#/definitions/models.ListTask'
            type: object
        "400":
          description: Invalid task object provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "403":
          description: The user does not have access to the list
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      security:
      - JWTKeyAuth: []
      summary: Create a task
      tags:
      - task
  /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: p
        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'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "400":
          description: Invalid team list object provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "403":
          description: The user does not have access to the list
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "404":
          description: The team does not exist.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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: p
        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'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "400":
          description: Invalid user list object provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "403":
          description: The user does not have access to the list
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "404":
          description: The user does not exist.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      security:
      - JWTKeyAuth: []
      summary: Add a user to a list
      tags:
      - sharing
  /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'
            type: object
        "403":
          description: The user does not have access to the list
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "404":
          description: Team or list does not exist.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "403":
          description: The user does not have admin-access to the list
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "404":
          description: Team or list does not exist.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "403":
          description: The user does not have access to the list
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "404":
          description: user or list does not exist.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "403":
          description: The user does not have admin-access to the list
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "404":
          description: User or list does not exist.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "400":
          description: Invalid user password model.
          schema:
            $ref: '#/definitions/models.Message'
            type: object
        "403":
          description: Invalid username or password.
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      summary: Login
      tags:
      - user
  /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'
            type: object
        "400":
          description: Invalid namespace object provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "403":
          description: The user does not have access to the namespace
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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: p
        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'
            type: object
      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'
            type: object
        "400":
          description: Invalid namespace object provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "403":
          description: The user does not have access to the namespace
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "400":
          description: Invalid namespace object provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "403":
          description: The user does not have access to the namespace
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "403":
          description: The user does not have access to that namespace.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "404":
          description: The namespace does not exist.
          schema:
            $ref: '#/definitions/models.Message'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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: p
        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'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "400":
          description: Invalid team namespace object provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "403":
          description: The team does not have access to the namespace
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "404":
          description: The team does not exist.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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: p
        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'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "400":
          description: Invalid user namespace object provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "403":
          description: The user does not have access to the namespace
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "404":
          description: The user does not exist.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "400":
          description: Invalid list object provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "403":
          description: The user does not have access to the list
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "403":
          description: The team does not have access to the namespace
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "404":
          description: team or namespace does not exist.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "403":
          description: The team does not have admin-access to the namespace
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "404":
          description: Team or namespace does not exist.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "403":
          description: The user does not have access to the namespace
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "404":
          description: user or namespace does not exist.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "403":
          description: The user does not have admin-access to the namespace
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "404":
          description: User or namespace does not exist.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "400":
          description: No or invalid user register object provided / User already
            exists.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      summary: Register
      tags:
      - user
  /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'
            type: object
        "400":
          description: Invalid task ID provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "403":
          description: The user does not have access to the list
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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.ListTask'
          type: object
      produces:
      - application/json
      responses:
        "200":
          description: The updated task object.
          schema:
            $ref: '#/definitions/models.ListTask'
            type: object
        "400":
          description: Invalid task object provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "403":
          description: The user does not have access to the task (aka its list)
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      security:
      - JWTKeyAuth: []
      summary: Update a task
      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: p
        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'
            type: object
      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'
            type: object
        "400":
          description: Invalid label object provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "403":
          description: Not allowed to add the label.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "404":
          description: The label does not exist.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "403":
          description: Not allowed to remove the label.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "404":
          description: Label not found.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      security:
      - JWTKeyAuth: []
      summary: Remove a label from a task
      tags:
      - labels
  /tasks/{taskID}/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.ListTaskAssginee'
          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.ListTaskAssginee'
            type: object
        "400":
          description: Invalid assignee object provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "403":
          description: Not allowed to delete the assignee.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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.ListTaskAssginee'
            type: object
        "400":
          description: Invalid assignee object provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "400":
          description: Invalid label object provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      security:
      - JWTKeyAuth: []
      summary: Update all labels on a task.
      tags:
      - labels
  /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: p
        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, dueadate, dueadatedesc, dueadateasc.
        in: query
        name: sort
        type: string
      - description: The start date parameter to filter by. Expects a unix timestamp.
        in: query
        name: startdate
        type: integer
      - description: The end date parameter to filter by. Expects a unix timestamp.
        in: query
        name: enddate
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: The tasks
          schema:
            items:
              $ref: '#/definitions/models.List'
            type: array
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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.ListTask'
            type: object
        "400":
          description: Invalid task object provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "403":
          description: The user does not have access to the task (aka its list)
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      security:
      - JWTKeyAuth: []
      summary: Update a bunch of tasks at once
      tags:
      - task
  /tasks/caldav:
    get:
      description: Returns a calDAV-parsable format with all tasks as calendar events.
        Only returns tasks with a due date. Also creates reminders when the task has
        one.
      produces:
      - text/plain
      responses:
        "200":
          description: The caldav events.
          schema:
            type: string
        "403":
          description: Unauthorized.
          schema:
            type: string
      security:
      - BasicAuth: []
      summary: CalDAV-readable format with all tasks as calendar events.
      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: p
        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'
            type: object
      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'
            type: object
        "400":
          description: Invalid team object provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "400":
          description: Invalid team object provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "400":
          description: Invalid team object provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "400":
          description: Invalid member object provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "403":
          description: The user does not have access to the team
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "404":
          description: User does not exist.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal server error.
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "412":
          description: Bad token provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "400":
          description: Something's invalid.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "404":
          description: User does not exist.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal server error.
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "400":
          description: Bad token provided.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      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'
            type: object
        "404":
          description: The user does not exist.
          schema:
            $ref: '#/definitions/code.vikunja.io/web.HTTPError'
            type: object
        "500":
          description: Internal error
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      summary: Request password reset 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'
            type: object
        "500":
          description: Internal server error.
          schema:
            $ref: '#/definitions/models.Message'
            type: object
      security:
      - JWTKeyAuth: []
      summary: Get users
      tags:
      - user
securityDefinitions:
  BasicAuth:
    type: basic
  JWTKeyAuth:
    in: header
    name: Authorization
    type: apiKey
swagger: "2.0"
