"description":"After a redirect from the OpenID Connect provider to the frontend has been made with the authentication ` + "`" + `code` + "`" + `, this endpoint can be used to obtain a jwt token for that user and thus log them in.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"auth"
],
"summary":"Authenticate a user with OpenID Connect",
"operationId":"get-token-openid",
"parameters":[
{
"description":"The openid callback",
"name":"callback",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/openid.Callback"
}
},
{
"type":"integer",
"description":"The OpenID Connect provider key as returned by the /info endpoint",
"name":"provider",
"in":"path",
"required":true
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/auth.Token"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/backgrounds/unsplash/image/{image}":{
"get":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Get an unsplash image. **Returns json on error.**",
"produces":[
"application/octet-stream"
],
"tags":[
"project"
],
"summary":"Get an unsplash image",
"parameters":[
{
"type":"integer",
"description":"Unsplash Image ID",
"name":"image",
"in":"path",
"required":true
}
],
"responses":{
"200":{
"description":"The image",
"schema":{
"type":"file"
}
},
"404":{
"description":"The image does not exist.",
"schema":{
"$ref":"#/definitions/models.Message"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/backgrounds/unsplash/image/{image}/thumb":{
"get":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Get an unsplash thumbnail image. The thumbnail is cropped to a max width of 200px. **Returns json on error.**",
"produces":[
"application/octet-stream"
],
"tags":[
"project"
],
"summary":"Get an unsplash thumbnail image",
"parameters":[
{
"type":"integer",
"description":"Unsplash Image ID",
"name":"image",
"in":"path",
"required":true
}
],
"responses":{
"200":{
"description":"The thumbnail",
"schema":{
"type":"file"
}
},
"404":{
"description":"The image does not exist.",
"schema":{
"$ref":"#/definitions/models.Message"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/backgrounds/unsplash/search":{
"get":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Search for a project background from unsplash",
"produces":[
"application/json"
],
"tags":[
"project"
],
"summary":"Search for a background from unsplash",
"parameters":[
{
"type":"string",
"description":"Search backgrounds from unsplash with this search term.",
"name":"s",
"in":"query"
},
{
"type":"integer",
"description":"The page number. Used for pagination. If not provided, the first page of results is returned.",
"name":"p",
"in":"query"
}
],
"responses":{
"200":{
"description":"An array with photos",
"schema":{
"type":"array",
"items":{
"$ref":"#/definitions/background.Image"
}
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/filters":{
"put":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Creates a new saved filter",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"filter"
],
"summary":"Creates a new saved filter",
"responses":{
"201":{
"description":"The Saved Filter",
"schema":{
"$ref":"#/definitions/models.SavedFilter"
}
},
"403":{
"description":"The user does not have access to that saved filter.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/filters/{id}":{
"get":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Returns a saved filter by its ID.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"filter"
],
"summary":"Gets one saved filter",
"parameters":[
{
"type":"integer",
"description":"Filter ID",
"name":"id",
"in":"path",
"required":true
}
],
"responses":{
"200":{
"description":"The Saved Filter",
"schema":{
"$ref":"#/definitions/models.SavedFilter"
}
},
"403":{
"description":"The user does not have access to that saved filter.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
},
"post":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Updates a saved filter by its ID.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"filter"
],
"summary":"Updates a saved filter",
"parameters":[
{
"type":"integer",
"description":"Filter ID",
"name":"id",
"in":"path",
"required":true
}
],
"responses":{
"200":{
"description":"The Saved Filter",
"schema":{
"$ref":"#/definitions/models.SavedFilter"
}
},
"403":{
"description":"The user does not have access to that saved filter.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"404":{
"description":"The saved filter does not exist.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
},
"delete":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Removes a saved filter by its ID.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"filter"
],
"summary":"Removes a saved filter",
"parameters":[
{
"type":"integer",
"description":"Filter ID",
"name":"id",
"in":"path",
"required":true
}
],
"responses":{
"200":{
"description":"The Saved Filter",
"schema":{
"$ref":"#/definitions/models.SavedFilter"
}
},
"403":{
"description":"The user does not have access to that saved filter.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"404":{
"description":"The saved filter does not exist.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/info":{
"get":{
"description":"Returns the version, frontendurl, motd and various settings of Vikunja",
"produces":[
"application/json"
],
"tags":[
"service"
],
"summary":"Info",
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/v1.vikunjaInfos"
}
}
}
}
},
"/labels":{
"get":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Returns all labels which are either created by the user or associated with a task the user has at least read-access to.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"labels"
],
"summary":"Get all labels 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":"page",
"in":"query"
},
{
"type":"integer",
"description":"The maximum number of items per page. Note this parameter is limited by the configured maximum of items per page.",
"name":"per_page",
"in":"query"
},
{
"type":"string",
"description":"Search labels by label text.",
"name":"s",
"in":"query"
}
],
"responses":{
"200":{
"description":"The labels",
"schema":{
"type":"array",
"items":{
"$ref":"#/definitions/models.Label"
}
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
},
"put":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Creates a new label.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"labels"
],
"summary":"Create a label",
"parameters":[
{
"description":"The label object",
"name":"label",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/models.Label"
}
}
],
"responses":{
"201":{
"description":"The created label object.",
"schema":{
"$ref":"#/definitions/models.Label"
}
},
"400":{
"description":"Invalid label object provided.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/labels/{id}":{
"get":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Returns one label by its ID.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"labels"
],
"summary":"Gets one label",
"parameters":[
{
"type":"integer",
"description":"Label ID",
"name":"id",
"in":"path",
"required":true
}
],
"responses":{
"200":{
"description":"The label",
"schema":{
"$ref":"#/definitions/models.Label"
}
},
"403":{
"description":"The user does not have access to the label",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"404":{
"description":"Label not found",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
},
"put":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Update an existing label. The user needs to be the creator of the label to be able to do this.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"labels"
],
"summary":"Update a label",
"parameters":[
{
"type":"integer",
"description":"Label ID",
"name":"id",
"in":"path",
"required":true
},
{
"description":"The label object",
"name":"label",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/models.Label"
}
}
],
"responses":{
"200":{
"description":"The created label object.",
"schema":{
"$ref":"#/definitions/models.Label"
}
},
"400":{
"description":"Invalid label object provided.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"403":{
"description":"Not allowed to update the label.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"404":{
"description":"Label not found.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
},
"delete":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Delete an existing label. The user needs to be the creator of the label to be able to do this.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"labels"
],
"summary":"Delete a label",
"parameters":[
{
"type":"integer",
"description":"Label ID",
"name":"id",
"in":"path",
"required":true
}
],
"responses":{
"200":{
"description":"The label was successfully deleted.",
"schema":{
"$ref":"#/definitions/models.Label"
}
},
"403":{
"description":"Not allowed to delete the label.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"404":{
"description":"Label not found.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"500":{
"description":"Internal error",
"schema":{
"$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":[
"auth"
],
"summary":"Login",
"parameters":[
{
"description":"The login credentials",
"name":"credentials",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/user.Login"
}
}
],
"responses":{
"200":{
"description":"OK",
"schema":{
"$ref":"#/definitions/auth.Token"
}
},
"400":{
"description":"Invalid user password model.",
"schema":{
"$ref":"#/definitions/models.Message"
}
},
"403":{
"description":"Invalid username or password.",
"schema":{
"$ref":"#/definitions/models.Message"
}
},
"412":{
"description":"Invalid totp passcode.",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/migration/microsoft-todo/auth":{
"get":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Returns the auth url where the user needs to get its auth code. This code can then be used to migrate everything from Microsoft Todo to Vikunja.",
"produces":[
"application/json"
],
"tags":[
"migration"
],
"summary":"Get the auth url from Microsoft Todo",
"responses":{
"200":{
"description":"The auth url.",
"schema":{
"$ref":"#/definitions/handler.AuthURL"
}
},
"500":{
"description":"Internal server error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/migration/microsoft-todo/migrate":{
"post":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Migrates all tasklinsts, tasks, notes and reminders from Microsoft Todo to Vikunja.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"migration"
],
"summary":"Migrate all projects, tasks etc. from Microsoft Todo",
"parameters":[
{
"description":"The auth token previously obtained from the auth url. See the docs for /migration/microsoft-todo/auth.",
"name":"migrationCode",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/microsofttodo.Migration"
}
}
],
"responses":{
"200":{
"description":"A message telling you everything was migrated successfully.",
"schema":{
"$ref":"#/definitions/models.Message"
}
},
"500":{
"description":"Internal server error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/migration/microsoft-todo/status":{
"get":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Returns if the current user already did the migation or not. This is useful to show a confirmation message in the frontend if the user is trying to do the same migration again.",
"produces":[
"application/json"
],
"tags":[
"migration"
],
"summary":"Get migration status",
"responses":{
"200":{
"description":"The migration status",
"schema":{
"$ref":"#/definitions/migration.Status"
}
},
"500":{
"description":"Internal server error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/migration/ticktick/migrate":{
"post":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Imports all projects, tasks, notes, reminders, subtasks and files from a TickTick backup export into Vikunja.",
"consumes":[
"application/x-www-form-urlencoded"
],
"produces":[
"application/json"
],
"tags":[
"migration"
],
"summary":"Import all projects, tasks etc. from a TickTick backup export",
"parameters":[
{
"type":"string",
"description":"The TickTick backup csv file.",
"name":"import",
"in":"formData",
"required":true
}
],
"responses":{
"200":{
"description":"A message telling you everything was migrated successfully.",
"schema":{
"$ref":"#/definitions/models.Message"
}
},
"500":{
"description":"Internal server error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/migration/ticktick/status":{
"get":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Returns if the current user already did the migation or not. This is useful to show a confirmation message in the frontend if the user is trying to do the same migration again.",
"produces":[
"application/json"
],
"tags":[
"migration"
],
"summary":"Get migration status",
"responses":{
"200":{
"description":"The migration status",
"schema":{
"$ref":"#/definitions/migration.Status"
}
},
"500":{
"description":"Internal server error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/migration/todoist/auth":{
"get":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Returns the auth url where the user needs to get its auth code. This code can then be used to migrate everything from todoist to Vikunja.",
"produces":[
"application/json"
],
"tags":[
"migration"
],
"summary":"Get the auth url from todoist",
"responses":{
"200":{
"description":"The auth url.",
"schema":{
"$ref":"#/definitions/handler.AuthURL"
}
},
"500":{
"description":"Internal server error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/migration/todoist/migrate":{
"post":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Migrates all projects, tasks, notes, reminders, subtasks and files from todoist to vikunja.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"migration"
],
"summary":"Migrate all lists, tasks etc. from todoist",
"parameters":[
{
"description":"The auth code previously obtained from the auth url. See the docs for /migration/todoist/auth.",
"name":"migrationCode",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/todoist.Migration"
}
}
],
"responses":{
"200":{
"description":"A message telling you everything was migrated successfully.",
"schema":{
"$ref":"#/definitions/models.Message"
}
},
"500":{
"description":"Internal server error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/migration/todoist/status":{
"get":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Returns if the current user already did the migation or not. This is useful to show a confirmation message in the frontend if the user is trying to do the same migration again.",
"produces":[
"application/json"
],
"tags":[
"migration"
],
"summary":"Get migration status",
"responses":{
"200":{
"description":"The migration status",
"schema":{
"$ref":"#/definitions/migration.Status"
}
},
"500":{
"description":"Internal server error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/migration/trello/auth":{
"get":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Returns the auth url where the user needs to get its auth code. This code can then be used to migrate everything from trello to Vikunja.",
"produces":[
"application/json"
],
"tags":[
"migration"
],
"summary":"Get the auth url from trello",
"responses":{
"200":{
"description":"The auth url.",
"schema":{
"$ref":"#/definitions/handler.AuthURL"
}
},
"500":{
"description":"Internal server error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/migration/trello/migrate":{
"post":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Migrates all projects, tasks, notes, reminders, subtasks and files from trello to vikunja.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"migration"
],
"summary":"Migrate all projects, tasks etc. from trello",
"parameters":[
{
"description":"The auth token previously obtained from the auth url. See the docs for /migration/trello/auth.",
"name":"migrationCode",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/trello.Migration"
}
}
],
"responses":{
"200":{
"description":"A message telling you everything was migrated successfully.",
"schema":{
"$ref":"#/definitions/models.Message"
}
},
"500":{
"description":"Internal server error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/migration/trello/status":{
"get":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Returns if the current user already did the migation or not. This is useful to show a confirmation message in the frontend if the user is trying to do the same migration again.",
"produces":[
"application/json"
],
"tags":[
"migration"
],
"summary":"Get migration status",
"responses":{
"200":{
"description":"The migration status",
"schema":{
"$ref":"#/definitions/migration.Status"
}
},
"500":{
"description":"Internal server error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/migration/vikunja-file/migrate":{
"post":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Imports all projects, tasks, notes, reminders, subtasks and files from a Vikunjda data export into Vikunja.",
"consumes":[
"application/x-www-form-urlencoded"
],
"produces":[
"application/json"
],
"tags":[
"migration"
],
"summary":"Import all projects, tasks etc. from a Vikunja data export",
"parameters":[
{
"type":"string",
"description":"The Vikunja export zip file.",
"name":"import",
"in":"formData",
"required":true
}
],
"responses":{
"200":{
"description":"A message telling you everything was migrated successfully.",
"schema":{
"$ref":"#/definitions/models.Message"
}
},
"500":{
"description":"Internal server error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/migration/vikunja-file/status":{
"get":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Returns if the current user already did the migation or not. This is useful to show a confirmation message in the frontend if the user is trying to do the same migration again.",
"produces":[
"application/json"
],
"tags":[
"migration"
],
"summary":"Get migration status",
"responses":{
"200":{
"description":"The migration status",
"schema":{
"$ref":"#/definitions/migration.Status"
}
},
"500":{
"description":"Internal server error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/notifications":{
"get":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Returns an array with all notifications for the current user.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"subscriptions"
],
"summary":"Get all notifications for the current user",
"parameters":[
{
"type":"integer",
"description":"The page number. Used for pagination. If not provided, the first page of results is returned.",
"name":"page",
"in":"query"
},
{
"type":"integer",
"description":"The maximum number of items per page. Note this parameter is limited by the configured maximum of items per page.",
"description":"Link shares cannot have notifications.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"404":{
"description":"The notification does not exist.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/projects":{
"get":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Returns all projects a user has access to.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"project"
],
"summary":"Get all projects 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":"page",
"in":"query"
},
{
"type":"integer",
"description":"The maximum number of items per page. Note this parameter is limited by the configured maximum of items per page.",
"name":"per_page",
"in":"query"
},
{
"type":"string",
"description":"Search projects by title.",
"name":"s",
"in":"query"
},
{
"type":"boolean",
"description":"If true, also returns all archived projects.",
"name":"is_archived",
"in":"query"
}
],
"responses":{
"200":{
"description":"The projects",
"schema":{
"type":"array",
"items":{
"$ref":"#/definitions/models.Project"
}
}
},
"403":{
"description":"The user does not have access to the project",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
},
"put":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Creates a new project. If a parent project is provided the user needs to have write access to that project.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"project"
],
"summary":"Creates a new project",
"parameters":[
{
"description":"The project you want to create.",
"name":"project",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/models.Project"
}
}
],
"responses":{
"201":{
"description":"The created project.",
"schema":{
"$ref":"#/definitions/models.Project"
}
},
"400":{
"description":"Invalid project object provided.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"403":{
"description":"The user does not have access to the project",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/projects/{id}":{
"get":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Returns a project by its ID.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"project"
],
"summary":"Gets one project",
"parameters":[
{
"type":"integer",
"description":"Project ID",
"name":"id",
"in":"path",
"required":true
}
],
"responses":{
"200":{
"description":"The project",
"schema":{
"$ref":"#/definitions/models.Project"
}
},
"403":{
"description":"The user does not have access to the project",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
},
"post":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Updates a project. This does not include adding a task (see below).",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"project"
],
"summary":"Updates a project",
"parameters":[
{
"type":"integer",
"description":"Project ID",
"name":"id",
"in":"path",
"required":true
},
{
"description":"The project with updated values you want to update.",
"name":"project",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/models.Project"
}
}
],
"responses":{
"200":{
"description":"The updated project.",
"schema":{
"$ref":"#/definitions/models.Project"
}
},
"400":{
"description":"Invalid project object provided.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"403":{
"description":"The user does not have access to the project",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
},
"delete":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Delets a project",
"produces":[
"application/json"
],
"tags":[
"project"
],
"summary":"Deletes a project",
"parameters":[
{
"type":"integer",
"description":"Project ID",
"name":"id",
"in":"path",
"required":true
}
],
"responses":{
"200":{
"description":"The project was successfully deleted.",
"schema":{
"$ref":"#/definitions/models.Message"
}
},
"400":{
"description":"Invalid project object provided.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"403":{
"description":"The user does not have access to the project",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/projects/{id}/background":{
"get":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Get the project background of a specific project. **Returns json on error.**",
"produces":[
"application/octet-stream"
],
"tags":[
"project"
],
"summary":"Get the project background",
"parameters":[
{
"type":"integer",
"description":"Project ID",
"name":"id",
"in":"path",
"required":true
}
],
"responses":{
"200":{
"description":"The project background file.",
"schema":{
"type":"file"
}
},
"403":{
"description":"No access to this project.",
"schema":{
"$ref":"#/definitions/models.Message"
}
},
"404":{
"description":"The project does not exist.",
"schema":{
"$ref":"#/definitions/models.Message"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
},
"delete":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Removes a previously set project background, regardless of the project provider used to set the background. It does not throw an error if the project does not have a background.",
"produces":[
"application/json"
],
"tags":[
"project"
],
"summary":"Remove a project background",
"parameters":[
{
"type":"integer",
"description":"Project ID",
"name":"id",
"in":"path",
"required":true
}
],
"responses":{
"200":{
"description":"The project",
"schema":{
"$ref":"#/definitions/models.Project"
}
},
"403":{
"description":"No access to this project.",
"schema":{
"$ref":"#/definitions/models.Message"
}
},
"404":{
"description":"The project does not exist.",
"schema":{
"$ref":"#/definitions/models.Message"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/projects/{id}/backgrounds/unsplash":{
"post":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Sets a photo from unsplash as project background.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"project"
],
"summary":"Set an unsplash photo as project background",
"parameters":[
{
"type":"integer",
"description":"Project ID",
"name":"id",
"in":"path",
"required":true
},
{
"description":"The image you want to set as background",
"name":"project",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/background.Image"
}
}
],
"responses":{
"200":{
"description":"The background has been successfully set.",
"schema":{
"$ref":"#/definitions/models.Project"
}
},
"400":{
"description":"Invalid image object provided.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"403":{
"description":"The user does not have access to the project",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/projects/{id}/backgrounds/upload":{
"put":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Upload a project background.",
"consumes":[
"multipart/form-data"
],
"produces":[
"application/json"
],
"tags":[
"project"
],
"summary":"Upload a project background",
"parameters":[
{
"type":"integer",
"description":"Project ID",
"name":"id",
"in":"path",
"required":true
},
{
"type":"string",
"description":"The file as single file.",
"name":"background",
"in":"formData",
"required":true
}
],
"responses":{
"200":{
"description":"The background was set successfully.",
"schema":{
"$ref":"#/definitions/models.Message"
}
},
"400":{
"description":"File is no image.",
"schema":{
"$ref":"#/definitions/models.Message"
}
},
"403":{
"description":"File too large.",
"schema":{
"$ref":"#/definitions/models.Message"
}
},
"404":{
"description":"The project does not exist.",
"schema":{
"$ref":"#/definitions/models.Message"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/projects/{id}/buckets":{
"get":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Returns all kanban buckets with belong to a project including their tasks. Buckets are always sorted by their ` + "`" + `position` + "`" + ` in ascending order. Tasks are sorted by their ` + "`" + `kanban_position` + "`" + ` in ascending order.",
"description":"The page number for tasks. Used for pagination. If not provided, the first page of results is returned.",
"name":"page",
"in":"query"
},
{
"type":"integer",
"description":"The maximum number of tasks per bucket per page. This parameter is limited by the configured maximum of items per page.",
"name":"per_page",
"in":"query"
},
{
"type":"string",
"description":"Search tasks by task text.",
"name":"s",
"in":"query"
},
{
"type":"string",
"description":"The name of the field to filter by. Allowed values are all task properties. Task properties which are their own object require passing in the id of that entity. Accepts an array for multiple filters which will be chanied together, all supplied filter must match.",
"description":"The concatinator to use for filters. Available values are ` + "`" + `and` + "`" + ` or ` + "`" + `or` + "`" + `. Defaults to ` + "`" + `or` + "`" + `.",
"name":"filter_concat",
"in":"query"
},
{
"type":"string",
"description":"If set to true the result will include filtered fields whose value is set to ` + "`" + `null` + "`" + `. Available values are ` + "`" + `true` + "`" + ` or ` + "`" + `false` + "`" + `. Defaults to ` + "`" + `false` + "`" + `.",
"name":"filter_include_nulls",
"in":"query"
}
],
"responses":{
"200":{
"description":"The buckets with their tasks",
"schema":{
"type":"array",
"items":{
"$ref":"#/definitions/models.Bucket"
}
}
},
"500":{
"description":"Internal server error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
},
"put":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Creates a new kanban bucket on a project.",
"description":"The ordering parameter. Possible values to order by are ` + "`" + `asc` + "`" + ` or ` + "`" + `desc` + "`" + `. Default is ` + "`" + `asc` + "`" + `.",
"name":"order_by",
"in":"query"
},
{
"type":"string",
"description":"The name of the field to filter by. Allowed values are all task properties. Task properties which are their own object require passing in the id of that entity. Accepts an array for multiple filters which will be chanied together, all supplied filter must match.",
"name":"filter_by",
"in":"query"
},
{
"type":"string",
"description":"The value to filter for. You can use [grafana](https://grafana.com/docs/grafana/latest/dashboards/time-range-controls)- or [elasticsearch](https://www.elastic.co/guide/en/elasticsearch/reference/7.3/common-options.html#date-math)-style relative dates for all date fields like ` + "`" + `due_date` + "`" + `, ` + "`" + `start_date` + "`" + `, ` + "`" + `end_date` + "`" + `, etc.",
"description":"The concatinator to use for filters. Available values are ` + "`" + `and` + "`" + ` or ` + "`" + `or` + "`" + `. Defaults to ` + "`" + `or` + "`" + `.",
"name":"filter_concat",
"in":"query"
},
{
"type":"string",
"description":"If set to true the result will include filtered fields whose value is set to ` + "`" + `null` + "`" + `. Available values are ` + "`" + `true` + "`" + ` or ` + "`" + `false` + "`" + `. Defaults to ` + "`" + `false` + "`" + `.",
"description":"Deletes an existing kanban bucket and dissociates all of its task. It does not delete any tasks. You cannot delete the last bucket on a project.",
"description":"Copies the project, tasks, files, kanban data, assignees, comments, attachments, lables, relations, backgrounds, user/team rights and link shares from one project to a new one. The user needs read access in the project and write access in the parent of the new project.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"project"
],
"summary":"Duplicate an existing project",
"parameters":[
{
"type":"integer",
"description":"The project ID to duplicate",
"name":"projectID",
"in":"path",
"required":true
},
{
"description":"The target parent project which should hold the copied project.",
"description":"The ordering parameter. Possible values to order by are ` + "`" + `asc` + "`" + ` or ` + "`" + `desc` + "`" + `. Default is ` + "`" + `asc` + "`" + `.",
"name":"order_by",
"in":"query"
},
{
"type":"string",
"description":"The name of the field to filter by. Allowed values are all task properties. Task properties which are their own object require passing in the id of that entity. Accepts an array for multiple filters which will be chanied together, all supplied filter must match.",
"description":"The concatinator to use for filters. Available values are ` + "`" + `and` + "`" + ` or ` + "`" + `or` + "`" + `. Defaults to ` + "`" + `or` + "`" + `.",
"name":"filter_concat",
"in":"query"
},
{
"type":"string",
"description":"If set to true the result will include filtered fields whose value is set to ` + "`" + `null` + "`" + `. Available values are ` + "`" + `true` + "`" + ` or ` + "`" + `false` + "`" + `. Defaults to ` + "`" + `false` + "`" + `.",
"name":"filter_include_nulls",
"in":"query"
}
],
"responses":{
"200":{
"description":"The tasks",
"schema":{
"type":"array",
"items":{
"$ref":"#/definitions/models.Task"
}
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/tasks/bulk":{
"post":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Updates a bunch of tasks at once. This includes marking them as done. Note: although you could supply another ID, it will be ignored. Use task_ids instead.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"task"
],
"summary":"Update a bunch of tasks at once",
"parameters":[
{
"description":"The task object. Looks like a normal task, the only difference is it uses an array of project_ids to update.",
"name":"task",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/models.BulkTask"
}
}
],
"responses":{
"200":{
"description":"The updated task object.",
"schema":{
"$ref":"#/definitions/models.Task"
}
},
"400":{
"description":"Invalid task object provided.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"403":{
"description":"The user does not have access to the task (aka its project)",
"description":"Updates a task. This includes marking it as done. Assignees you pass will be updated, see their individual endpoints for more details on how this is done. To update labels, see the description of the endpoint.",
"description":"Adds multiple new assignees to a task. The assignee needs to have access to the project, the doer must be able to edit this task. Every user not in the project will be unassigned from the task, pass an empty array to unassign everyone.",
"description":"Updates all labels on a task. Every label which is not passed but exists on the task will be deleted. Every label which does not exist on the task will be added. All labels which are passed and already exist on the task won't be touched.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"labels"
],
"summary":"Update all labels on a task.",
"parameters":[
{
"description":"The array of labels",
"name":"label",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/models.LabelTaskBulk"
}
},
{
"type":"integer",
"description":"Task ID",
"name":"taskID",
"in":"path",
"required":true
}
],
"responses":{
"201":{
"description":"The updated labels object.",
"schema":{
"$ref":"#/definitions/models.LabelTaskBulk"
}
},
"400":{
"description":"Invalid label object provided.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/tasks/{taskID}/relations":{
"put":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Creates a new relation between two tasks. The user needs to have update rights on the base task and at least read rights on the other task. Both tasks do not need to be on the same project. Take a look at the docs for available task relation kinds.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"task"
],
"summary":"Create a new relation between two tasks",
"parameters":[
{
"description":"The relation object",
"name":"relation",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/models.TaskRelation"
}
},
{
"type":"integer",
"description":"Task ID",
"name":"taskID",
"in":"path",
"required":true
}
],
"responses":{
"201":{
"description":"The created task relation object.",
"description":"Returns all labels which are assicociated with a given task.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"labels"
],
"summary":"Get all labels on a task",
"parameters":[
{
"type":"integer",
"description":"Task ID",
"name":"task",
"in":"path",
"required":true
},
{
"type":"integer",
"description":"The page number. Used for pagination. If not provided, the first page of results is returned.",
"name":"page",
"in":"query"
},
{
"type":"integer",
"description":"The maximum number of items per page. Note this parameter is limited by the configured maximum of items per page.",
"name":"per_page",
"in":"query"
},
{
"type":"string",
"description":"Search labels by label text.",
"name":"s",
"in":"query"
}
],
"responses":{
"200":{
"description":"The labels",
"schema":{
"type":"array",
"items":{
"$ref":"#/definitions/models.Label"
}
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
},
"put":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Add a label to a task. The user needs to have write-access to the project to be able do this.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"labels"
],
"summary":"Add a label to a task",
"parameters":[
{
"type":"integer",
"description":"Task ID",
"name":"task",
"in":"path",
"required":true
},
{
"description":"The label object",
"name":"label",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/models.LabelTask"
}
}
],
"responses":{
"201":{
"description":"The created label relation object.",
"schema":{
"$ref":"#/definitions/models.LabelTask"
}
},
"400":{
"description":"Invalid label object provided.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"403":{
"description":"Not allowed to add the label.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"404":{
"description":"The label does not exist.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/tasks/{task}/labels/{label}":{
"delete":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Remove a label from a task. The user needs to have write-access to the project to be able do this.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"labels"
],
"summary":"Remove a label from a task",
"parameters":[
{
"type":"integer",
"description":"Task ID",
"name":"task",
"in":"path",
"required":true
},
{
"type":"integer",
"description":"Label ID",
"name":"label",
"in":"path",
"required":true
}
],
"responses":{
"200":{
"description":"The label was successfully removed.",
"schema":{
"$ref":"#/definitions/models.Message"
}
},
"403":{
"description":"Not allowed to remove the label.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"404":{
"description":"Label not found.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/teams":{
"get":{
"security":[
{
"JWTKeyAuth":[]
}
],
"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":"page",
"in":"query"
},
{
"type":"integer",
"description":"The maximum number of items per page. Note this parameter is limited by the configured maximum of items per page.",
"name":"per_page",
"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":{
"$ref":"#/definitions/models.Message"
}
}
}
},
"put":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Creates a new team.",
"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":{
"$ref":"#/definitions/models.Team"
}
}
],
"responses":{
"201":{
"description":"The created team.",
"schema":{
"$ref":"#/definitions/models.Team"
}
},
"400":{
"description":"Invalid team object provided.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/teams/{id}":{
"get":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Returns a team by its ID.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"team"
],
"summary":"Gets one team",
"parameters":[
{
"type":"integer",
"description":"Team ID",
"name":"id",
"in":"path",
"required":true
}
],
"responses":{
"200":{
"description":"The team",
"schema":{
"$ref":"#/definitions/models.Team"
}
},
"403":{
"description":"The user does not have access to the team",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
},
"post":{
"security":[
{
"JWTKeyAuth":[]
}
],
"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":{
"$ref":"#/definitions/models.Team"
}
}
],
"responses":{
"200":{
"description":"The updated team.",
"schema":{
"$ref":"#/definitions/models.Team"
}
},
"400":{
"description":"Invalid team object provided.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
},
"delete":{
"security":[
{
"JWTKeyAuth":[]
}
],
"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":{
"$ref":"#/definitions/models.Message"
}
},
"400":{
"description":"Invalid team object provided.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/teams/{id}/members":{
"put":{
"security":[
{
"JWTKeyAuth":[]
}
],
"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":{
"$ref":"#/definitions/models.TeamMember"
}
}
],
"responses":{
"201":{
"description":"The newly created member object",
"schema":{
"$ref":"#/definitions/models.TeamMember"
}
},
"400":{
"description":"Invalid member object provided.",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"403":{
"description":"The user does not have access to the team",
"schema":{
"$ref":"#/definitions/web.HTTPError"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/teams/{id}/members/{userID}":{
"delete":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Remove a user from a team. This will also revoke any access this user might have via that team. A user can remove themselves from the team if they are not the last user in the 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":{
"$ref":"#/definitions/models.Message"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/teams/{id}/members/{userID}/admin":{
"post":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"If a user is team admin, this will make them member and vise-versa.",
"produces":[
"application/json"
],
"tags":[
"team"
],
"summary":"Toggle a team member's admin status",
"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 member right was successfully changed.",
"schema":{
"$ref":"#/definitions/models.Message"
}
},
"500":{
"description":"Internal error",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/test/{table}":{
"patch":{
"description":"Fills the specified table with the content provided in the payload. You need to enable the testing endpoint before doing this and provide the ` + "`" + `Authorization:\u003ctoken\u003e` + "`" + ` secret when making requests to this endpoint. See docs for more details.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"testing"
],
"summary":"Reset the db to a defined state",
"parameters":[
{
"type":"string",
"description":"The table to reset",
"name":"table",
"in":"path",
"required":true
}
],
"responses":{
"201":{
"description":"Everything has been imported successfully.",
"schema":{
"type":"array",
"items":{
"$ref":"#/definitions/user.User"
}
}
},
"500":{
"description":"Internal server error.",
"schema":{
"$ref":"#/definitions/models.Message"
}
}
}
}
},
"/tokens":{
"get":{
"security":[
{
"JWTKeyAuth":[]
}
],
"description":"Returns all api tokens the current user has created.",
"consumes":[
"application/json"
],
"produces":[
"application/json"
],
"tags":[
"api"
],
"summary":"Get all api tokens of the current user",