vikunja-api/docs/swagger/swagger.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": {
"email": {
"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"
}
}
}