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