9665 lines
357 KiB
Go
9665 lines
357 KiB
Go
// Package swagger Code generated by swaggo/swag. DO NOT EDIT
|
|
package swagger
|
|
|
|
import "github.com/swaggo/swag"
|
|
|
|
const docTemplate = `{
|
|
"schemes": {{ marshal .Schemes }},
|
|
"swagger": "2.0",
|
|
"info": {
|
|
"description": "{{escape .Description}}",
|
|
"title": "{{.Title}}",
|
|
"contact": {
|
|
"name": "General Vikunja contact",
|
|
"url": "https://vikunja.io/contact/",
|
|
"email": "hello@vikunja.io"
|
|
},
|
|
"license": {
|
|
"name": "AGPL-3.0-or-later",
|
|
"url": "https://code.vikunja.io/api/src/branch/main/LICENSE"
|
|
},
|
|
"version": "{{.Version}}"
|
|
},
|
|
"host": "{{.Host}}",
|
|
"basePath": "{{.BasePath}}",
|
|
"paths": {
|
|
"/auth/openid/{provider}/callback": {
|
|
"post": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"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.",
|
|
"name": "per_page",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "The notifications",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/notifications.DatabaseNotification"
|
|
}
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Link shares cannot have notifications.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal error",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"sharing"
|
|
],
|
|
"summary": "Mark all notifications of a user as read",
|
|
"responses": {
|
|
"200": {
|
|
"description": "All notifications marked as read.",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal error",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/notifications/{id}": {
|
|
"post": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Marks a notification as either read or unread. A user can only mark their own notifications as read.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"subscriptions"
|
|
],
|
|
"summary": "Mark a notification as (un-)read",
|
|
"parameters": [
|
|
{
|
|
"type": "integer",
|
|
"description": "Notification ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "The notification to mark as read.",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.DatabaseNotifications"
|
|
}
|
|
},
|
|
"403": {
|
|
"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}/projectusers": {
|
|
"get": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Lists all users (without emailadresses). Also possible to search for a specific user.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"project"
|
|
],
|
|
"summary": "Get users",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Search for a user by its name.",
|
|
"name": "s",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"description": "Project ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "All (found) users.",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/user.User"
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Something's invalid.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "The user does not have the right to see the project.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal server error.",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/projects/{id}/tasks": {
|
|
"put": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Inserts a task into a project.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"task"
|
|
],
|
|
"summary": "Create a task",
|
|
"parameters": [
|
|
{
|
|
"type": "integer",
|
|
"description": "Project ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "The task object",
|
|
"name": "task",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Task"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"201": {
|
|
"description": "The created 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 project",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal error",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/projects/{id}/teams": {
|
|
"get": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Returns a project with all teams which have access on a given project.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"sharing"
|
|
],
|
|
"summary": "Get teams on a project",
|
|
"parameters": [
|
|
{
|
|
"type": "integer",
|
|
"description": "Project 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": "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 with their right.",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/models.TeamWithRight"
|
|
}
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "No right to see the project.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal error",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Gives a team access to a project.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"sharing"
|
|
],
|
|
"summary": "Add a team to a project",
|
|
"parameters": [
|
|
{
|
|
"type": "integer",
|
|
"description": "Project ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "The team you want to add to the project.",
|
|
"name": "project",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/models.TeamProject"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"201": {
|
|
"description": "The created team\u003c-\u003eproject relation.",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.TeamProject"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Invalid team project object provided.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "The user does not have access to the project",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "The team does not exist.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal error",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/projects/{id}/users": {
|
|
"get": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Returns a project with all users which have access on a given project.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"sharing"
|
|
],
|
|
"summary": "Get users on a project",
|
|
"parameters": [
|
|
{
|
|
"type": "integer",
|
|
"description": "Project 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": "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 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 project.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal error",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Gives a user access to a project.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"sharing"
|
|
],
|
|
"summary": "Add a user to a project",
|
|
"parameters": [
|
|
{
|
|
"type": "integer",
|
|
"description": "Project ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "The user you want to add to the project.",
|
|
"name": "project",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/models.ProjectUser"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"201": {
|
|
"description": "The created user\u003c-\u003eproject relation.",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.ProjectUser"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Invalid user project object provided.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "The user does not have access to the project",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "The user does not exist.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal error",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/projects/{id}/views/{view}/buckets": {
|
|
"get": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Returns all kanban buckets which belong to that project. Buckets are always sorted by their ` + "`" + `position` + "`" + ` in ascending order. To get all buckets with their tasks, use the tasks endpoint with a kanban view.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"project"
|
|
],
|
|
"summary": "Get all kanban buckets of a project",
|
|
"parameters": [
|
|
{
|
|
"type": "integer",
|
|
"description": "Project ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"description": "Project view ID",
|
|
"name": "view",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "The buckets",
|
|
"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.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"project"
|
|
],
|
|
"summary": "Create a new bucket",
|
|
"parameters": [
|
|
{
|
|
"type": "integer",
|
|
"description": "Project Id",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"description": "Project view ID",
|
|
"name": "view",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "The bucket object",
|
|
"name": "bucket",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Bucket"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "The created bucket object.",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Bucket"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Invalid bucket object provided.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "The project does not exist.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal error",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/projects/{id}/views/{view}/tasks": {
|
|
"get": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Returns all tasks for the current project.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"task"
|
|
],
|
|
"summary": "Get tasks in a project",
|
|
"parameters": [
|
|
{
|
|
"type": "integer",
|
|
"description": "The project ID.",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"description": "The project view ID.",
|
|
"name": "view",
|
|
"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 tasks by task text.",
|
|
"name": "s",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "The sorting parameter. You can pass this multiple times to get the tasks ordered by multiple different parametes, along with ` + "`" + `order_by` + "`" + `. Possible values to sort by are ` + "`" + `id` + "`" + `, ` + "`" + `title` + "`" + `, ` + "`" + `description` + "`" + `, ` + "`" + `done` + "`" + `, ` + "`" + `done_at` + "`" + `, ` + "`" + `due_date` + "`" + `, ` + "`" + `created_by_id` + "`" + `, ` + "`" + `project_id` + "`" + `, ` + "`" + `repeat_after` + "`" + `, ` + "`" + `priority` + "`" + `, ` + "`" + `start_date` + "`" + `, ` + "`" + `end_date` + "`" + `, ` + "`" + `hex_color` + "`" + `, ` + "`" + `percent_done` + "`" + `, ` + "`" + `uid` + "`" + `, ` + "`" + `created` + "`" + `, ` + "`" + `updated` + "`" + `. Default is ` + "`" + `id` + "`" + `.",
|
|
"name": "sort_by",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"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 filter query to match tasks by. Check out https://vikunja.io/docs/filters for a full explanation of the feature.",
|
|
"name": "filter",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"description": "The time zone which should be used for date match (statements like ",
|
|
"name": "filter_timezone",
|
|
"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"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/projects/{id}/webhooks": {
|
|
"get": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Get all api webhook targets for the specified project.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"webhooks"
|
|
],
|
|
"summary": "Get all api webhook targets for the specified project",
|
|
"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 bucket per page. This parameter is limited by the configured maximum of items per page.",
|
|
"name": "per_page",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"description": "Project ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "The list of all webhook targets",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/models.Webhook"
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal server error",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Create a webhook target which receives POST requests about specified events from a project.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"webhooks"
|
|
],
|
|
"summary": "Create a webhook target",
|
|
"parameters": [
|
|
{
|
|
"type": "integer",
|
|
"description": "Project ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "The webhook target object with required fields",
|
|
"name": "webhook",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Webhook"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "The created webhook target.",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Webhook"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Invalid webhook object provided.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal error",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/projects/{id}/webhooks/{webhookID}": {
|
|
"post": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Change a webhook target's events. You cannot change other values of a webhook.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"webhooks"
|
|
],
|
|
"summary": "Change a webhook target's events.",
|
|
"parameters": [
|
|
{
|
|
"type": "integer",
|
|
"description": "Project ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"description": "Webhook ID",
|
|
"name": "webhookID",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Updated webhook target",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Webhook"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "The webhok target does not exist",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal error",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Delete any of the project's webhook targets.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"webhooks"
|
|
],
|
|
"summary": "Deletes an existing webhook target",
|
|
"parameters": [
|
|
{
|
|
"type": "integer",
|
|
"description": "Project ID",
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"description": "Webhook ID",
|
|
"name": "webhookID",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successfully deleted.",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "The webhok target does not exist.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal error",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/projects/{projectID}/duplicate": {
|
|
"put": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"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.",
|
|
"name": "project",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/models.ProjectDuplicate"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"201": {
|
|
"description": "The created project.",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.ProjectDuplicate"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Invalid project duplicate object provided.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "The user does not have access to the project or its parent.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal error",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/projects/{projectID}/teams/{teamID}": {
|
|
"post": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Update a team \u003c-\u003e project relation. Mostly used to update the right that team has.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"sharing"
|
|
],
|
|
"summary": "Update a team \u003c-\u003e project relation",
|
|
"parameters": [
|
|
{
|
|
"type": "integer",
|
|
"description": "Project ID",
|
|
"name": "projectID",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"description": "Team ID",
|
|
"name": "teamID",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "The team you want to update.",
|
|
"name": "project",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/models.TeamProject"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "The updated team \u003c-\u003e project relation.",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.TeamProject"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "The user does not have admin-access to the project",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Team or project does not exist.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal error",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Delets a team from a project. The team won't have access to the project anymore.",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"sharing"
|
|
],
|
|
"summary": "Delete a team from a project",
|
|
"parameters": [
|
|
{
|
|
"type": "integer",
|
|
"description": "Project ID",
|
|
"name": "projectID",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"description": "Team ID",
|
|
"name": "teamID",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "The team was successfully deleted.",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "The user does not have access to the project",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Team or project does not exist.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal error",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/projects/{projectID}/users/{userID}": {
|
|
"post": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Update a user \u003c-\u003e project relation. Mostly used to update the right that user has.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"sharing"
|
|
],
|
|
"summary": "Update a user \u003c-\u003e project relation",
|
|
"parameters": [
|
|
{
|
|
"type": "integer",
|
|
"description": "Project ID",
|
|
"name": "projectID",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"description": "User ID",
|
|
"name": "userID",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "The user you want to update.",
|
|
"name": "project",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/models.ProjectUser"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "The updated user \u003c-\u003e project relation.",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.ProjectUser"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "The user does not have admin-access to the project",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "User or project does not exist.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal error",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Delets a user from a project. The user won't have access to the project anymore.",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"sharing"
|
|
],
|
|
"summary": "Delete a user from a project",
|
|
"parameters": [
|
|
{
|
|
"type": "integer",
|
|
"description": "Project ID",
|
|
"name": "projectID",
|
|
"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 project.",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "The user does not have access to the project",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "user or project does not exist.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal error",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/projects/{projectID}/views/{view}/buckets/{bucketID}": {
|
|
"post": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Updates an existing kanban bucket.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"project"
|
|
],
|
|
"summary": "Update an existing bucket",
|
|
"parameters": [
|
|
{
|
|
"type": "integer",
|
|
"description": "Project Id",
|
|
"name": "projectID",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"description": "Bucket Id",
|
|
"name": "bucketID",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"description": "Project view ID",
|
|
"name": "view",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "The bucket object",
|
|
"name": "bucket",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Bucket"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "The created bucket object.",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Bucket"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Invalid bucket object provided.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "The bucket does not exist.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal error",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"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.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"project"
|
|
],
|
|
"summary": "Deletes an existing bucket",
|
|
"parameters": [
|
|
{
|
|
"type": "integer",
|
|
"description": "Project Id",
|
|
"name": "projectID",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"description": "Bucket Id",
|
|
"name": "bucketID",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"type": "integer",
|
|
"description": "Project view ID",
|
|
"name": "view",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Successfully deleted.",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "The bucket does not exist.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal error",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/projects/{project}/shares": {
|
|
"get": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Returns all link shares which exist for a given project",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"sharing"
|
|
],
|
|
"summary": "Get all link shares for a project",
|
|
"parameters": [
|
|
{
|
|
"type": "integer",
|
|
"description": "Project ID",
|
|
"name": "project",
|
|
"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 shares by hash.",
|
|
"name": "s",
|
|
"in": "query"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "The share links",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/models.LinkSharing"
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal error",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Share a project via link. The user needs to have write-access to the project to be able do this.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"sharing"
|
|
],
|
|
"summary": "Share a project via link",
|
|
"parameters": [
|
|
{
|
|
"type": "integer",
|
|
"description": "Project ID",
|
|
"name": "project",
|
|
"in": "path",
|
|
"required": true
|
|
},
|
|
{
|
|
"description": "The new link share object",
|
|
"name": "label",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"$ref": "#/definitions/models.LinkSharing"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"201": {
|
|
"description": "The created link share object.",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.LinkSharing"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Invalid link share object provided.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Not allowed to add the project share.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "The project does not exist.",
|
|
"schema": {
|
|
"$ref": "#/definitions/web.HTTPError"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal error",
|
|
"schema": {
|
|
"$ref": "#/definitions/models.Message"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/projects/{project}/shares/{share}": {
|
|
"get": {
|
|
"security": [
|
|
{
|
|
"JWTKeyAuth": []
|
|
}
|
|
],
|
|
"description": "Returns one link share by its ID.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|