2018-11-12 16:46:35 +01:00
{
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"500" : {
"description" : "Internal error" ,
"schema" : {
"type" : "object" ,
"$ref" : "#/definitions/models.Message"
}
}
}
}
} ,
"/lists/{id}" : {
"get" : {
"security" : [
{
"ApiKeyAuth" : [ ]
}
] ,
2018-12-02 01:49:30 +01:00
"description" : "Returns a list by its ID." ,
2018-11-12 16:46:35 +01:00
"consumes" : [
"application/json"
] ,
"produces" : [
"application/json"
] ,
"tags" : [
2018-12-02 01:49:30 +01:00
"list"
2018-11-12 16:46:35 +01:00
] ,
2018-12-02 01:49:30 +01:00
"summary" : "Gets one list" ,
2018-11-12 16:46:35 +01:00
"parameters" : [
{
"type" : "integer" ,
2018-12-02 01:49:30 +01:00
"description" : "List ID" ,
2018-11-12 16:46:35 +01:00
"name" : "id" ,
"in" : "path" ,
"required" : true
}
] ,
"responses" : {
"200" : {
2018-12-02 01:49:30 +01:00
"description" : "The list" ,
2018-11-12 16:46:35 +01:00
"schema" : {
"type" : "object" ,
2018-12-02 01:49:30 +01:00
"$ref" : "#/definitions/models.List"
2018-11-12 16:46:35 +01:00
}
} ,
"403" : {
2018-12-02 01:49:30 +01:00
"description" : "The user does not have access to the list" ,
2018-11-12 16:46:35 +01:00
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"403" : {
"description" : "The user does not have access to the list" ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"403" : {
"description" : "The user does not have access to the list" ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"403" : {
"description" : "The user does not have access to the list" ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"403" : {
"description" : "The user does not have access to the list" ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"404" : {
"description" : "The team does not exist." ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"403" : {
"description" : "The user does not have access to the list" ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"404" : {
"description" : "The user does not exist." ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"404" : {
"description" : "Team or list does not exist." ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"404" : {
"description" : "Team or list does not exist." ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"404" : {
"description" : "User or list does not exist." ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"404" : {
"description" : "user or list does not exist." ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"403" : {
"description" : "The user does not have access to the namespace" ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"403" : {
"description" : "The user does not have access to the namespace" ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"403" : {
"description" : "The user does not have access to the namespace" ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"403" : {
"description" : "The team does not have access to the namespace" ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"404" : {
"description" : "The team does not exist." ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"403" : {
"description" : "The user does not have access to the namespace" ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"404" : {
"description" : "The user does not exist." ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"403" : {
"description" : "The user does not have access to the list" ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"404" : {
"description" : "Team or namespace does not exist." ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"404" : {
"description" : "team or namespace does not exist." ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"404" : {
"description" : "User or namespace does not exist." ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"404" : {
"description" : "user or namespace does not exist." ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"403" : {
"description" : "The user does not have access to the task (aka its list)" ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"403" : {
"description" : "The user does not have access to the list" ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"500" : {
"description" : "Internal error" ,
"schema" : {
"type" : "object" ,
"$ref" : "#/definitions/models.Message"
}
}
}
}
} ,
2018-12-02 01:49:30 +01:00
"/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"
}
}
}
}
} ,
2018-11-12 16:46:35 +01:00
"/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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"403" : {
"description" : "The user does not have access to the team" ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"404" : {
"description" : "User does not exist." ,
"schema" : {
"type" : "object" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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" ,
2018-12-01 02:59:17 +01:00
"$ref" : "#/definitions/code.vikunja.io/web.HTTPError"
2018-11-12 16:46:35 +01:00
}
} ,
"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"
} ,
2018-12-01 03:00:57 +01:00
"parentTaskID" : {
"type" : "integer"
} ,
2018-12-02 01:49:30 +01:00
"priority" : {
"type" : "integer"
} ,
2018-11-21 16:03:47 +01:00
"reminderDates" : {
"type" : "array" ,
"items" : {
"type" : "integer"
}
2018-11-12 16:46:35 +01:00
} ,
2018-11-26 21:24:00 +01:00
"repeatAfter" : {
"type" : "integer"
} ,
2018-12-01 03:00:57 +01:00
"subtasks" : {
"type" : "array" ,
"items" : {
"$ref" : "#/definitions/models.ListTask"
}
} ,
2018-11-12 16:46:35 +01:00
"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"
} ,
2018-11-21 16:03:47 +01:00
"created" : {
"type" : "integer"
} ,
2018-11-12 16:46:35 +01:00
"email" : {
"type" : "string"
} ,
"id" : {
"type" : "integer"
} ,
2018-11-21 16:03:47 +01:00
"updated" : {
"type" : "integer"
} ,
2018-11-12 16:46:35 +01:00
"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" : {
2018-11-21 16:03:47 +01:00
"created" : {
"type" : "integer"
} ,
2018-11-12 16:46:35 +01:00
"email" : {
"type" : "string"
} ,
"id" : {
"type" : "integer"
} ,
2018-11-21 16:03:47 +01:00
"updated" : {
"type" : "integer"
} ,
2018-11-12 16:46:35 +01:00
"username" : {
"type" : "string"
}
}
} ,
"models.UserLogin" : {
"type" : "object" ,
"properties" : {
"password" : {
"type" : "string"
} ,
"username" : {
"type" : "string"
}
}
} ,
"models.UserWithRight" : {
"type" : "object" ,
"properties" : {
2018-11-21 16:03:47 +01:00
"created" : {
"type" : "integer"
} ,
2018-11-12 16:46:35 +01:00
"email" : {
"type" : "string"
} ,
"id" : {
"type" : "integer"
} ,
"right" : {
"type" : "integer"
} ,
2018-11-21 16:03:47 +01:00
"updated" : {
"type" : "integer"
} ,
2018-11-12 16:46:35 +01:00
"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"
}
}
}