basePath: /api/v1
definitions:
  models.APIUserPassword:
    properties:
      email:
        type: string
      id:
        type: integer
      password:
        type: string
      username:
        type: string
    type: object
  models.BulkTask:
    properties:
      created:
        type: integer
      createdBy:
        $ref: '#/definitions/models.User'
        type: object
      description:
        type: string
      done:
        type: boolean
      dueDate:
        type: integer
      endDate:
        type: integer
      id:
        type: integer
      listID:
        type: integer
      parentTaskID:
        type: integer
      priority:
        type: integer
      reminderDates:
        items:
          type: integer
        type: array
      repeatAfter:
        type: integer
      startDate:
        type: integer
      subtasks:
        items:
          $ref: '#/definitions/models.ListTask'
        type: array
      task_ids:
        items:
          type: integer
        type: array
      text:
        type: string
      updated:
        type: integer
    type: object
  models.EmailConfirm:
    properties:
      token:
        type: string
    type: object
  models.List:
    properties:
      created:
        type: integer
      description:
        type: string
      id:
        type: integer
      owner:
        $ref: '#/definitions/models.User'
        type: object
      tasks:
        items:
          $ref: '#/definitions/models.ListTask'
        type: array
      title:
        type: string
      updated:
        type: integer
    type: object
  models.ListTask:
    properties:
      created:
        type: integer
      createdBy:
        $ref: '#/definitions/models.User'
        type: object
      description:
        type: string
      done:
        type: boolean
      dueDate:
        type: integer
      endDate:
        type: integer
      id:
        type: integer
      listID:
        type: integer
      parentTaskID:
        type: integer
      priority:
        type: integer
      reminderDates:
        items:
          type: integer
        type: array
      repeatAfter:
        type: integer
      startDate:
        type: integer
      subtasks:
        items:
          $ref: '#/definitions/models.ListTask'
        type: array
      text:
        type: string
      updated:
        type: integer
    type: object
  models.ListUser:
    properties:
      created:
        type: integer
      id:
        type: integer
      list_id:
        type: integer
      right:
        type: integer
      updated:
        type: integer
      user_id:
        type: integer
    type: object
  models.Message:
    properties:
      message:
        type: string
    type: object
  models.Namespace:
    properties:
      created:
        type: integer
      description:
        type: string
      id:
        type: integer
      name:
        type: string
      owner:
        $ref: '#/definitions/models.User'
        type: object
      updated:
        type: integer
    type: object
  models.NamespaceUser:
    properties:
      created:
        type: integer
      id:
        type: integer
      namespace_id:
        type: integer
      right:
        type: integer
      updated:
        type: integer
      user_id:
        type: integer
    type: object
  models.NamespaceWithLists:
    properties:
      created:
        type: integer
      description:
        type: string
      id:
        type: integer
      lists:
        items:
          $ref: '#/definitions/models.List'
        type: array
      name:
        type: string
      owner:
        $ref: '#/definitions/models.User'
        type: object
      updated:
        type: integer
    type: object
  models.PasswordReset:
    properties:
      new_password:
        type: string
      token:
        type: string
    type: object
  models.PasswordTokenRequest:
    properties:
      email:
        type: string
    type: object
  models.Team:
    properties:
      created:
        type: integer
      created_by:
        $ref: '#/definitions/models.User'
        type: object
      description:
        type: string
      id:
        type: integer
      members:
        items:
          $ref: '#/definitions/models.TeamUser'
        type: array
      name:
        type: string
      updated:
        type: integer
    type: object
  models.TeamList:
    properties:
      created:
        type: integer
      id:
        type: integer
      list_id:
        type: integer
      right:
        type: integer
      team_id:
        type: integer
      updated:
        type: integer
    type: object
  models.TeamMember:
    properties:
      admin:
        type: boolean
      created:
        type: integer
      id:
        type: integer
      team_id:
        type: integer
      updated:
        type: integer
      user_id:
        type: integer
    type: object
  models.TeamNamespace:
    properties:
      created:
        type: integer
      id:
        type: integer
      namespace_id:
        type: integer
      right:
        type: integer
      team_id:
        type: integer
      updated:
        type: integer
    type: object
  models.TeamUser:
    properties:
      admin:
        type: boolean
      created:
        type: integer
      email:
        type: string
      id:
        type: integer
      updated:
        type: integer
      username:
        type: string
    type: object
  models.TeamWithRight:
    properties:
      created:
        type: integer
      created_by:
        $ref: '#/definitions/models.User'
        type: object
      description:
        type: string
      id:
        type: integer
      members:
        items:
          $ref: '#/definitions/models.TeamUser'
        type: array
      name:
        type: string
      right:
        type: integer
      updated:
        type: integer
    type: object
  models.User:
    properties:
      created:
        type: integer
      email:
        type: string
      id:
        type: integer
      updated:
        type: integer
      username:
        type: string
    type: object
  models.UserLogin:
    properties:
      password:
        type: string
      username:
        type: string
    type: object
  models.UserWithRight:
    properties:
      created:
        type: integer
      email:
        type: string
      id:
        type: integer
      right:
        type: integer
      updated:
        type: integer
      username:
        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: {}
  description: '{{.Description}}'
  license:
    name: GPLv3
  title: Vikunja API
  version: '{{.Version}}'
paths:
  /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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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'
            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:
      - ApiKeyAuth: []
      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'
            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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      summary: Delete a task
      tags:
      - task
    post:
      consumes:
      - application/json
      description: Updates a task. This includes marking it as done.
      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:
      - ApiKeyAuth: []
      summary: Update a task
      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: p
        type: integer
      - description: Search tasks by task text.
        in: query
        name: s
        type: string
      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:
      - ApiKeyAuth: []
      summary: Get tasks
      tags:
      - task
  /tasks/all/{sortby}:
    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: path
        name: sortby
        required: true
        type: string
      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:
      - ApiKeyAuth: []
      summary: Get tasks sorted
      tags:
      - task
  /tasks/all/{sortby}/{startdate}/{enddate}:
    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: path
        name: sortby
        required: true
        type: string
      - description: The start date parameter. Expects a unix timestamp.
        in: path
        name: startdate
        required: true
        type: string
      - description: The end date parameter. Expects a unix timestamp.
        in: path
        name: enddate
        required: true
        type: string
      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:
      - ApiKeyAuth: []
      summary: Get tasks sorted and within a date range
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      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:
      - ApiKeyAuth: []
      summary: Get users
      tags:
      - user
securityDefinitions:
  ApiKeyAuth:
    in: header
    name: Authorization
    type: apiKey
  BasicAuth:
    type: basic
swagger: "2.0"