//  Vikunja is a todo-list application to facilitate your life.
//  Copyright 2018 Vikunja and contributors. All rights reserved.
//
//  This program is free software: you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation, either version 3 of the License, or
//  (at your option) any later version.
//
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//
//  You should have received a copy of the GNU General Public License
//  along with this program.  If not, see <https://www.gnu.org/licenses/>.

// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
// This file was generated by swaggo/swag at
// 2018-11-20 14:02:38.646137557 +0100 CET m=+0.072751301

package docs

import (
	"bytes"

	"github.com/alecthomas/template"
	"github.com/swaggo/swag"
)

var doc = `{
    "swagger": "2.0",
    "info": {
        "description": "{{.Description}}",
        "title": "Vikunja API",
        "contact": {},
        "license": {
            "name": "GPLv3"
        },
        "version": "{{.Version}}"
    },
    "host": "{{.Host}}",
    "basePath": "/api/v1",
    "paths": {
        "/lists": {
            "get": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Returns all lists a user has access to.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "list"
                ],
                "summary": "Get all lists a user has access to",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "The page number. Used for pagination. If not provided, the first page of results is returned.",
                        "name": "p",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Search lists by title.",
                        "name": "s",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The lists",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/models.List"
                            }
                        }
                    },
                    "403": {
                        "description": "The user does not have access to the list",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/lists/{id}": {
            "get": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Returns a list by its ID.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "list"
                ],
                "summary": "Gets one list",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "List ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The list",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.List"
                        }
                    },
                    "403": {
                        "description": "The user does not have access to the list",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Inserts a task into a list.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "task"
                ],
                "summary": "Create a task",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "List ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "The task object",
                        "name": "task",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.ListTask"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The created task object.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.ListTask"
                        }
                    },
                    "400": {
                        "description": "Invalid task object provided.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "403": {
                        "description": "The user does not have access to the list",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Updates a list. This does not include adding a task (see below).",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "list"
                ],
                "summary": "Updates a list",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "List ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "The list with updated values you want to update.",
                        "name": "list",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.List"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The updated list.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.List"
                        }
                    },
                    "400": {
                        "description": "Invalid list object provided.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "403": {
                        "description": "The user does not have access to the list",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Delets a list",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "list"
                ],
                "summary": "Deletes a list",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "List ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The list was successfully deleted.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    },
                    "400": {
                        "description": "Invalid list object provided.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "403": {
                        "description": "The user does not have access to the list",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/lists/{id}/teams": {
            "get": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Returns a list with all teams which have access on a given list.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "sharing"
                ],
                "summary": "Get teams on a list",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "List ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "The page number. Used for pagination. If not provided, the first page of results is returned.",
                        "name": "p",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Search teams by its name.",
                        "name": "s",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The teams with their right.",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/models.TeamWithRight"
                            }
                        }
                    },
                    "403": {
                        "description": "No right to see the list.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Gives a team access to a list.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "sharing"
                ],
                "summary": "Add a team to a list",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "List ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "The team you want to add to the list.",
                        "name": "list",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.TeamList"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The created team\u003c-\u003elist relation.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.TeamList"
                        }
                    },
                    "400": {
                        "description": "Invalid team list object provided.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "403": {
                        "description": "The user does not have access to the list",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "404": {
                        "description": "The team does not exist.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/lists/{id}/users": {
            "get": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Returns a list with all users which have access on a given list.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "sharing"
                ],
                "summary": "Get users on a list",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "List ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "The page number. Used for pagination. If not provided, the first page of results is returned.",
                        "name": "p",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Search users by its name.",
                        "name": "s",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The users with the right they have.",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/models.UserWithRight"
                            }
                        }
                    },
                    "403": {
                        "description": "No right to see the list.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Gives a user access to a list.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "sharing"
                ],
                "summary": "Add a user to a list",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "List ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "The user you want to add to the list.",
                        "name": "list",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.ListUser"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The created user\u003c-\u003elist relation.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.ListUser"
                        }
                    },
                    "400": {
                        "description": "Invalid user list object provided.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "403": {
                        "description": "The user does not have access to the list",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "404": {
                        "description": "The user does not exist.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/lists/{listID}/teams/{teamID}": {
            "post": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Update a team \u003c-\u003e list relation. Mostly used to update the right that team has.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "sharing"
                ],
                "summary": "Update a team \u003c-\u003e list relation",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "List ID",
                        "name": "listID",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Team ID",
                        "name": "teamID",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "The team you want to update.",
                        "name": "list",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.TeamList"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The updated team \u003c-\u003e list relation.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.TeamList"
                        }
                    },
                    "403": {
                        "description": "The user does not have admin-access to the list",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "404": {
                        "description": "Team or list does not exist.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Delets a team from a list. The team won't have access to the list anymore.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "sharing"
                ],
                "summary": "Delete a team from a list",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "List ID",
                        "name": "listID",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Team ID",
                        "name": "teamID",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The team was successfully deleted.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    },
                    "403": {
                        "description": "The user does not have access to the list",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "404": {
                        "description": "Team or list does not exist.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/lists/{listID}/users/{userID}": {
            "post": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Update a user \u003c-\u003e list relation. Mostly used to update the right that user has.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "sharing"
                ],
                "summary": "Update a user \u003c-\u003e list relation",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "List ID",
                        "name": "listID",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "User ID",
                        "name": "userID",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "The user you want to update.",
                        "name": "list",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.ListUser"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The updated user \u003c-\u003e list relation.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.ListUser"
                        }
                    },
                    "403": {
                        "description": "The user does not have admin-access to the list",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "404": {
                        "description": "User or list does not exist.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Delets a user from a list. The user won't have access to the list anymore.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "sharing"
                ],
                "summary": "Delete a user from a list",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "List ID",
                        "name": "listID",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "User ID",
                        "name": "userID",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The user was successfully removed from the list.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    },
                    "403": {
                        "description": "The user does not have access to the list",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "404": {
                        "description": "user or list does not exist.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/login": {
            "post": {
                "description": "Logs a user in. Returns a JWT-Token to authenticate further requests.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "user"
                ],
                "summary": "Login",
                "parameters": [
                    {
                        "description": "The login credentials",
                        "name": "credentials",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.UserLogin"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/v1.Token"
                        }
                    },
                    "400": {
                        "description": "Invalid user password model.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    },
                    "403": {
                        "description": "Invalid username or password.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/namespace/{id}": {
            "post": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Updates a namespace.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "namespace"
                ],
                "summary": "Updates a namespace",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Namespace ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "The namespace with updated values you want to update.",
                        "name": "namespace",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Namespace"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The updated namespace.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Namespace"
                        }
                    },
                    "400": {
                        "description": "Invalid namespace object provided.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "403": {
                        "description": "The user does not have access to the namespace",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/namespaces": {
            "get": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Returns all namespaces a user has access to.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "namespace"
                ],
                "summary": "Get all namespaces a user has access to",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "The page number. Used for pagination. If not provided, the first page of results is returned.",
                        "name": "p",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Search namespaces by name.",
                        "name": "s",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The Namespaces.",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/models.NamespaceWithLists"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Creates a new namespace.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "namespace"
                ],
                "summary": "Creates a new namespace",
                "parameters": [
                    {
                        "description": "The namespace you want to create.",
                        "name": "namespace",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Namespace"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The created namespace.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Namespace"
                        }
                    },
                    "400": {
                        "description": "Invalid namespace object provided.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "403": {
                        "description": "The user does not have access to the namespace",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/namespaces/{id}": {
            "get": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Returns a namespace by its ID.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "namespace"
                ],
                "summary": "Gets one namespace",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Namespace ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The Namespace",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Namespace"
                        }
                    },
                    "403": {
                        "description": "The user does not have access to that namespace.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Delets a namespace",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "namespace"
                ],
                "summary": "Deletes a namespace",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Namespace ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The namespace was successfully deleted.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    },
                    "400": {
                        "description": "Invalid namespace object provided.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "403": {
                        "description": "The user does not have access to the namespace",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/namespaces/{id}/lists": {
            "get": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Returns all lists inside of a namespace.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "namespace"
                ],
                "summary": "Get all lists in a namespace",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Namespace ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The lists.",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/models.List"
                            }
                        }
                    },
                    "403": {
                        "description": "No access to that namespace.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    },
                    "404": {
                        "description": "The namespace does not exist.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/namespaces/{id}/teams": {
            "get": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Returns a namespace with all teams which have access on a given namespace.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "sharing"
                ],
                "summary": "Get teams on a namespace",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Namespace ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "The page number. Used for pagination. If not provided, the first page of results is returned.",
                        "name": "p",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Search teams by its name.",
                        "name": "s",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The teams with the right they have.",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/models.TeamWithRight"
                            }
                        }
                    },
                    "403": {
                        "description": "No right to see the namespace.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Gives a team access to a namespace.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "sharing"
                ],
                "summary": "Add a team to a namespace",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Namespace ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "The team you want to add to the namespace.",
                        "name": "namespace",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.TeamNamespace"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The created team\u003c-\u003enamespace relation.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.TeamNamespace"
                        }
                    },
                    "400": {
                        "description": "Invalid team namespace object provided.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "403": {
                        "description": "The team does not have access to the namespace",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "404": {
                        "description": "The team does not exist.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/namespaces/{id}/users": {
            "get": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Returns a namespace with all users which have access on a given namespace.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "sharing"
                ],
                "summary": "Get users on a namespace",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Namespace ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "The page number. Used for pagination. If not provided, the first page of results is returned.",
                        "name": "p",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Search users by its name.",
                        "name": "s",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The users with the right they have.",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/models.UserWithRight"
                            }
                        }
                    },
                    "403": {
                        "description": "No right to see the namespace.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Gives a user access to a namespace.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "sharing"
                ],
                "summary": "Add a user to a namespace",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Namespace ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "The user you want to add to the namespace.",
                        "name": "namespace",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.NamespaceUser"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The created user\u003c-\u003enamespace relation.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.NamespaceUser"
                        }
                    },
                    "400": {
                        "description": "Invalid user namespace object provided.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "403": {
                        "description": "The user does not have access to the namespace",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "404": {
                        "description": "The user does not exist.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/namespaces/{namespaceID}/lists": {
            "put": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Creates a new list in a given namespace. The user needs write-access to the namespace.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "list"
                ],
                "summary": "Creates a new list",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Namespace ID",
                        "name": "namespaceID",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "The list you want to create.",
                        "name": "list",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.List"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The created list.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.List"
                        }
                    },
                    "400": {
                        "description": "Invalid list object provided.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "403": {
                        "description": "The user does not have access to the list",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/namespaces/{namespaceID}/teams/{teamID}": {
            "post": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Update a team \u003c-\u003e namespace relation. Mostly used to update the right that team has.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "sharing"
                ],
                "summary": "Update a team \u003c-\u003e namespace relation",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Namespace ID",
                        "name": "namespaceID",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Team ID",
                        "name": "teamID",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "The team you want to update.",
                        "name": "namespace",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.TeamNamespace"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The updated team \u003c-\u003e namespace relation.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.TeamNamespace"
                        }
                    },
                    "403": {
                        "description": "The team does not have admin-access to the namespace",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "404": {
                        "description": "Team or namespace does not exist.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Delets a team from a namespace. The team won't have access to the namespace anymore.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "sharing"
                ],
                "summary": "Delete a team from a namespace",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Namespace ID",
                        "name": "namespaceID",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "team ID",
                        "name": "teamID",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The team was successfully deleted.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    },
                    "403": {
                        "description": "The team does not have access to the namespace",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "404": {
                        "description": "team or namespace does not exist.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/namespaces/{namespaceID}/users/{userID}": {
            "post": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Update a user \u003c-\u003e namespace relation. Mostly used to update the right that user has.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "sharing"
                ],
                "summary": "Update a user \u003c-\u003e namespace relation",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Namespace ID",
                        "name": "namespaceID",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "User ID",
                        "name": "userID",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "The user you want to update.",
                        "name": "namespace",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.NamespaceUser"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The updated user \u003c-\u003e namespace relation.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.NamespaceUser"
                        }
                    },
                    "403": {
                        "description": "The user does not have admin-access to the namespace",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "404": {
                        "description": "User or namespace does not exist.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Delets a user from a namespace. The user won't have access to the namespace anymore.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "sharing"
                ],
                "summary": "Delete a user from a namespace",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Namespace ID",
                        "name": "namespaceID",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "user ID",
                        "name": "userID",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The user was successfully deleted.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    },
                    "403": {
                        "description": "The user does not have access to the namespace",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "404": {
                        "description": "user or namespace does not exist.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/register": {
            "post": {
                "description": "Creates a new user account.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "user"
                ],
                "summary": "Register",
                "parameters": [
                    {
                        "description": "The user credentials",
                        "name": "credentials",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.APIUserPassword"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.User"
                        }
                    },
                    "400": {
                        "description": "No or invalid user register object provided / User already exists.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/tasks": {
            "get": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Returns all tasks on any list the user has access to.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "task"
                ],
                "summary": "Get tasks",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "The page number. Used for pagination. If not provided, the first page of results is returned.",
                        "name": "p",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Search tasks by task text.",
                        "name": "s",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The tasks",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/models.List"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/tasks/caldav": {
            "get": {
                "security": [
                    {
                        "BasicAuth": []
                    }
                ],
                "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"
                ],
                "tags": [
                    "task"
                ],
                "summary": "CalDAV-readable format with all tasks as calendar events.",
                "responses": {
                    "200": {
                        "description": "The caldav events.",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "403": {
                        "description": "Unauthorized.",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/tasks/{id}": {
            "post": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Updates a task. This includes marking it as done.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "task"
                ],
                "summary": "Update a task",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Task ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "The task object",
                        "name": "task",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.ListTask"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The updated task object.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.ListTask"
                        }
                    },
                    "400": {
                        "description": "Invalid task object provided.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "403": {
                        "description": "The user does not have access to the task (aka its list)",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Deletes a task from a list. This does not mean \"mark it done\".",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "task"
                ],
                "summary": "Delete a task",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Task ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The created task object.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    },
                    "400": {
                        "description": "Invalid task ID provided.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "403": {
                        "description": "The user does not have access to the list",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/teams": {
            "get": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Returns all teams the current user is part of.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "team"
                ],
                "summary": "Get teams",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "The page number. Used for pagination. If not provided, the first page of results is returned.",
                        "name": "p",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Search teams by its name.",
                        "name": "s",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The teams.",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/models.Team"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Creates a new team in a given namespace. The user needs write-access to the namespace.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "team"
                ],
                "summary": "Creates a new team",
                "parameters": [
                    {
                        "description": "The team you want to create.",
                        "name": "team",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Team"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The created team.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Team"
                        }
                    },
                    "400": {
                        "description": "Invalid team object provided.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/teams/{id}": {
            "post": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Updates a team.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "team"
                ],
                "summary": "Updates a team",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Team ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "The team with updated values you want to update.",
                        "name": "team",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Team"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The updated team.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Team"
                        }
                    },
                    "400": {
                        "description": "Invalid team object provided.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Delets a team. This will also remove the access for all users in that team.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "team"
                ],
                "summary": "Deletes a team",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Team ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The team was successfully deleted.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    },
                    "400": {
                        "description": "Invalid team object provided.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/teams/{id}/members": {
            "put": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Add a user to a team.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "team"
                ],
                "summary": "Add a user to a team",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Team ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "The user to be added to a team.",
                        "name": "team",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.TeamMember"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The newly created member object",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.TeamMember"
                        }
                    },
                    "400": {
                        "description": "Invalid member object provided.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "403": {
                        "description": "The user does not have access to the team",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/teams/{id}/members/{userID}": {
            "delete": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Remove a user from a team. This will also revoke any access this user might have via that team.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "team"
                ],
                "summary": "Remove a user from a team",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Team ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "User ID",
                        "name": "userID",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The user was successfully removed from the team.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/user": {
            "get": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Returns the current user object.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "user"
                ],
                "summary": "Get user information",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.User"
                        }
                    },
                    "404": {
                        "description": "User does not exist.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal server error.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/user/confirm": {
            "post": {
                "description": "Confirms the email of a newly registered user.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "user"
                ],
                "summary": "Confirm the email of a new user",
                "parameters": [
                    {
                        "description": "The token.",
                        "name": "credentials",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.EmailConfirm"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    },
                    "412": {
                        "description": "Bad token provided.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/user/password": {
            "post": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Lets the current user change its password.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "user"
                ],
                "summary": "Change password",
                "parameters": [
                    {
                        "description": "The current and new password.",
                        "name": "userPassword",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/v1.UserPassword"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    },
                    "400": {
                        "description": "Something's invalid.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "404": {
                        "description": "User does not exist.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal server error.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/user/password/reset": {
            "post": {
                "description": "Resets a user email with a previously reset token.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "user"
                ],
                "summary": "Resets a password",
                "parameters": [
                    {
                        "description": "The token with the new password.",
                        "name": "credentials",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.PasswordReset"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    },
                    "400": {
                        "description": "Bad token provided.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/user/password/token": {
            "post": {
                "description": "Requests a token to reset a users password. The token is sent via email.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "user"
                ],
                "summary": "Request password reset token",
                "parameters": [
                    {
                        "description": "The username of the user to request a token for.",
                        "name": "credentials",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.PasswordTokenRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    },
                    "404": {
                        "description": "The user does not exist.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal error",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        },
        "/users": {
            "get": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Lists all users (without emailadresses). Also possible to search for a specific user.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "user"
                ],
                "summary": "Get users",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Search for a user by its name.",
                        "name": "s",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "All (found) users.",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/models.User"
                            }
                        }
                    },
                    "400": {
                        "description": "Something's invalid.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.HTTPError"
                        }
                    },
                    "500": {
                        "description": "Internal server error.",
                        "schema": {
                            "type": "object",
                            "$ref": "#/definitions/models.Message"
                        }
                    }
                }
            }
        }
    },
    "definitions": {
        "models.APIUserPassword": {
            "type": "object",
            "properties": {
                "email": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "password": {
                    "type": "string"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "models.EmailConfirm": {
            "type": "object",
            "properties": {
                "token": {
                    "type": "string"
                }
            }
        },
        "models.HTTPError": {
            "type": "object",
            "properties": {
                "code": {
                    "type": "integer"
                },
                "message": {
                    "type": "string"
                }
            }
        },
        "models.List": {
            "type": "object",
            "properties": {
                "created": {
                    "type": "integer"
                },
                "description": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "owner": {
                    "type": "object",
                    "$ref": "#/definitions/models.User"
                },
                "tasks": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/models.ListTask"
                    }
                },
                "title": {
                    "type": "string"
                },
                "updated": {
                    "type": "integer"
                }
            }
        },
        "models.ListTask": {
            "type": "object",
            "properties": {
                "created": {
                    "type": "integer"
                },
                "createdBy": {
                    "type": "object",
                    "$ref": "#/definitions/models.User"
                },
                "description": {
                    "type": "string"
                },
                "done": {
                    "type": "boolean"
                },
                "dueDate": {
                    "type": "integer"
                },
                "id": {
                    "type": "integer"
                },
                "listID": {
                    "type": "integer"
                },
                "reminderDates": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    }
                },
                "text": {
                    "type": "string"
                },
                "updated": {
                    "type": "integer"
                }
            }
        },
        "models.ListUser": {
            "type": "object",
            "properties": {
                "created": {
                    "type": "integer"
                },
                "id": {
                    "type": "integer"
                },
                "list_id": {
                    "type": "integer"
                },
                "right": {
                    "type": "integer"
                },
                "updated": {
                    "type": "integer"
                },
                "user_id": {
                    "type": "integer"
                }
            }
        },
        "models.Message": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string"
                }
            }
        },
        "models.Namespace": {
            "type": "object",
            "properties": {
                "created": {
                    "type": "integer"
                },
                "description": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                },
                "owner": {
                    "type": "object",
                    "$ref": "#/definitions/models.User"
                },
                "updated": {
                    "type": "integer"
                }
            }
        },
        "models.NamespaceUser": {
            "type": "object",
            "properties": {
                "created": {
                    "type": "integer"
                },
                "id": {
                    "type": "integer"
                },
                "namespace_id": {
                    "type": "integer"
                },
                "right": {
                    "type": "integer"
                },
                "updated": {
                    "type": "integer"
                },
                "user_id": {
                    "type": "integer"
                }
            }
        },
        "models.NamespaceWithLists": {
            "type": "object",
            "properties": {
                "created": {
                    "type": "integer"
                },
                "description": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "lists": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/models.List"
                    }
                },
                "name": {
                    "type": "string"
                },
                "owner": {
                    "type": "object",
                    "$ref": "#/definitions/models.User"
                },
                "updated": {
                    "type": "integer"
                }
            }
        },
        "models.PasswordReset": {
            "type": "object",
            "properties": {
                "new_password": {
                    "type": "string"
                },
                "token": {
                    "type": "string"
                }
            }
        },
        "models.PasswordTokenRequest": {
            "type": "object",
            "properties": {
                "user_name": {
                    "type": "string"
                }
            }
        },
        "models.Team": {
            "type": "object",
            "properties": {
                "created": {
                    "type": "integer"
                },
                "created_by": {
                    "type": "object",
                    "$ref": "#/definitions/models.User"
                },
                "description": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "members": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/models.TeamUser"
                    }
                },
                "name": {
                    "type": "string"
                },
                "updated": {
                    "type": "integer"
                }
            }
        },
        "models.TeamList": {
            "type": "object",
            "properties": {
                "created": {
                    "type": "integer"
                },
                "id": {
                    "type": "integer"
                },
                "list_id": {
                    "type": "integer"
                },
                "right": {
                    "type": "integer"
                },
                "team_id": {
                    "type": "integer"
                },
                "updated": {
                    "type": "integer"
                }
            }
        },
        "models.TeamMember": {
            "type": "object",
            "properties": {
                "admin": {
                    "type": "boolean"
                },
                "created": {
                    "type": "integer"
                },
                "id": {
                    "type": "integer"
                },
                "team_id": {
                    "type": "integer"
                },
                "updated": {
                    "type": "integer"
                },
                "user_id": {
                    "type": "integer"
                }
            }
        },
        "models.TeamNamespace": {
            "type": "object",
            "properties": {
                "created": {
                    "type": "integer"
                },
                "id": {
                    "type": "integer"
                },
                "namespace_id": {
                    "type": "integer"
                },
                "right": {
                    "type": "integer"
                },
                "team_id": {
                    "type": "integer"
                },
                "updated": {
                    "type": "integer"
                }
            }
        },
        "models.TeamUser": {
            "type": "object",
            "properties": {
                "admin": {
                    "type": "boolean"
                },
                "created": {
                    "type": "integer"
                },
                "email": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "updated": {
                    "type": "integer"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "models.TeamWithRight": {
            "type": "object",
            "properties": {
                "created": {
                    "type": "integer"
                },
                "created_by": {
                    "type": "object",
                    "$ref": "#/definitions/models.User"
                },
                "description": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "members": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/models.TeamUser"
                    }
                },
                "name": {
                    "type": "string"
                },
                "right": {
                    "type": "integer"
                },
                "updated": {
                    "type": "integer"
                }
            }
        },
        "models.User": {
            "type": "object",
            "properties": {
                "created": {
                    "type": "integer"
                },
                "email": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "updated": {
                    "type": "integer"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "models.UserLogin": {
            "type": "object",
            "properties": {
                "password": {
                    "type": "string"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "models.UserWithRight": {
            "type": "object",
            "properties": {
                "created": {
                    "type": "integer"
                },
                "email": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "right": {
                    "type": "integer"
                },
                "updated": {
                    "type": "integer"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "v1.Token": {
            "type": "object",
            "properties": {
                "token": {
                    "type": "string"
                }
            }
        },
        "v1.UserPassword": {
            "type": "object",
            "properties": {
                "new_password": {
                    "type": "string"
                },
                "old_password": {
                    "type": "string"
                }
            }
        }
    },
    "securityDefinitions": {
        "ApiKeyAuth": {
            "type": "apiKey",
            "name": "Authorization",
            "in": "header"
        },
        "BasicAuth": {
            "type": "basic"
        }
    }
}`

type swaggerInfo struct {
	Version     string
	Host        string
	BasePath    string
	Title       string
	Description string
}

// SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo swaggerInfo

type s struct{}

func (s *s) ReadDoc() string {
	t, err := template.New("swagger_info").Parse(doc)
	if err != nil {
		return doc
	}

	var tpl bytes.Buffer
	if err := t.Execute(&tpl, SwaggerInfo); err != nil {
		return doc
	}

	return tpl.String()
}

func init() {
	swag.Register(swag.Name, &s{})
}
