vikunja-api-0.24.6.0: openapi.yaml
openapi: 3.0.1
info:
contact:
email: hello@vikunja.io
name: General Vikunja contact
url: https://vikunja.io/contact/
description: |-
# Pagination
Every endpoint capable of pagination will return two headers:
* `x-pagination-total-pages`: The total number of available pages for this request
* `x-pagination-result-count`: The number of items returned for this request.
# Rights
All endpoints which return a single item (project, task, etc.) - no array - will also return a `x-max-right` header with the max right the user has on this item as an int where `0` is `Read Only`, `1` is `Read & Write` and `2` is `Admin`.
This can be used to show or hide ui elements based on the rights the user has.
# Errors
All errors have an error code and a human-readable error message in addition to the http status code. You should always check for the status code in the response, not only the http status code.
Due to limitations in the swagger library we're using for this document, only one error per http status code is documented here. Make sure to check the [error docs](https://vikunja.io/docs/errors/) in Vikunja's documentation for a full list of available error codes.
# Authorization
**JWT-Auth:** Main authorization method, used for most of the requests. Needs `Authorization: Bearer <jwt-token>`-header to authenticate successfully.
**API Token:** You can create scoped API tokens for your user and use the token to make authenticated requests in the context of that user. The token must be provided via an `Authorization: Bearer <token>` header, similar to jwt auth. See the documentation for the `api` group to manage token creation and revocation.
**BasicAuth:** Only used when requesting tasks via CalDAV.
<!-- ReDoc-Inject: <security-definitions> -->
license:
name: AGPL-3.0-or-later
url: https://code.vikunja.io/api/src/branch/main/LICENSE
title: Vikunja API
version: 0.24.6
servers:
- url: /api/v1
paths:
/auth/openid/{provider}/callback:
post:
description: "After a redirect from the OpenID Connect provider to the frontend\
\ has been made with the authentication `code`, this endpoint can be used\
\ to obtain a jwt token for that user and thus log them in."
operationId: get-token-openid
parameters:
- description: The OpenID Connect provider key as returned by the /info endpoint
in: path
name: provider
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/openid.Callback'
description: The openid callback
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/auth.Token'
description: OK
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Authenticate a user with OpenID Connect
tags:
- auth
x-codegen-request-body-name: callback
/backgrounds/unsplash/image/{image}:
get:
description: Get an unsplash image. **Returns json on error.**
parameters:
- description: Unsplash Image ID
in: path
name: image
required: true
schema:
type: integer
responses:
"200":
content:
application/octet-stream:
schema:
format: binary
type: string
description: The image
"404":
content:
application/octet-stream:
schema:
$ref: '#/components/schemas/models.Message'
description: The image does not exist.
"500":
content:
application/octet-stream:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Get an unsplash image
tags:
- project
/backgrounds/unsplash/image/{image}/thumb:
get:
description: Get an unsplash thumbnail image. The thumbnail is cropped to a
max width of 200px. **Returns json on error.**
parameters:
- description: Unsplash Image ID
in: path
name: image
required: true
schema:
type: integer
responses:
"200":
content:
application/octet-stream:
schema:
format: binary
type: string
description: The thumbnail
"404":
content:
application/octet-stream:
schema:
$ref: '#/components/schemas/models.Message'
description: The image does not exist.
"500":
content:
application/octet-stream:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Get an unsplash thumbnail image
tags:
- project
/backgrounds/unsplash/search:
get:
description: Search for a project background from unsplash
parameters:
- description: Search backgrounds from unsplash with this search term.
in: query
name: s
schema:
type: string
- description: "The page number. Used for pagination. If not provided, the first\
\ page of results is returned."
in: query
name: p
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/background.Image'
type: array
description: An array with photos
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Search for a background from unsplash
tags:
- project
/filters:
put:
description: Creates a new saved filter
responses:
"201":
content:
application/json:
schema:
$ref: '#/components/schemas/models.SavedFilter'
description: The Saved Filter
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to that saved filter.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Creates a new saved filter
tags:
- filter
/filters/{id}:
delete:
description: Removes a saved filter by its ID.
parameters:
- description: Filter ID
in: path
name: id
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.SavedFilter'
description: The Saved Filter
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to that saved filter.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The saved filter does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Removes a saved filter
tags:
- filter
get:
description: Returns a saved filter by its ID.
parameters:
- description: Filter ID
in: path
name: id
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.SavedFilter'
description: The Saved Filter
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to that saved filter.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Gets one saved filter
tags:
- filter
post:
description: Updates a saved filter by its ID.
parameters:
- description: Filter ID
in: path
name: id
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.SavedFilter'
description: The Saved Filter
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to that saved filter.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The saved filter does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Updates a saved filter
tags:
- filter
/info:
get:
description: "Returns the version, frontendurl, motd and various settings of\
\ Vikunja"
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/v1.vikunjaInfos'
description: OK
summary: Info
tags:
- service
/labels:
get:
description: Returns all labels which are either created by the user or associated
with a task the user has at least read-access to.
parameters:
- description: "The page number. Used for pagination. If not provided, the first\
\ page of results is returned."
in: query
name: page
schema:
type: integer
- description: The maximum number of items per page. Note this parameter is
limited by the configured maximum of items per page.
in: query
name: per_page
schema:
type: integer
- description: Search labels by label text.
in: query
name: s
schema:
type: string
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/models.Label'
type: array
description: The labels
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Get all labels a user has access to
tags:
- labels
put:
description: Creates a new label.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.Label'
description: The label object
required: true
responses:
"201":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Label'
description: The created label object.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid label object provided.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Create a label
tags:
- labels
x-codegen-request-body-name: label
/labels/{id}:
delete:
description: Delete an existing label. The user needs to be the creator of the
label to be able to do this.
parameters:
- description: Label ID
in: path
name: id
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Label'
description: The label was successfully deleted.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Not allowed to delete the label.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Label not found.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Delete a label
tags:
- labels
get:
description: Returns one label by its ID.
parameters:
- description: Label ID
in: path
name: id
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Label'
description: The label
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to the label
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Label not found
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Gets one label
tags:
- labels
put:
description: Update an existing label. The user needs to be the creator of the
label to be able to do this.
parameters:
- description: Label ID
in: path
name: id
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.Label'
description: The label object
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Label'
description: The created label object.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid label object provided.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Not allowed to update the label.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Label not found.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Update a label
tags:
- labels
x-codegen-request-body-name: label
/login:
post:
description: Logs a user in. Returns a JWT-Token to authenticate further requests.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/user.Login'
description: The login credentials
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/auth.Token'
description: OK
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Invalid user password model.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Invalid username or password.
"412":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Invalid totp passcode.
summary: Login
tags:
- auth
x-codegen-request-body-name: credentials
/migration/microsoft-todo/auth:
get:
description: Returns the auth url where the user needs to get its auth code.
This code can then be used to migrate everything from Microsoft Todo to Vikunja.
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/handler.AuthURL'
description: The auth url.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error
security:
- JWTKeyAuth: []
summary: Get the auth url from Microsoft Todo
tags:
- migration
/migration/microsoft-todo/migrate:
post:
description: "Migrates all tasklinsts, tasks, notes and reminders from Microsoft\
\ Todo to Vikunja."
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/microsofttodo.Migration'
description: The auth token previously obtained from the auth url. See the
docs for /migration/microsoft-todo/auth.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: A message telling you everything was migrated successfully.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error
security:
- JWTKeyAuth: []
summary: "Migrate all projects, tasks etc. from Microsoft Todo"
tags:
- migration
x-codegen-request-body-name: migrationCode
/migration/microsoft-todo/status:
get:
description: Returns if the current user already did the migation or not. This
is useful to show a confirmation message in the frontend if the user is trying
to do the same migration again.
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/migration.Status'
description: The migration status
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error
security:
- JWTKeyAuth: []
summary: Get migration status
tags:
- migration
/migration/ticktick/migrate:
post:
description: "Imports all projects, tasks, notes, reminders, subtasks and files\
\ from a TickTick backup export into Vikunja."
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/_migration_ticktick_migrate_post_request'
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: A message telling you everything was migrated successfully.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error
security:
- JWTKeyAuth: []
summary: "Import all projects, tasks etc. from a TickTick backup export"
tags:
- migration
/migration/ticktick/status:
get:
description: Returns if the current user already did the migation or not. This
is useful to show a confirmation message in the frontend if the user is trying
to do the same migration again.
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/migration.Status'
description: The migration status
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error
security:
- JWTKeyAuth: []
summary: Get migration status
tags:
- migration
/migration/todoist/auth:
get:
description: Returns the auth url where the user needs to get its auth code.
This code can then be used to migrate everything from todoist to Vikunja.
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/handler.AuthURL'
description: The auth url.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error
security:
- JWTKeyAuth: []
summary: Get the auth url from todoist
tags:
- migration
/migration/todoist/migrate:
post:
description: "Migrates all projects, tasks, notes, reminders, subtasks and files\
\ from todoist to vikunja."
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/todoist.Migration'
description: The auth code previously obtained from the auth url. See the
docs for /migration/todoist/auth.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: A message telling you everything was migrated successfully.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error
security:
- JWTKeyAuth: []
summary: "Migrate all lists, tasks etc. from todoist"
tags:
- migration
x-codegen-request-body-name: migrationCode
/migration/todoist/status:
get:
description: Returns if the current user already did the migation or not. This
is useful to show a confirmation message in the frontend if the user is trying
to do the same migration again.
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/migration.Status'
description: The migration status
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error
security:
- JWTKeyAuth: []
summary: Get migration status
tags:
- migration
/migration/trello/auth:
get:
description: Returns the auth url where the user needs to get its auth code.
This code can then be used to migrate everything from trello to Vikunja.
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/handler.AuthURL'
description: The auth url.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error
security:
- JWTKeyAuth: []
summary: Get the auth url from trello
tags:
- migration
/migration/trello/migrate:
post:
description: "Migrates all projects, tasks, notes, reminders, subtasks and files\
\ from trello to vikunja."
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/trello.Migration'
description: The auth token previously obtained from the auth url. See the
docs for /migration/trello/auth.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: A message telling you everything was migrated successfully.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error
security:
- JWTKeyAuth: []
summary: "Migrate all projects, tasks etc. from trello"
tags:
- migration
x-codegen-request-body-name: migrationCode
/migration/trello/status:
get:
description: Returns if the current user already did the migation or not. This
is useful to show a confirmation message in the frontend if the user is trying
to do the same migration again.
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/migration.Status'
description: The migration status
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error
security:
- JWTKeyAuth: []
summary: Get migration status
tags:
- migration
/migration/vikunja-file/migrate:
post:
description: "Imports all projects, tasks, notes, reminders, subtasks and files\
\ from a Vikunjda data export into Vikunja."
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/_migration_vikunja_file_migrate_post_request'
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: A message telling you everything was migrated successfully.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error
security:
- JWTKeyAuth: []
summary: "Import all projects, tasks etc. from a Vikunja data export"
tags:
- migration
/migration/vikunja-file/status:
get:
description: Returns if the current user already did the migation or not. This
is useful to show a confirmation message in the frontend if the user is trying
to do the same migration again.
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/migration.Status'
description: The migration status
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error
security:
- JWTKeyAuth: []
summary: Get migration status
tags:
- migration
/notifications:
get:
description: Returns an array with all notifications for the current user.
parameters:
- description: "The page number. Used for pagination. If not provided, the first\
\ page of results is returned."
in: query
name: page
schema:
type: integer
- description: The maximum number of items per page. Note this parameter is
limited by the configured maximum of items per page.
in: query
name: per_page
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/notifications.DatabaseNotification'
type: array
description: The notifications
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Link shares cannot have notifications.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Get all notifications for the current user
tags:
- subscriptions
post:
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: All notifications marked as read.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
summary: Mark all notifications of a user as read
tags:
- sharing
/notifications/{id}:
post:
description: Marks a notification as either read or unread. A user can only
mark their own notifications as read.
parameters:
- description: Notification ID
in: path
name: id
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.DatabaseNotifications'
description: The notification to mark as read.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Link shares cannot have notifications.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The notification does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Mark a notification as (un-)read
tags:
- subscriptions
/projects:
get:
description: Returns all projects a user has access to.
parameters:
- description: "The page number. Used for pagination. If not provided, the first\
\ page of results is returned."
in: query
name: page
schema:
type: integer
- description: The maximum number of items per page. Note this parameter is
limited by the configured maximum of items per page.
in: query
name: per_page
schema:
type: integer
- description: Search projects by title.
in: query
name: s
schema:
type: string
- description: "If true, also returns all archived projects."
in: query
name: is_archived
schema:
type: boolean
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/models.Project'
type: array
description: The projects
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to the project
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Get all projects a user has access to
tags:
- project
put:
description: Creates a new project. If a parent project is provided the user
needs to have write access to that project.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.Project'
description: The project you want to create.
required: true
responses:
"201":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Project'
description: The created project.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid project object provided.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to the project
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Creates a new project
tags:
- project
x-codegen-request-body-name: project
/projects/{id}:
delete:
description: Delets a project
parameters:
- description: Project ID
in: path
name: id
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: The project was successfully deleted.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid project object provided.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to the project
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Deletes a project
tags:
- project
get:
description: Returns a project by its ID.
parameters:
- description: Project ID
in: path
name: id
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Project'
description: The project
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to the project
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Gets one project
tags:
- project
post:
description: Updates a project. This does not include adding a task (see below).
parameters:
- description: Project ID
in: path
name: id
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.Project'
description: The project with updated values you want to update.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Project'
description: The updated project.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid project object provided.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to the project
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Updates a project
tags:
- project
x-codegen-request-body-name: project
/projects/{id}/background:
delete:
description: "Removes a previously set project background, regardless of the\
\ project provider used to set the background. It does not throw an error\
\ if the project does not have a background."
parameters:
- description: Project ID
in: path
name: id
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Project'
description: The project
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: No access to this project.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: The project does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Remove a project background
tags:
- project
get:
description: Get the project background of a specific project. **Returns json
on error.**
parameters:
- description: Project ID
in: path
name: id
required: true
schema:
type: integer
responses:
"200":
content:
application/octet-stream:
schema:
format: binary
type: string
description: The project background file.
"403":
content:
application/octet-stream:
schema:
$ref: '#/components/schemas/models.Message'
description: No access to this project.
"404":
content:
application/octet-stream:
schema:
$ref: '#/components/schemas/models.Message'
description: The project does not exist.
"500":
content:
application/octet-stream:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Get the project background
tags:
- project
/projects/{id}/backgrounds/unsplash:
post:
description: Sets a photo from unsplash as project background.
parameters:
- description: Project ID
in: path
name: id
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/background.Image'
description: The image you want to set as background
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Project'
description: The background has been successfully set.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid image object provided.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to the project
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Set an unsplash photo as project background
tags:
- project
x-codegen-request-body-name: project
/projects/{id}/backgrounds/upload:
put:
description: Upload a project background.
parameters:
- description: Project ID
in: path
name: id
required: true
schema:
type: integer
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/_projects__id__backgrounds_upload_put_request'
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: The background was set successfully.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: File is no image.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: File too large.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: The project does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Upload a project background
tags:
- project
/projects/{id}/projectusers:
get:
description: Lists all users (without emailadresses). Also possible to search
for a specific user.
parameters:
- description: Search for a user by its name.
in: query
name: s
schema:
type: string
- description: Project ID
in: path
name: id
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/user.User'
type: array
description: All (found) users.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Something's invalid.
"401":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have the right to see the project.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error.
security:
- JWTKeyAuth: []
summary: Get users
tags:
- project
/projects/{id}/tasks:
put:
description: Inserts a task into a project.
parameters:
- description: Project ID
in: path
name: id
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.Task'
description: The task object
required: true
responses:
"201":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Task'
description: The created task object.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid task object provided.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to the project
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Create a task
tags:
- task
x-codegen-request-body-name: task
/projects/{id}/teams:
get:
description: Returns a project with all teams which have access on a given project.
parameters:
- description: Project ID
in: path
name: id
required: true
schema:
type: integer
- description: "The page number. Used for pagination. If not provided, the first\
\ page of results is returned."
in: query
name: page
schema:
type: integer
- description: The maximum number of items per page. Note this parameter is
limited by the configured maximum of items per page.
in: query
name: per_page
schema:
type: integer
- description: Search teams by its name.
in: query
name: s
schema:
type: string
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/models.TeamWithRight'
type: array
description: The teams with their right.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: No right to see the project.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Get teams on a project
tags:
- sharing
put:
description: Gives a team access to a project.
parameters:
- description: Project ID
in: path
name: id
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.TeamProject'
description: The team you want to add to the project.
required: true
responses:
"201":
content:
application/json:
schema:
$ref: '#/components/schemas/models.TeamProject'
description: The created team<->project relation.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid team project object provided.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to the project
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The team does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Add a team to a project
tags:
- sharing
x-codegen-request-body-name: project
/projects/{id}/users:
get:
description: Returns a project with all users which have access on a given project.
parameters:
- description: Project ID
in: path
name: id
required: true
schema:
type: integer
- description: "The page number. Used for pagination. If not provided, the first\
\ page of results is returned."
in: query
name: page
schema:
type: integer
- description: The maximum number of items per page. Note this parameter is
limited by the configured maximum of items per page.
in: query
name: per_page
schema:
type: integer
- description: Search users by its name.
in: query
name: s
schema:
type: string
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/models.UserWithRight'
type: array
description: The users with the right they have.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: No right to see the project.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Get users on a project
tags:
- sharing
put:
description: Gives a user access to a project.
parameters:
- description: Project ID
in: path
name: id
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.ProjectUser'
description: The user you want to add to the project.
required: true
responses:
"201":
content:
application/json:
schema:
$ref: '#/components/schemas/models.ProjectUser'
description: The created user<->project relation.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid user project object provided.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to the project
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Add a user to a project
tags:
- sharing
x-codegen-request-body-name: project
/projects/{id}/views/{view}/buckets:
get:
description: "Returns all kanban buckets which belong to that project. Buckets\
\ are always sorted by their `position` in ascending order. To get all buckets\
\ with their tasks, use the tasks endpoint with a kanban view."
parameters:
- description: Project ID
in: path
name: id
required: true
schema:
type: integer
- description: Project view ID
in: path
name: view
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/models.Bucket'
type: array
description: The buckets
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error
security:
- JWTKeyAuth: []
summary: Get all kanban buckets of a project
tags:
- project
put:
description: Creates a new kanban bucket on a project.
parameters:
- description: Project Id
in: path
name: id
required: true
schema:
type: integer
- description: Project view ID
in: path
name: view
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.Bucket'
description: The bucket object
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Bucket'
description: The created bucket object.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid bucket object provided.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The project does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Create a new bucket
tags:
- project
x-codegen-request-body-name: bucket
/projects/{id}/views/{view}/tasks:
get:
description: Returns all tasks for the current project.
parameters:
- description: The project ID.
in: path
name: id
required: true
schema:
type: integer
- description: The project view ID.
in: path
name: view
required: true
schema:
type: integer
- description: "The page number. Used for pagination. If not provided, the first\
\ page of results is returned."
in: query
name: page
schema:
type: integer
- description: The maximum number of items per page. Note this parameter is
limited by the configured maximum of items per page.
in: query
name: per_page
schema:
type: integer
- description: Search tasks by task text.
in: query
name: s
schema:
type: string
- description: "The sorting parameter. You can pass this multiple times to get\
\ the tasks ordered by multiple different parametes, along with `order_by`.\
\ Possible values to sort by are `id`, `title`, `description`, `done`, `done_at`,\
\ `due_date`, `created_by_id`, `project_id`, `repeat_after`, `priority`,\
\ `start_date`, `end_date`, `hex_color`, `percent_done`, `uid`, `created`,\
\ `updated`. Default is `id`."
in: query
name: sort_by
schema:
type: string
- description: The ordering parameter. Possible values to order by are `asc`
or `desc`. Default is `asc`.
in: query
name: order_by
schema:
type: string
- description: The filter query to match tasks by. Check out https://vikunja.io/docs/filters
for a full explanation of the feature.
in: query
name: filter
schema:
type: string
- description: 'The time zone which should be used for date match (statements
like '
in: query
name: filter_timezone
schema:
type: string
- description: If set to true the result will include filtered fields whose
value is set to `null`. Available values are `true` or `false`. Defaults
to `false`.
in: query
name: filter_include_nulls
schema:
type: string
- description: "If set to `subtasks`, Vikunja will fetch only tasks which do\
\ not have subtasks and then in a second step, will fetch all of these subtasks.\
\ This may result in more tasks than the pagination limit being returned,\
\ but all subtasks will be present in the response. You can only set this\
\ to `subtasks`."
in: query
name: expand
schema:
type: string
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/models.Task'
type: array
description: The tasks
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Get tasks in a project
tags:
- task
/projects/{id}/webhooks:
get:
description: Get all api webhook targets for the specified project.
parameters:
- description: "The page number. Used for pagination. If not provided, the first\
\ page of results is returned."
in: query
name: page
schema:
type: integer
- description: The maximum number of items per bucket per page. This parameter
is limited by the configured maximum of items per page.
in: query
name: per_page
schema:
type: integer
- description: Project ID
in: path
name: id
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/models.Webhook'
type: array
description: The list of all webhook targets
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error
security:
- JWTKeyAuth: []
summary: Get all api webhook targets for the specified project
tags:
- webhooks
put:
description: Create a webhook target which receives POST requests about specified
events from a project.
parameters:
- description: Project ID
in: path
name: id
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.Webhook'
description: The webhook target object with required fields
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Webhook'
description: The created webhook target.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid webhook object provided.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Create a webhook target
tags:
- webhooks
x-codegen-request-body-name: webhook
/projects/{id}/webhooks/{webhookID}:
delete:
description: Delete any of the project's webhook targets.
parameters:
- description: Project ID
in: path
name: id
required: true
schema:
type: integer
- description: Webhook ID
in: path
name: webhookID
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Successfully deleted.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The webhok target does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Deletes an existing webhook target
tags:
- webhooks
post:
description: Change a webhook target's events. You cannot change other values
of a webhook.
parameters:
- description: Project ID
in: path
name: id
required: true
schema:
type: integer
- description: Webhook ID
in: path
name: webhookID
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Webhook'
description: Updated webhook target
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The webhok target does not exist
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Change a webhook target's events.
tags:
- webhooks
/projects/{projectID}/duplicate:
put:
description: "Copies the project, tasks, files, kanban data, assignees, comments,\
\ attachments, lables, relations, backgrounds, user/team rights and link shares\
\ from one project to a new one. The user needs read access in the project\
\ and write access in the parent of the new project."
parameters:
- description: The project ID to duplicate
in: path
name: projectID
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.ProjectDuplicate'
description: The target parent project which should hold the copied project.
required: true
responses:
"201":
content:
application/json:
schema:
$ref: '#/components/schemas/models.ProjectDuplicate'
description: The created project.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid project duplicate object provided.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to the project or its parent.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Duplicate an existing project
tags:
- project
x-codegen-request-body-name: project
/projects/{projectID}/teams/{teamID}:
delete:
description: Delets a team from a project. The team won't have access to the
project anymore.
parameters:
- description: Project ID
in: path
name: projectID
required: true
schema:
type: integer
- description: Team ID
in: path
name: teamID
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: The team was successfully deleted.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to the project
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Team or project does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Delete a team from a project
tags:
- sharing
post:
description: Update a team <-> project relation. Mostly used to update the right
that team has.
parameters:
- description: Project ID
in: path
name: projectID
required: true
schema:
type: integer
- description: Team ID
in: path
name: teamID
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.TeamProject'
description: The team you want to update.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.TeamProject'
description: The updated team <-> project relation.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have admin-access to the project
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Team or project does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Update a team <-> project relation
tags:
- sharing
x-codegen-request-body-name: project
/projects/{projectID}/users/{userID}:
delete:
description: Delets a user from a project. The user won't have access to the
project anymore.
parameters:
- description: Project ID
in: path
name: projectID
required: true
schema:
type: integer
- description: User ID
in: path
name: userID
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: The user was successfully removed from the project.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to the project
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: user or project does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Delete a user from a project
tags:
- sharing
post:
description: Update a user <-> project relation. Mostly used to update the right
that user has.
parameters:
- description: Project ID
in: path
name: projectID
required: true
schema:
type: integer
- description: User ID
in: path
name: userID
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.ProjectUser'
description: The user you want to update.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.ProjectUser'
description: The updated user <-> project relation.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have admin-access to the project
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: User or project does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Update a user <-> project relation
tags:
- sharing
x-codegen-request-body-name: project
/projects/{projectID}/views/{view}/buckets/{bucketID}:
delete:
description: Deletes an existing kanban bucket and dissociates all of its task.
It does not delete any tasks. You cannot delete the last bucket on a project.
parameters:
- description: Project Id
in: path
name: projectID
required: true
schema:
type: integer
- description: Bucket Id
in: path
name: bucketID
required: true
schema:
type: integer
- description: Project view ID
in: path
name: view
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Successfully deleted.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The bucket does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Deletes an existing bucket
tags:
- project
post:
description: Updates an existing kanban bucket.
parameters:
- description: Project Id
in: path
name: projectID
required: true
schema:
type: integer
- description: Bucket Id
in: path
name: bucketID
required: true
schema:
type: integer
- description: Project view ID
in: path
name: view
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.Bucket'
description: The bucket object
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Bucket'
description: The created bucket object.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid bucket object provided.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The bucket does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Update an existing bucket
tags:
- project
x-codegen-request-body-name: bucket
/projects/{project}/shares:
get:
description: Returns all link shares which exist for a given project
parameters:
- description: Project ID
in: path
name: project
required: true
schema:
type: integer
- description: "The page number. Used for pagination. If not provided, the first\
\ page of results is returned."
in: query
name: page
schema:
type: integer
- description: The maximum number of items per page. Note this parameter is
limited by the configured maximum of items per page.
in: query
name: per_page
schema:
type: integer
- description: Search shares by hash.
in: query
name: s
schema:
type: string
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/models.LinkSharing'
type: array
description: The share links
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Get all link shares for a project
tags:
- sharing
put:
description: Share a project via link. The user needs to have write-access to
the project to be able do this.
parameters:
- description: Project ID
in: path
name: project
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.LinkSharing'
description: The new link share object
required: true
responses:
"201":
content:
application/json:
schema:
$ref: '#/components/schemas/models.LinkSharing'
description: The created link share object.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid link share object provided.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Not allowed to add the project share.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The project does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Share a project via link
tags:
- sharing
x-codegen-request-body-name: label
/projects/{project}/shares/{share}:
delete:
description: Remove a link share. The user needs to have write-access to the
project to be able do this.
parameters:
- description: Project ID
in: path
name: project
required: true
schema:
type: integer
- description: Share Link ID
in: path
name: share
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: The link was successfully removed.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Not allowed to remove the link.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Share Link not found.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Remove a link share
tags:
- sharing
get:
description: Returns one link share by its ID.
parameters:
- description: Project ID
in: path
name: project
required: true
schema:
type: integer
- description: Share ID
in: path
name: share
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.LinkSharing'
description: The share links
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: No access to the project
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Share Link not found.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Get one link shares for a project
tags:
- sharing
/projects/{project}/views:
get:
description: Returns all project views for a sepcific project
parameters:
- description: Project ID
in: path
name: project
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/models.ProjectView'
type: array
description: The project views
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Get all project views for a project
tags:
- project
put:
description: Create a project view in a specific project.
parameters:
- description: Project ID
in: path
name: project
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.ProjectView'
description: The project view you want to create.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.ProjectView'
description: The created project view
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to create a project view
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Create a project view
tags:
- project
x-codegen-request-body-name: view
/projects/{project}/views/{id}:
delete:
description: Deletes a project view.
parameters:
- description: Project ID
in: path
name: project
required: true
schema:
type: integer
- description: Project View ID
in: path
name: id
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: The project view was successfully deleted.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to the project view
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Delete a project view
tags:
- project
get:
description: Returns a project view by its ID.
parameters:
- description: Project ID
in: path
name: project
required: true
schema:
type: integer
- description: Project View ID
in: path
name: id
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.ProjectView'
description: The project view
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to this project view
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Get one project view
tags:
- project
post:
description: Updates a project view.
parameters:
- description: Project ID
in: path
name: project
required: true
schema:
type: integer
- description: Project View ID
in: path
name: id
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.ProjectView'
description: The project view with updated values you want to change.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.ProjectView'
description: The updated project view.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid project view object provided.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Updates a project view
tags:
- project
x-codegen-request-body-name: view
/projects/{project}/views/{view}/buckets/{bucket}/tasks:
post:
description: Updates a task in a bucket
parameters:
- description: Project ID
in: path
name: project
required: true
schema:
type: integer
- description: Project View ID
in: path
name: view
required: true
schema:
type: integer
- description: Bucket ID
in: path
name: bucket
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.TaskBucket'
description: The id of the task you want to move into the bucket.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.TaskBucket'
description: The updated task bucket.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid task bucket object provided.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Update a task bucket
tags:
- task
x-codegen-request-body-name: taskBucket
/register:
post:
description: Creates a new user account.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/user.APIUserPassword'
description: The user credentials
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/user.User'
description: OK
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: No or invalid user register object provided / User already
exists.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
summary: Register
tags:
- auth
x-codegen-request-body-name: credentials
/routes:
get:
description: "Returns a list of all API routes which are available to use with\
\ an api token, not a user login."
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/models.APITokenRoute'
type: array
description: The list of all routes.
security:
- JWTKeyAuth: []
summary: Get a list of all token api routes
tags:
- api
/shares/{share}/auth:
post:
description: Get a jwt auth token for a shared project from a share hash.
parameters:
- description: The share hash
in: path
name: share
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1.LinkShareAuth'
description: The password for link shares which require one.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/auth.Token'
description: The valid jwt auth token.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid link share object provided.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
summary: Get an auth token for a share
tags:
- sharing
x-codegen-request-body-name: password
/subscriptions/{entity}/{entityID}:
delete:
description: Unsubscribes the current user to an entity.
parameters:
- description: The entity the user subscribed to. Can be either `project` or
`task`.
in: path
name: entity
required: true
schema:
type: string
- description: The numeric id of the subscribed entity to.
in: path
name: entityID
required: true
schema:
type: string
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Subscription'
description: The subscription
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to subscribe to this entity.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The subscription does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Unsubscribe the current user from an entity.
tags:
- subscriptions
put:
description: Subscribes the current user to an entity.
parameters:
- description: The entity the user subscribes to. Can be either `project` or
`task`.
in: path
name: entity
required: true
schema:
type: string
- description: The numeric id of the entity to subscribe to.
in: path
name: entityID
required: true
schema:
type: string
responses:
"201":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Subscription'
description: The subscription
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to subscribe to this entity.
"412":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The subscription entity is invalid.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Subscribes the current user to an entity.
tags:
- subscriptions
/tasks/all:
get:
description: Returns all tasks on any project the user has access to.
parameters:
- description: "The page number. Used for pagination. If not provided, the first\
\ page of results is returned."
in: query
name: page
schema:
type: integer
- description: The maximum number of items per page. Note this parameter is
limited by the configured maximum of items per page.
in: query
name: per_page
schema:
type: integer
- description: Search tasks by task text.
in: query
name: s
schema:
type: string
- description: "The sorting parameter. You can pass this multiple times to get\
\ the tasks ordered by multiple different parametes, along with `order_by`.\
\ Possible values to sort by are `id`, `title`, `description`, `done`, `done_at`,\
\ `due_date`, `created_by_id`, `project_id`, `repeat_after`, `priority`,\
\ `start_date`, `end_date`, `hex_color`, `percent_done`, `uid`, `created`,\
\ `updated`. Default is `id`."
in: query
name: sort_by
schema:
type: string
- description: The ordering parameter. Possible values to order by are `asc`
or `desc`. Default is `asc`.
in: query
name: order_by
schema:
type: string
- description: The filter query to match tasks by. Check out https://vikunja.io/docs/filters
for a full explanation of the feature.
in: query
name: filter
schema:
type: string
- description: 'The time zone which should be used for date match (statements
like '
in: query
name: filter_timezone
schema:
type: string
- description: If set to true the result will include filtered fields whose
value is set to `null`. Available values are `true` or `false`. Defaults
to `false`.
in: query
name: filter_include_nulls
schema:
type: string
- description: "If set to `subtasks`, Vikunja will fetch only tasks which do\
\ not have subtasks and then in a second step, will fetch all of these subtasks.\
\ This may result in more tasks than the pagination limit being returned,\
\ but all subtasks will be present in the response. You can only set this\
\ to `subtasks`."
in: query
name: expand
schema:
type: string
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/models.Task'
type: array
description: The tasks
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Get tasks
tags:
- task
/tasks/bulk:
post:
description: "Updates a bunch of tasks at once. This includes marking them as\
\ done. Note: although you could supply another ID, it will be ignored. Use\
\ task_ids instead."
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.BulkTask'
description: "The task object. Looks like a normal task, the only difference\
\ is it uses an array of project_ids to update."
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Task'
description: The updated task object.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid task object provided.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to the task (aka its project)
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Update a bunch of tasks at once
tags:
- task
x-codegen-request-body-name: task
/tasks/{id}:
delete:
description: Deletes a task from a project. This does not mean "mark it done".
parameters:
- description: Task ID
in: path
name: id
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: The created task object.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid task ID provided.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to the project
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Delete a task
tags:
- task
get:
description: Returns one task by its ID
parameters:
- description: The task ID
in: path
name: id
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Task'
description: The task
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Task not found
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Get one task
tags:
- task
post:
description: "Updates a task. This includes marking it as done. Assignees you\
\ pass will be updated, see their individual endpoints for more details on\
\ how this is done. To update labels, see the description of the endpoint."
parameters:
- description: The Task ID
in: path
name: id
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.Task'
description: The task object
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Task'
description: The updated task object.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid task object provided.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to the task (aka its project)
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Update a task
tags:
- task
x-codegen-request-body-name: task
/tasks/{id}/attachments:
get:
description: Get all task attachments for one task.
parameters:
- description: Task ID
in: path
name: id
required: true
schema:
type: integer
- description: "The page number. Used for pagination. If not provided, the first\
\ page of results is returned."
in: query
name: page
schema:
type: integer
- description: The maximum number of items per page. Note this parameter is
limited by the configured maximum of items per page.
in: query
name: per_page
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/models.TaskAttachment'
type: array
description: All attachments for this task
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: No access to this task.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: The task does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Get all attachments for one task.
tags:
- task
put:
description: Upload a task attachment. You can pass multiple files with the
files form param.
parameters:
- description: Task ID
in: path
name: id
required: true
schema:
type: integer
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/_tasks__id__attachments_put_request'
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Attachments were uploaded successfully.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: No access to the task.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: The task does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Upload a task attachment
tags:
- task
/tasks/{id}/attachments/{attachmentID}:
delete:
description: Delete an attachment.
parameters:
- description: Task ID
in: path
name: id
required: true
schema:
type: integer
- description: Attachment ID
in: path
name: attachmentID
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: The attachment was deleted successfully.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: No access to this task.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: The task does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Delete an attachment
tags:
- task
get:
description: Get one attachment for download. **Returns json on error.**
parameters:
- description: Task ID
in: path
name: id
required: true
schema:
type: integer
- description: Attachment ID
in: path
name: attachmentID
required: true
schema:
type: integer
- description: "The size of the preview image. Can be sm = 100px, md = 200px,\
\ lg = 400px or xl = 800px. If provided, a preview image will be returned\
\ if the attachment is an image."
in: query
name: preview_size
schema:
type: string
responses:
"200":
content:
application/octet-stream:
schema:
format: binary
type: string
description: The attachment file.
"403":
content:
application/octet-stream:
schema:
$ref: '#/components/schemas/models.Message'
description: No access to this task.
"404":
content:
application/octet-stream:
schema:
$ref: '#/components/schemas/models.Message'
description: The task does not exist.
"500":
content:
application/octet-stream:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Get one attachment.
tags:
- task
/tasks/{id}/position:
post:
description: Updates a task position.
parameters:
- description: Task ID
in: path
name: id
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.TaskPosition'
description: The task position with updated values you want to change.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.TaskPosition'
description: The updated task position.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid task position object provided.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Updates a task position
tags:
- task
x-codegen-request-body-name: view
/tasks/{taskID}/assignees:
get:
description: Returns an array with all assignees for this task.
parameters:
- description: "The page number. Used for pagination. If not provided, the first\
\ page of results is returned."
in: query
name: page
schema:
type: integer
- description: The maximum number of items per page. Note this parameter is
limited by the configured maximum of items per page.
in: query
name: per_page
schema:
type: integer
- description: Search assignees by their username.
in: query
name: s
schema:
type: string
- description: Task ID
in: path
name: taskID
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/user.User'
type: array
description: The assignees
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Get all assignees for a task
tags:
- assignees
put:
description: "Adds a new assignee to a task. The assignee needs to have access\
\ to the project, the doer must be able to edit this task."
parameters:
- description: Task ID
in: path
name: taskID
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.TaskAssginee'
description: The assingee object
required: true
responses:
"201":
content:
application/json:
schema:
$ref: '#/components/schemas/models.TaskAssginee'
description: The created assingee object.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid assignee object provided.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Add a new assignee to a task
tags:
- assignees
x-codegen-request-body-name: assignee
/tasks/{taskID}/assignees/bulk:
post:
description: "Adds multiple new assignees to a task. The assignee needs to have\
\ access to the project, the doer must be able to edit this task. Every user\
\ not in the project will be unassigned from the task, pass an empty array\
\ to unassign everyone."
parameters:
- description: Task ID
in: path
name: taskID
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.BulkAssignees'
description: The array of assignees
required: true
responses:
"201":
content:
application/json:
schema:
$ref: '#/components/schemas/models.TaskAssginee'
description: The created assingees object.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid assignee object provided.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Add multiple new assignees to a task
tags:
- assignees
x-codegen-request-body-name: assignee
/tasks/{taskID}/assignees/{userID}:
delete:
description: Un-assign a user from a task.
parameters:
- description: Task ID
in: path
name: taskID
required: true
schema:
type: integer
- description: Assignee user ID
in: path
name: userID
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: The assignee was successfully deleted.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Not allowed to delete the assignee.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Delete an assignee
tags:
- assignees
/tasks/{taskID}/comments:
get:
description: Get all task comments. The user doing this need to have at least
read access to the task.
parameters:
- description: Task ID
in: path
name: taskID
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/models.TaskComment'
type: array
description: The array with all task comments
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Get all task comments
tags:
- task
put:
description: Create a new task comment. The user doing this need to have at
least write access to the task this comment should belong to.
parameters:
- description: Task ID
in: path
name: taskID
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.TaskComment'
description: The task comment object
required: true
responses:
"201":
content:
application/json:
schema:
$ref: '#/components/schemas/models.TaskComment'
description: The created task comment object.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid task comment object provided.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Create a new task comment
tags:
- task
x-codegen-request-body-name: relation
/tasks/{taskID}/comments/{commentID}:
delete:
description: Remove a task comment. The user doing this need to have at least
write access to the task this comment belongs to.
parameters:
- description: Task ID
in: path
name: taskID
required: true
schema:
type: integer
- description: Comment ID
in: path
name: commentID
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: The task comment was successfully deleted.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid task comment object provided.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The task comment was not found.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Remove a task comment
tags:
- task
get:
description: Remove a task comment. The user doing this need to have at least
read access to the task this comment belongs to.
parameters:
- description: Task ID
in: path
name: taskID
required: true
schema:
type: integer
- description: Comment ID
in: path
name: commentID
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.TaskComment'
description: The task comment object.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid task comment object provided.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The task comment was not found.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Remove a task comment
tags:
- task
post:
description: Update an existing task comment. The user doing this need to have
at least write access to the task this comment belongs to.
parameters:
- description: Task ID
in: path
name: taskID
required: true
schema:
type: integer
- description: Comment ID
in: path
name: commentID
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.TaskComment'
description: The updated task comment object.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid task comment object provided.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The task comment was not found.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Update an existing task comment
tags:
- task
/tasks/{taskID}/labels/bulk:
post:
description: Updates all labels on a task. Every label which is not passed but
exists on the task will be deleted. Every label which does not exist on the
task will be added. All labels which are passed and already exist on the task
won't be touched.
parameters:
- description: Task ID
in: path
name: taskID
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.LabelTaskBulk'
description: The array of labels
required: true
responses:
"201":
content:
application/json:
schema:
$ref: '#/components/schemas/models.LabelTaskBulk'
description: The updated labels object.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid label object provided.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Update all labels on a task.
tags:
- labels
x-codegen-request-body-name: label
/tasks/{taskID}/relations:
put:
description: Creates a new relation between two tasks. The user needs to have
update rights on the base task and at least read rights on the other task.
Both tasks do not need to be on the same project. Take a look at the docs
for available task relation kinds.
parameters:
- description: Task ID
in: path
name: taskID
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.TaskRelation'
description: The relation object
required: true
responses:
"201":
content:
application/json:
schema:
$ref: '#/components/schemas/models.TaskRelation'
description: The created task relation object.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid task relation object provided.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Create a new relation between two tasks
tags:
- task
x-codegen-request-body-name: relation
/tasks/{taskID}/relations/{relationKind}/{otherTaskID}:
delete:
parameters:
- description: Task ID
in: path
name: taskID
required: true
schema:
type: integer
- description: The kind of the relation. See the TaskRelation type for more
info.
in: path
name: relationKind
required: true
schema:
type: string
- description: The id of the other task.
in: path
name: otherTaskID
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.TaskRelation'
description: The relation object
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: The task relation was successfully deleted.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid task relation object provided.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The task relation was not found.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Remove a task relation
tags:
- task
x-codegen-request-body-name: relation
/tasks/{task}/labels:
get:
description: Returns all labels which are assicociated with a given task.
parameters:
- description: Task ID
in: path
name: task
required: true
schema:
type: integer
- description: "The page number. Used for pagination. If not provided, the first\
\ page of results is returned."
in: query
name: page
schema:
type: integer
- description: The maximum number of items per page. Note this parameter is
limited by the configured maximum of items per page.
in: query
name: per_page
schema:
type: integer
- description: Search labels by label text.
in: query
name: s
schema:
type: string
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/models.Label'
type: array
description: The labels
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Get all labels on a task
tags:
- labels
put:
description: Add a label to a task. The user needs to have write-access to the
project to be able do this.
parameters:
- description: Task ID
in: path
name: task
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.LabelTask'
description: The label object
required: true
responses:
"201":
content:
application/json:
schema:
$ref: '#/components/schemas/models.LabelTask'
description: The created label relation object.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid label object provided.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Not allowed to add the label.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The label does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Add a label to a task
tags:
- labels
x-codegen-request-body-name: label
/tasks/{task}/labels/{label}:
delete:
description: Remove a label from a task. The user needs to have write-access
to the project to be able do this.
parameters:
- description: Task ID
in: path
name: task
required: true
schema:
type: integer
- description: Label ID
in: path
name: label
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: The label was successfully removed.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Not allowed to remove the label.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Label not found.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Remove a label from a task
tags:
- labels
/teams:
get:
description: Returns all teams the current user is part of.
parameters:
- description: "The page number. Used for pagination. If not provided, the first\
\ page of results is returned."
in: query
name: page
schema:
type: integer
- description: The maximum number of items per page. Note this parameter is
limited by the configured maximum of items per page.
in: query
name: per_page
schema:
type: integer
- description: Search teams by its name.
in: query
name: s
schema:
type: string
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/models.Team'
type: array
description: The teams.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Get teams
tags:
- team
put:
description: Creates a new team.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.Team'
description: The team you want to create.
required: true
responses:
"201":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Team'
description: The created team.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid team object provided.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Creates a new team
tags:
- team
x-codegen-request-body-name: team
/teams/{id}:
delete:
description: Delets a team. This will also remove the access for all users in
that team.
parameters:
- description: Team ID
in: path
name: id
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: The team was successfully deleted.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid team object provided.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Deletes a team
tags:
- team
get:
description: Returns a team by its ID.
parameters:
- description: Team ID
in: path
name: id
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Team'
description: The team
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to the team
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Gets one team
tags:
- team
post:
description: Updates a team.
parameters:
- description: Team ID
in: path
name: id
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.Team'
description: The team with updated values you want to update.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Team'
description: The updated team.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid team object provided.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Updates a team
tags:
- team
x-codegen-request-body-name: team
/teams/{id}/members:
put:
description: Add a user to a team.
parameters:
- description: Team ID
in: path
name: id
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.TeamMember'
description: The user to be added to a team.
required: true
responses:
"201":
content:
application/json:
schema:
$ref: '#/components/schemas/models.TeamMember'
description: The newly created member object
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid member object provided.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to the team
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Add a user to a team
tags:
- team
x-codegen-request-body-name: team
/teams/{id}/members/{userID}:
delete:
description: Remove a user from a team. This will also revoke any access this
user might have via that team. A user can remove themselves from the team
if they are not the last user in the team.
parameters:
- description: Team ID
in: path
name: id
required: true
schema:
type: integer
- description: User ID
in: path
name: userID
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: The user was successfully removed from the team.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Remove a user from a team
tags:
- team
/teams/{id}/members/{userID}/admin:
post:
description: "If a user is team admin, this will make them member and vise-versa."
parameters:
- description: Team ID
in: path
name: id
required: true
schema:
type: integer
- description: User ID
in: path
name: userID
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: The member right was successfully changed.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Toggle a team member's admin status
tags:
- team
/test/{table}:
patch:
description: "Fills the specified table with the content provided in the payload.\
\ You need to enable the testing endpoint before doing this and provide the\
\ `Authorization: <token>` secret when making requests to this endpoint. See\
\ docs for more details."
parameters:
- description: The table to reset
in: path
name: table
required: true
schema:
type: string
responses:
"201":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/user.User'
type: array
description: Everything has been imported successfully.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error.
summary: Reset the db to a defined state
tags:
- testing
/tokens:
get:
description: Returns all api tokens the current user has created.
parameters:
- description: "The page number, used for pagination. If not provided, the first\
\ page of results is returned."
in: query
name: page
schema:
type: integer
- description: The maximum number of tokens per page. This parameter is limited
by the configured maximum of items per page.
in: query
name: per_page
schema:
type: integer
- description: Search tokens by their title.
in: query
name: s
schema:
type: string
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/models.APIToken'
type: array
description: The list of all tokens
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error
security:
- JWTKeyAuth: []
summary: Get all api tokens of the current user
tags:
- api
put:
description: Create a new api token to use on behalf of the user creating it.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.APIToken'
description: The token object with required fields
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.APIToken'
description: The created token.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Invalid token object provided.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Create a new api token
tags:
- api
x-codegen-request-body-name: token
/tokens/{tokenID}:
delete:
description: Delete any of the user's api tokens.
parameters:
- description: Token ID
in: path
name: tokenID
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Successfully deleted.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The token does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Deletes an existing api token
tags:
- api
/user:
get:
description: Returns the current user object with their settings.
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/v1.UserWithSettings'
description: OK
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: User does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error.
security:
- JWTKeyAuth: []
summary: Get user information
tags:
- user
/user/confirm:
post:
description: Confirms the email of a newly registered user.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/user.EmailConfirm'
description: The token.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: OK
"412":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Bad token provided.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
summary: Confirm the email of a new user
tags:
- user
x-codegen-request-body-name: credentials
/user/deletion/cancel:
post:
description: Aborts an in-progress user deletion.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1.UserPasswordConfirmation'
description: The user password to confirm.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: OK
"412":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Bad password provided.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
summary: Abort a user deletion request
tags:
- user
x-codegen-request-body-name: credentials
/user/deletion/confirm:
post:
description: Confirms the deletion request of a user sent via email.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1.UserDeletionRequestConfirm'
description: The token.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: OK
"412":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Bad token provided.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
summary: Confirm a user deletion request
tags:
- user
x-codegen-request-body-name: credentials
/user/deletion/request:
post:
description: Requests the deletion of the current user. It will trigger an email
which has to be confirmed to start the deletion.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1.UserPasswordConfirmation'
description: The user password.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: OK
"412":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Bad password provided.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
summary: Request the deletion of the user
tags:
- user
x-codegen-request-body-name: credentials
/user/export/download:
post:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1.UserPasswordConfirmation'
description: User password to confirm the download.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: OK
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Something's invalid.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error.
security:
- JWTKeyAuth: []
summary: Download a user data export.
tags:
- user
x-codegen-request-body-name: password
/user/export/request:
post:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1.UserPasswordConfirmation'
description: User password to confirm the data export request.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: OK
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Something's invalid.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error.
security:
- JWTKeyAuth: []
summary: Request a user data export.
tags:
- user
x-codegen-request-body-name: password
/user/password:
post:
description: Lets the current user change its password.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1.UserPassword'
description: The current and new password.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: OK
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Something's invalid.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: User does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error.
security:
- JWTKeyAuth: []
summary: Change password
tags:
- user
x-codegen-request-body-name: userPassword
/user/password/reset:
post:
description: Resets a user email with a previously reset token.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/user.PasswordReset'
description: The token with the new password.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: OK
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Bad token provided.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
summary: Resets a password
tags:
- user
x-codegen-request-body-name: credentials
/user/password/token:
post:
description: Requests a token to reset a users password. The token is sent via
email.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/user.PasswordTokenRequest'
description: The username of the user to request a token for.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: OK
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
summary: Request password reset token
tags:
- user
x-codegen-request-body-name: credentials
/user/settings/avatar:
get:
description: Returns the current user's avatar setting.
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/v1.UserAvatarProvider'
description: OK
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Something's invalid.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error.
security:
- JWTKeyAuth: []
summary: Return user avatar setting
tags:
- user
post:
description: "Changes the user avatar. Valid types are gravatar (uses the user\
\ email), upload, initials, default."
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1.UserAvatarProvider'
description: The user's avatar setting
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: OK
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Something's invalid.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error.
security:
- JWTKeyAuth: []
summary: Set the user's avatar
tags:
- user
x-codegen-request-body-name: avatar
/user/settings/avatar/upload:
put:
description: Upload a user avatar. This will also set the user's avatar provider
to "upload"
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/_user_settings_avatar_upload_put_request'
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: The avatar was set successfully.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: File is no image.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: File too large.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Upload a user avatar
tags:
- user
/user/settings/email:
post:
description: Lets the current user change their email address.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/user.EmailUpdate'
description: The new email address and current password.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: OK
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Something's invalid.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: User does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error.
security:
- JWTKeyAuth: []
summary: Update email address
tags:
- user
x-codegen-request-body-name: userEmailUpdate
/user/settings/general:
post:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1.UserSettings'
description: The updated user settings
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: OK
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Something's invalid.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error.
security:
- JWTKeyAuth: []
summary: Change general user settings of the current user.
tags:
- user
x-codegen-request-body-name: avatar
/user/settings/token/caldav:
get:
description: Return the IDs and created dates of all caldav tokens for the current
user.
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/user.Token'
type: array
description: OK
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Something's invalid.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: User does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error.
security:
- JWTKeyAuth: []
summary: Returns the caldav tokens for the current user
tags:
- user
put:
description: Generates a caldav token which can be used for the caldav api.
It is not possible to see the token again after it was generated.
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/user.Token'
description: OK
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Something's invalid.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: User does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error.
security:
- JWTKeyAuth: []
summary: Generate a caldav token
tags:
- user
/user/settings/token/caldav/{id}:
get:
parameters:
- description: Token ID
in: path
name: id
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: OK
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Something's invalid.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: User does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error.
security:
- JWTKeyAuth: []
summary: Delete a caldav token by id
tags:
- user
/user/settings/totp:
get:
description: Returns the current user totp setting or an error if it is not
enabled.
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/user.TOTP'
description: The totp settings.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error.
security:
- JWTKeyAuth: []
summary: Totp setting for the current user
tags:
- user
/user/settings/totp/disable:
post:
description: Disables any totp settings for the current user.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/user.Login'
description: The current user's password (only password is enough).
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Successfully disabled
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Something's invalid.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: User does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error.
security:
- JWTKeyAuth: []
summary: Disable totp settings
tags:
- user
x-codegen-request-body-name: totp
/user/settings/totp/enable:
post:
description: Enables a previously enrolled totp setting by providing a totp
passcode.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/user.TOTPPasscode'
description: The totp passcode.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Successfully enabled
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Something's invalid.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: User does not exist.
"412":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: TOTP is not enrolled.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error.
security:
- JWTKeyAuth: []
summary: Enable a previously enrolled totp setting.
tags:
- user
x-codegen-request-body-name: totp
/user/settings/totp/enroll:
post:
description: "Creates an initial setup for the user in the db. After this step,\
\ the user needs to verify they have a working totp setup with the \"enable\
\ totp\" endpoint."
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/user.TOTP'
description: OK
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Something's invalid.
"404":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: User does not exist.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error.
security:
- JWTKeyAuth: []
summary: Enroll a user into totp
tags:
- user
/user/settings/totp/qrcode:
get:
description: Returns a qr code for easier setup at end user's devices.
responses:
"200":
content:
application/json:
schema:
format: binary
type: string
description: The qr code as jpeg image
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error.
security:
- JWTKeyAuth: []
summary: Totp QR Code
tags:
- user
/user/timezones:
get:
description: "Because available time zones depend on the system Vikunja is running\
\ on, this endpoint returns a project of all valid time zones this particular\
\ Vikunja instance can handle. The project of time zones is not sorted, you\
\ should sort it on the client."
responses:
"200":
content:
application/json:
schema:
items:
type: string
type: array
description: All available time zones.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error.
security:
- JWTKeyAuth: []
summary: Get all available time zones on this vikunja instance
tags:
- user
/user/token:
post:
description: Returns a new valid jwt user token with an extended length.
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/auth.Token'
description: OK
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Only user token are available for renew.
summary: Renew user token
tags:
- user
/users:
get:
description: "Search for a user by its username, name or full email. Name (not\
\ username) or email require that the user has enabled this in their settings."
parameters:
- description: The search criteria.
in: query
name: s
schema:
type: string
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/user.User'
type: array
description: All (found) users.
"400":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: Something's invalid.
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error.
security:
- JWTKeyAuth: []
summary: Get users
tags:
- user
/webhooks/events:
get:
description: Get all possible webhook events to use when creating or updating
a webhook target.
responses:
"200":
content:
application/json:
schema:
items:
type: string
type: array
description: The list of all possible webhook events
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal server error
security:
- JWTKeyAuth: []
summary: Get all possible webhook events
tags:
- webhooks
/{kind}/{id}/reactions:
get:
description: Returns all reactions for an entity
parameters:
- description: Entity ID
in: path
name: id
required: true
schema:
type: integer
- description: The kind of the entity. Can be either `tasks` or `comments` for
task comments
in: path
name: kind
required: true
schema:
type: integer
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/models.ReactionMap'
type: array
description: The reactions
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to the entity
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Get all reactions for an entity
tags:
- task
put:
description: Add a reaction to an entity. Will do nothing if the reaction already
exists.
parameters:
- description: Entity ID
in: path
name: id
required: true
schema:
type: integer
- description: The kind of the entity. Can be either `tasks` or `comments` for
task comments
in: path
name: kind
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.Reaction'
description: The reaction you want to add to the entity.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Reaction'
description: The created reaction
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to the entity
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Add a reaction to an entity
tags:
- task
x-codegen-request-body-name: project
/{kind}/{id}/reactions/delete:
post:
description: Removes the reaction of that user on that entity.
parameters:
- description: Entity ID
in: path
name: id
required: true
schema:
type: integer
- description: The kind of the entity. Can be either `tasks` or `comments` for
task comments
in: path
name: kind
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/models.Reaction'
description: The reaction you want to add to the entity.
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: The reaction was successfully removed.
"403":
content:
application/json:
schema:
$ref: '#/components/schemas/web.HTTPError'
description: The user does not have access to the entity
"500":
content:
application/json:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
security:
- JWTKeyAuth: []
summary: Removes the user's reaction
tags:
- task
x-codegen-request-body-name: project
/{username}/avatar:
get:
description: Returns the user avatar as image.
parameters:
- description: The username of the user who's avatar you want to get
in: path
name: username
required: true
schema:
type: string
- description: The size of the avatar you want to get. If bigger than the max
configured size this will be adjusted to the maximum size.
in: query
name: size
schema:
type: integer
responses:
"200":
content:
application/octet-stream:
schema:
format: binary
type: string
description: The avatar
"404":
content:
application/octet-stream:
schema:
$ref: '#/components/schemas/models.Message'
description: The user does not exist.
"500":
content:
application/octet-stream:
schema:
$ref: '#/components/schemas/models.Message'
description: Internal error
summary: User Avatar
tags:
- user
components:
schemas:
auth.Token:
example:
token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
properties:
token:
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
type: string
type: object
background.Image:
example:
thumb: thumb
blur_hash: blur_hash
id: id
url: url
info: "{}"
properties:
blur_hash:
type: string
id:
type: string
info:
description: This can be used to supply extra information from an image
provider to clients
type: object
thumb:
type: string
url:
type: string
type: object
files.File:
example:
size: 6
created: created
mime: mime
name: name
id: 0
properties:
created:
type: string
id:
type: integer
mime:
type: string
name:
type: string
size:
type: integer
type: object
handler.AuthURL:
example:
url: url
properties:
url:
type: string
type: object
microsofttodo.Migration:
properties:
code:
type: string
type: object
migration.Status:
example:
migrator_name: migrator_name
finished_at: finished_at
started_at: started_at
id: 0
properties:
finished_at:
type: string
id:
type: integer
migrator_name:
type: string
started_at:
type: string
type: object
models.APIPermissions:
additionalProperties:
items:
type: string
type: array
type: object
models.APIToken:
example:
expires_at: expires_at
created: created
permissions: "{}"
id: 0
title: title
token: token
properties:
created:
description: A timestamp when this api key was created. You cannot change
this value.
type: string
expires_at:
description: The date when this key expires.
type: string
id:
description: "The unique, numeric id of this api key."
type: integer
permissions:
allOf:
- $ref: '#/components/schemas/models.APIPermissions'
description: "The permissions this token has. Possible values are available\
\ via the /routes endpoint and consist of the keys of the list from that\
\ endpoint. For example, if the token should be able to read all tasks\
\ as well as update existing tasks, you should add `{\"tasks\":[\"read_all\"\
,\"update\"]}`."
type: object
title:
description: A human-readable name for this token
type: string
token:
description: The actual api key. Only visible after creation.
type: string
type: object
models.APITokenRoute:
additionalProperties:
$ref: '#/components/schemas/models.RouteDetail'
type: object
models.Bucket:
example:
created: created
count: 0
limit: 0
project_view_id: 5
id: 6
position: 5.962133916683182
title: title
created_by: "{}"
updated: updated
tasks:
- end_date: end_date
reminders:
- relative_to: "{}"
reminder: reminder
relative_period: 1
- relative_to: "{}"
reminder: reminder
relative_period: 1
percent_done: 3.616076749251911
attachments:
- file:
size: 6
created: created
mime: mime
name: name
id: 0
created: created
task_id: 5
id: 1
created_by:
created: created
name: name
id: 0
updated: updated
email: email
username: username
- file:
size: 6
created: created
mime: mime
name: name
id: 0
created: created
task_id: 5
id: 1
created_by:
created: created
name: name
id: 0
updated: updated
email: email
username: username
is_favorite: true
done_at: done_at
repeat_after: 1
assignees:
- created: created
name: name
id: 0
updated: updated
email: email
username: username
- created: created
name: name
id: 0
updated: updated
email: email
username: username
description: description
related_tasks: "{}"
cover_image_attachment_id: 2
subscription: "{}"
title: title
bucket_id: 5
project_id: 7
id: 7
start_date: start_date
identifier: identifier
created: created
due_date: due_date
index: 9
hex_color: hex_color
priority: 4
created_by: "{}"
done: true
labels:
- created: created
description: description
id: 0
hex_color: hex_color
title: title
created_by: "{}"
updated: updated
- created: created
description: description
id: 0
hex_color: hex_color
title: title
created_by: "{}"
updated: updated
repeat_mode: "{}"
reactions: "{}"
position: 2.027123023002322
updated: updated
- end_date: end_date
reminders:
- relative_to: "{}"
reminder: reminder
relative_period: 1
- relative_to: "{}"
reminder: reminder
relative_period: 1
percent_done: 3.616076749251911
attachments:
- file:
size: 6
created: created
mime: mime
name: name
id: 0
created: created
task_id: 5
id: 1
created_by:
created: created
name: name
id: 0
updated: updated
email: email
username: username
- file:
size: 6
created: created
mime: mime
name: name
id: 0
created: created
task_id: 5
id: 1
created_by:
created: created
name: name
id: 0
updated: updated
email: email
username: username
is_favorite: true
done_at: done_at
repeat_after: 1
assignees:
- created: created
name: name
id: 0
updated: updated
email: email
username: username
- created: created
name: name
id: 0
updated: updated
email: email
username: username
description: description
related_tasks: "{}"
cover_image_attachment_id: 2
subscription: "{}"
title: title
bucket_id: 5
project_id: 7
id: 7
start_date: start_date
identifier: identifier
created: created
due_date: due_date
index: 9
hex_color: hex_color
priority: 4
created_by: "{}"
done: true
labels:
- created: created
description: description
id: 0
hex_color: hex_color
title: title
created_by: "{}"
updated: updated
- created: created
description: description
id: 0
hex_color: hex_color
title: title
created_by: "{}"
updated: updated
repeat_mode: "{}"
reactions: "{}"
position: 2.027123023002322
updated: updated
properties:
count:
description: The number of tasks currently in this bucket
type: integer
created:
description: A timestamp when this bucket was created. You cannot change
this value.
type: string
created_by:
allOf:
- $ref: '#/components/schemas/user.User'
description: The user who initially created the bucket.
type: object
id:
description: "The unique, numeric id of this bucket."
type: integer
limit:
description: How many tasks can be at the same time on this board max
minimum: 0
type: integer
position:
description: The position this bucket has when querying all buckets. See
the tasks.position property on how to use this.
type: number
project_view_id:
description: The project view this bucket belongs to.
type: integer
tasks:
description: All tasks which belong to this bucket.
items:
$ref: '#/components/schemas/models.Task'
type: array
title:
description: The title of this bucket.
minLength: 1
type: string
updated:
description: A timestamp when this bucket was last updated. You cannot change
this value.
type: string
type: object
models.BucketConfigurationModeKind:
enum:
- 0
- 1
- 2
type: integer
x-enum-varnames:
- BucketConfigurationModeNone
- BucketConfigurationModeManual
- BucketConfigurationModeFilter
models.BulkAssignees:
properties:
assignees:
description: A project with all assignees
items:
$ref: '#/components/schemas/user.User'
type: array
type: object
models.BulkTask:
properties:
assignees:
description: An array of users who are assigned to this task
items:
$ref: '#/components/schemas/user.User'
type: array
attachments:
description: "All attachments this task has. This property is read-onlym,\
\ you must use the separate endpoint to add attachments to a task."
items:
$ref: '#/components/schemas/models.TaskAttachment'
type: array
bucket_id:
description: |-
The bucket id. Will only be populated when the task is accessed via a view with buckets.
Can be used to move a task between buckets. In that case, the new bucket must be in the same view as the old one.
type: integer
cover_image_attachment_id:
description: "If this task has a cover image, the field will return the\
\ id of the attachment that is the cover image."
type: integer
created:
description: A timestamp when this task was created. You cannot change this
value.
type: string
created_by:
allOf:
- $ref: '#/components/schemas/user.User'
description: The user who initially created the task.
type: object
description:
description: The task description.
type: string
done:
description: Whether a task is done or not.
type: boolean
done_at:
description: The time when a task was marked as done.
type: string
due_date:
description: The time when the task is due.
type: string
end_date:
description: When this task ends.
type: string
hex_color:
description: The task color in hex
maxLength: 7
type: string
id:
description: "The unique, numeric id of this task."
type: integer
identifier:
description: "The task identifier, based on the project identifier and the\
\ task's index"
type: string
index:
description: "The task index, calculated per project"
type: integer
is_favorite:
description: True if a task is a favorite task. Favorite tasks show up in
a separate "Important" project. This value depends on the user making
the call to the api.
type: boolean
labels:
description: "An array of labels which are associated with this task. This\
\ property is read-only, you must use the separate endpoint to add labels\
\ to a task."
items:
$ref: '#/components/schemas/models.Label'
type: array
percent_done:
description: Determines how far a task is left from being done
type: number
position:
description: |-
The position of the task - any task project can be sorted as usual by this parameter.
When accessing tasks via views with buckets, this is primarily used to sort them based on a range.
Positions are always saved per view. They will automatically be set if you request the tasks through a view
endpoint, otherwise they will always be 0. To update them, take a look at the Task Position endpoint.
type: number
priority:
description: "The task priority. Can be anything you want, it is possible\
\ to sort by this later."
type: integer
project_id:
description: The project this task belongs to.
type: integer
reactions:
allOf:
- $ref: '#/components/schemas/models.ReactionMap'
description: Reactions on that task.
type: object
related_tasks:
allOf:
- $ref: '#/components/schemas/models.RelatedTaskMap'
description: "All related tasks, grouped by their relation kind"
type: object
reminders:
description: An array of reminders that are associated with this task.
items:
$ref: '#/components/schemas/models.TaskReminder'
type: array
repeat_after:
description: "An amount in seconds this task repeats itself. If this is\
\ set, when marking the task as done, it will mark itself as \"undone\"\
\ and then increase all remindes and the due date by its amount."
type: integer
repeat_mode:
allOf:
- $ref: '#/components/schemas/models.TaskRepeatMode'
description: "Can have three possible values which will trigger when the\
\ task is marked as done: 0 = repeats after the amount specified in repeat_after,\
\ 1 = repeats all dates each months (ignoring repeat_after), 3 = repeats\
\ from the current date rather than the last set date."
type: object
start_date:
description: When this task starts.
type: string
subscription:
allOf:
- $ref: '#/components/schemas/models.Subscription'
description: |-
The subscription status for the user reading this task. You can only read this property, use the subscription endpoints to modify it.
Will only returned when retrieving one task.
type: object
task_ids:
description: A project of task ids to update
items:
type: integer
type: array
title:
description: The task text. This is what you'll see in the project.
minLength: 1
type: string
updated:
description: A timestamp when this task was last updated. You cannot change
this value.
type: string
type: object
models.DatabaseNotifications:
example:
notification: "{}"
read: true
created: created
name: name
read_at: read_at
id: 0
properties:
created:
description: A timestamp when this notification was created. You cannot
change this value.
type: string
id:
description: "The unique, numeric id of this notification."
type: integer
name:
description: The name of the notification
type: string
notification:
description: The actual content of the notification.
type: object
read:
description: |-
Whether or not to mark this notification as read or unread.
True is read, false is unread.
type: boolean
read_at:
description: "When this notification is marked as read, this will be updated\
\ with the current timestamp."
type: string
type: object
models.Label:
example:
created: created
description: description
id: 0
hex_color: hex_color
title: title
created_by: "{}"
updated: updated
properties:
created:
description: A timestamp when this label was created. You cannot change
this value.
type: string
created_by:
allOf:
- $ref: '#/components/schemas/user.User'
description: The user who created this label
type: object
description:
description: The label description.
type: string
hex_color:
description: The color this label has in hex format.
maxLength: 7
type: string
id:
description: "The unique, numeric id of this label."
type: integer
title:
description: The title of the lable. You'll see this one on tasks associated
with it.
maxLength: 250
minLength: 1
type: string
updated:
description: A timestamp when this label was last updated. You cannot change
this value.
type: string
type: object
models.LabelTask:
example:
created: created
label_id: 0
properties:
created:
description: A timestamp when this task was created. You cannot change this
value.
type: string
label_id:
description: The label id you want to associate with a task.
type: integer
type: object
models.LabelTaskBulk:
example:
labels:
- created: created
description: description
id: 0
hex_color: hex_color
title: title
created_by: "{}"
updated: updated
- created: created
description: description
id: 0
hex_color: hex_color
title: title
created_by: "{}"
updated: updated
properties:
labels:
description: All labels you want to update at once.
items:
$ref: '#/components/schemas/models.Label'
type: array
type: object
models.LinkSharing:
example:
password: password
created: created
name: name
shared_by: "{}"
id: 0
right: "{}"
sharing_type: "{}"
updated: updated
hash: hash
properties:
created:
description: A timestamp when this project was shared. You cannot change
this value.
type: string
hash:
description: The public id to get this shared project
type: string
id:
description: The ID of the shared thing
type: integer
name:
description: The name of this link share. All actions someone takes while
being authenticated with that link will appear with that name.
type: string
password:
description: "The password of this link share. You can only set it, not\
\ retrieve it after the link share has been created."
type: string
right:
allOf:
- $ref: '#/components/schemas/models.Right'
description: "The right this project is shared with. 0 = Read only, 1 =\
\ Read & Write, 2 = Admin. See the docs for more details."
type: object
shared_by:
allOf:
- $ref: '#/components/schemas/user.User'
description: The user who shared this project
type: object
sharing_type:
allOf:
- $ref: '#/components/schemas/models.SharingType'
description: "The kind of this link. 0 = undefined, 1 = without password,\
\ 2 = with password."
type: object
updated:
description: A timestamp when this share was last updated. You cannot change
this value.
type: string
type: object
models.Message:
example:
message: message
properties:
message:
description: A standard message.
type: string
type: object
models.Project:
example:
owner: "{}"
identifier: identifier
is_favorite: true
created: created
description: description
subscription: "{}"
hex_color: hex_color
title: title
is_archived: true
background_information: "{}"
id: 0
position: 1.4658129805029452
background_blur_hash: background_blur_hash
parent_project_id: 6
updated: updated
views:
- filter: filter
default_bucket_id: 5
project_id: 9
created: created
bucket_configuration:
- filter: filter
title: title
- filter: filter
title: title
done_bucket_id: 5
view_kind: "{}"
bucket_configuration_mode: "{}"
id: 2
position: 7.061401241503109
title: title
updated: updated
- filter: filter
default_bucket_id: 5
project_id: 9
created: created
bucket_configuration:
- filter: filter
title: title
- filter: filter
title: title
done_bucket_id: 5
view_kind: "{}"
bucket_configuration_mode: "{}"
id: 2
position: 7.061401241503109
title: title
updated: updated
properties:
background_blur_hash:
description: Contains a very small version of the project background to
use as a blurry preview until the actual background is loaded. Check out
https://blurha.sh/ to learn how it works.
type: string
background_information:
description: "Holds extra information about the background set since some\
\ background providers require attribution or similar. If not null, the\
\ background can be accessed at /projects/{projectID}/background"
type: object
created:
description: A timestamp when this project was created. You cannot change
this value.
type: string
description:
description: The description of the project.
type: string
hex_color:
description: The hex color of this project
maxLength: 7
type: string
id:
description: "The unique, numeric id of this project."
type: integer
identifier:
description: The unique project short identifier. Used to build task identifiers.
maxLength: 10
minLength: 0
type: string
is_archived:
description: Whether a project is archived.
type: boolean
is_favorite:
description: True if a project is a favorite. Favorite projects show up
in a separate parent project. This value depends on the user making the
call to the api.
type: boolean
owner:
allOf:
- $ref: '#/components/schemas/user.User'
description: The user who created this project.
type: object
parent_project_id:
type: integer
position:
description: The position this project has when querying all projects. See
the tasks.position property on how to use this.
type: number
subscription:
allOf:
- $ref: '#/components/schemas/models.Subscription'
description: |-
The subscription status for the user reading this project. You can only read this property, use the subscription endpoints to modify it.
Will only returned when retreiving one project.
type: object
title:
description: The title of the project. You'll see this in the overview.
maxLength: 250
minLength: 1
type: string
updated:
description: A timestamp when this project was last updated. You cannot
change this value.
type: string
views:
items:
$ref: '#/components/schemas/models.ProjectView'
type: array
type: object
models.ProjectDuplicate:
example:
duplicated_project: "{}"
parent_project_id: 0
properties:
duplicated_project:
allOf:
- $ref: '#/components/schemas/models.Project'
description: The copied project
type: object
parent_project_id:
description: The target parent project
type: integer
type: object
models.ProjectUser:
example:
user_id: user_id
created: created
id: 0
right: "{}"
updated: updated
properties:
created:
description: A timestamp when this relation was created. You cannot change
this value.
type: string
id:
description: "The unique, numeric id of this project <-> user relation."
type: integer
right:
allOf:
- $ref: '#/components/schemas/models.Right'
description: "The right this user has. 0 = Read only, 1 = Read & Write,\
\ 2 = Admin. See the docs for more details."
type: object
updated:
description: A timestamp when this relation was last updated. You cannot
change this value.
type: string
user_id:
description: The username.
type: string
type: object
models.ProjectView:
example:
filter: filter
default_bucket_id: 5
project_id: 9
created: created
bucket_configuration:
- filter: filter
title: title
- filter: filter
title: title
done_bucket_id: 5
view_kind: "{}"
bucket_configuration_mode: "{}"
id: 2
position: 7.061401241503109
title: title
updated: updated
properties:
bucket_configuration:
description: "When the bucket configuration mode is not `manual`, this field\
\ holds the options of that configuration."
items:
$ref: '#/components/schemas/models.ProjectViewBucketConfiguration'
type: array
bucket_configuration_mode:
allOf:
- $ref: '#/components/schemas/models.BucketConfigurationModeKind'
description: "The bucket configuration mode. Can be `none`, `manual` or\
\ `filter`. `manual` allows to move tasks between buckets as you normally\
\ would. `filter` creates buckets based on a filter for each bucket."
type: object
created:
description: A timestamp when this reaction was created. You cannot change
this value.
type: string
default_bucket_id:
description: "The ID of the bucket where new tasks without a bucket are\
\ added to. By default, this is the leftmost bucket in a view."
type: integer
done_bucket_id:
description: "If tasks are moved to the done bucket, they are marked as\
\ done. If they are marked as done individually, they are moved into the\
\ done bucket."
type: integer
filter:
description: The filter query to match tasks by. Check out https://vikunja.io/docs/filters
for a full explanation.
type: string
id:
description: The unique numeric id of this view
type: integer
position:
description: The position of this view in the list. The list of all views
will be sorted by this parameter.
type: number
project_id:
description: The project this view belongs to
type: integer
title:
description: The title of this view
type: string
updated:
description: A timestamp when this view was updated. You cannot change this
value.
type: string
view_kind:
allOf:
- $ref: '#/components/schemas/models.ProjectViewKind'
description: "The kind of this view. Can be `list`, `gantt`, `table` or\
\ `kanban`."
type: object
type: object
models.ProjectViewBucketConfiguration:
example:
filter: filter
title: title
properties:
filter:
type: string
title:
type: string
type: object
models.ProjectViewKind:
enum:
- 0
- 1
- 2
- 3
type: integer
x-enum-varnames:
- ProjectViewKindList
- ProjectViewKindGantt
- ProjectViewKindTable
- ProjectViewKindKanban
models.Reaction:
example:
created: created
user: "{}"
value: value
properties:
created:
description: A timestamp when this reaction was created. You cannot change
this value.
type: string
user:
allOf:
- $ref: '#/components/schemas/user.User'
description: The user who reacted
type: object
value:
description: "The actual reaction. This can be any valid utf character or\
\ text, up to a length of 20."
type: string
type: object
models.ReactionMap:
additionalProperties:
items:
$ref: '#/components/schemas/user.User'
type: array
type: object
models.RelatedTaskMap:
additionalProperties:
items:
$ref: '#/components/schemas/models.Task'
type: array
type: object
models.RelationKind:
enum:
- unknown
- subtask
- parenttask
- related
- duplicateof
- duplicates
- blocking
- blocked
- precedes
- follows
- copiedfrom
- copiedto
type: string
x-enum-varnames:
- RelationKindUnknown
- RelationKindSubtask
- RelationKindParenttask
- RelationKindRelated
- RelationKindDuplicateOf
- RelationKindDuplicates
- RelationKindBlocking
- RelationKindBlocked
- RelationKindPreceeds
- RelationKindFollows
- RelationKindCopiedFrom
- RelationKindCopiedTo
models.ReminderRelation:
enum:
- due_date
- start_date
- end_date
type: string
x-enum-varnames:
- ReminderRelationDueDate
- ReminderRelationStartDate
- ReminderRelationEndDate
models.Right:
enum:
- 0
- 1
- 2
type: integer
x-enum-varnames:
- RightRead
- RightWrite
- RightAdmin
models.RouteDetail:
properties:
method:
type: string
path:
type: string
type: object
models.SavedFilter:
example:
owner: "{}"
is_favorite: true
created: created
description: description
filters: "{}"
id: 0
title: title
updated: updated
properties:
created:
description: A timestamp when this filter was created. You cannot change
this value.
type: string
description:
description: The description of the filter
type: string
filters:
allOf:
- $ref: '#/components/schemas/models.TaskCollection'
description: The actual filters this filter contains
type: object
id:
description: The unique numeric id of this saved filter
type: integer
is_favorite:
description: True if the filter is a favorite. Favorite filters show up
in a separate parent project together with favorite projects.
type: boolean
owner:
allOf:
- $ref: '#/components/schemas/user.User'
description: The user who owns this filter
type: object
title:
description: The title of the filter.
maxLength: 250
minLength: 1
type: string
updated:
description: A timestamp when this filter was last updated. You cannot change
this value.
type: string
type: object
models.SharingType:
enum:
- 0
- 1
- 2
type: integer
x-enum-varnames:
- SharingTypeUnknown
- SharingTypeWithoutPassword
- SharingTypeWithPassword
models.Subscription:
example:
created: created
id: 1
entity_id: 6
entity: 0
properties:
created:
description: A timestamp when this subscription was created. You cannot
change this value.
type: string
entity:
type: integer
entity_id:
description: The id of the entity to subscribe to.
type: integer
id:
description: The numeric ID of the subscription
type: integer
type: object
models.Task:
example:
end_date: end_date
reminders:
- relative_to: "{}"
reminder: reminder
relative_period: 1
- relative_to: "{}"
reminder: reminder
relative_period: 1
percent_done: 3.616076749251911
attachments:
- file:
size: 6
created: created
mime: mime
name: name
id: 0
created: created
task_id: 5
id: 1
created_by:
created: created
name: name
id: 0
updated: updated
email: email
username: username
- file:
size: 6
created: created
mime: mime
name: name
id: 0
created: created
task_id: 5
id: 1
created_by:
created: created
name: name
id: 0
updated: updated
email: email
username: username
is_favorite: true
done_at: done_at
repeat_after: 1
assignees:
- created: created
name: name
id: 0
updated: updated
email: email
username: username
- created: created
name: name
id: 0
updated: updated
email: email
username: username
description: description
related_tasks: "{}"
cover_image_attachment_id: 2
subscription: "{}"
title: title
bucket_id: 5
project_id: 7
id: 7
start_date: start_date
identifier: identifier
created: created
due_date: due_date
index: 9
hex_color: hex_color
priority: 4
created_by: "{}"
done: true
labels:
- created: created
description: description
id: 0
hex_color: hex_color
title: title
created_by: "{}"
updated: updated
- created: created
description: description
id: 0
hex_color: hex_color
title: title
created_by: "{}"
updated: updated
repeat_mode: "{}"
reactions: "{}"
position: 2.027123023002322
updated: updated
properties:
assignees:
description: An array of users who are assigned to this task
items:
$ref: '#/components/schemas/user.User'
type: array
attachments:
description: "All attachments this task has. This property is read-onlym,\
\ you must use the separate endpoint to add attachments to a task."
items:
$ref: '#/components/schemas/models.TaskAttachment'
type: array
bucket_id:
description: |-
The bucket id. Will only be populated when the task is accessed via a view with buckets.
Can be used to move a task between buckets. In that case, the new bucket must be in the same view as the old one.
type: integer
cover_image_attachment_id:
description: "If this task has a cover image, the field will return the\
\ id of the attachment that is the cover image."
type: integer
created:
description: A timestamp when this task was created. You cannot change this
value.
type: string
created_by:
allOf:
- $ref: '#/components/schemas/user.User'
description: The user who initially created the task.
type: object
description:
description: The task description.
type: string
done:
description: Whether a task is done or not.
type: boolean
done_at:
description: The time when a task was marked as done.
type: string
due_date:
description: The time when the task is due.
type: string
end_date:
description: When this task ends.
type: string
hex_color:
description: The task color in hex
maxLength: 7
type: string
id:
description: "The unique, numeric id of this task."
type: integer
identifier:
description: "The task identifier, based on the project identifier and the\
\ task's index"
type: string
index:
description: "The task index, calculated per project"
type: integer
is_favorite:
description: True if a task is a favorite task. Favorite tasks show up in
a separate "Important" project. This value depends on the user making
the call to the api.
type: boolean
labels:
description: "An array of labels which are associated with this task. This\
\ property is read-only, you must use the separate endpoint to add labels\
\ to a task."
items:
$ref: '#/components/schemas/models.Label'
type: array
percent_done:
description: Determines how far a task is left from being done
type: number
position:
description: |-
The position of the task - any task project can be sorted as usual by this parameter.
When accessing tasks via views with buckets, this is primarily used to sort them based on a range.
Positions are always saved per view. They will automatically be set if you request the tasks through a view
endpoint, otherwise they will always be 0. To update them, take a look at the Task Position endpoint.
type: number
priority:
description: "The task priority. Can be anything you want, it is possible\
\ to sort by this later."
type: integer
project_id:
description: The project this task belongs to.
type: integer
reactions:
allOf:
- $ref: '#/components/schemas/models.ReactionMap'
description: Reactions on that task.
type: object
related_tasks:
allOf:
- $ref: '#/components/schemas/models.RelatedTaskMap'
description: "All related tasks, grouped by their relation kind"
type: object
reminders:
description: An array of reminders that are associated with this task.
items:
$ref: '#/components/schemas/models.TaskReminder'
type: array
repeat_after:
description: "An amount in seconds this task repeats itself. If this is\
\ set, when marking the task as done, it will mark itself as \"undone\"\
\ and then increase all remindes and the due date by its amount."
type: integer
repeat_mode:
allOf:
- $ref: '#/components/schemas/models.TaskRepeatMode'
description: "Can have three possible values which will trigger when the\
\ task is marked as done: 0 = repeats after the amount specified in repeat_after,\
\ 1 = repeats all dates each months (ignoring repeat_after), 3 = repeats\
\ from the current date rather than the last set date."
type: object
start_date:
description: When this task starts.
type: string
subscription:
allOf:
- $ref: '#/components/schemas/models.Subscription'
description: |-
The subscription status for the user reading this task. You can only read this property, use the subscription endpoints to modify it.
Will only returned when retrieving one task.
type: object
title:
description: The task text. This is what you'll see in the project.
minLength: 1
type: string
updated:
description: A timestamp when this task was last updated. You cannot change
this value.
type: string
type: object
models.TaskAssginee:
example:
user_id: 0
created: created
properties:
created:
type: string
user_id:
type: integer
type: object
models.TaskAttachment:
example:
file:
size: 6
created: created
mime: mime
name: name
id: 0
created: created
task_id: 5
id: 1
created_by:
created: created
name: name
id: 0
updated: updated
email: email
username: username
properties:
created:
type: string
created_by:
$ref: '#/components/schemas/user.User'
file:
$ref: '#/components/schemas/files.File'
id:
type: integer
task_id:
type: integer
type: object
models.TaskBucket:
example:
bucket_id: 0
project_view_id: 6
task_id: 1
task_done: true
properties:
bucket_id:
type: integer
project_view_id:
type: integer
task_done:
type: boolean
task_id:
type: integer
type: object
models.TaskCollection:
properties:
filter:
description: The filter query to match tasks by. Check out https://vikunja.io/docs/filters
for a full explanation.
type: string
filter_include_nulls:
description: "If set to true, the result will also include null values"
type: boolean
order_by:
description: "The query parameter to order the items by. This can be either\
\ asc or desc, with asc being the default."
items:
type: string
type: array
sort_by:
description: "The query parameter to sort by. This is for ex. done, priority,\
\ etc."
items:
type: string
type: array
type: object
models.TaskComment:
example:
author:
created: created
name: name
id: 0
updated: updated
email: email
username: username
created: created
comment: comment
reactions:
key:
- created: created
name: name
id: 0
updated: updated
email: email
username: username
- created: created
name: name
id: 0
updated: updated
email: email
username: username
id: 0
updated: updated
properties:
author:
$ref: '#/components/schemas/user.User'
comment:
type: string
created:
type: string
id:
type: integer
reactions:
additionalProperties:
items:
$ref: '#/components/schemas/user.User'
type: array
type: object
updated:
type: string
type: object
models.TaskPosition:
example:
project_view_id: 6
task_id: 1
position: 0.8008281904610115
properties:
position:
description: |-
The position of the task - any task project can be sorted as usual by this parameter.
When accessing tasks via kanban buckets, this is primarily used to sort them based on a range
We're using a float64 here to make it possible to put any task within any two other tasks (by changing the number).
You would calculate the new position between two tasks with something like task3.position = (task2.position - task1.position) / 2.
A 64-Bit float leaves plenty of room to initially give tasks a position with 2^16 difference to the previous task
which also leaves a lot of room for rearranging and sorting later.
Positions are always saved per view. They will automatically be set if you request the tasks through a view
endpoint, otherwise they will always be 0. To update them, take a look at the Task Position endpoint.
type: number
project_view_id:
description: The project view this task is related to
type: integer
task_id:
description: The ID of the task this position is for
type: integer
type: object
models.TaskRelation:
example:
created: created
relation_kind: "{}"
task_id: 6
created_by: "{}"
other_task_id: 0
properties:
created:
description: A timestamp when this label was created. You cannot change
this value.
type: string
created_by:
allOf:
- $ref: '#/components/schemas/user.User'
description: The user who created this relation
type: object
other_task_id:
description: "The ID of the other task, the task which is being related."
type: integer
relation_kind:
allOf:
- $ref: '#/components/schemas/models.RelationKind'
description: The kind of the relation.
type: object
task_id:
description: "The ID of the \"base\" task, the task which has a relation\
\ to another."
type: integer
type: object
models.TaskReminder:
example:
relative_to: "{}"
reminder: reminder
relative_period: 1
properties:
relative_period:
description: "A period in seconds relative to another date argument. Negative\
\ values mean the reminder triggers before the date. Default: 0, tiggers\
\ when RelativeTo is due."
type: integer
relative_to:
allOf:
- $ref: '#/components/schemas/models.ReminderRelation'
description: The name of the date field to which the relative period refers
to.
type: object
reminder:
description: The absolute time when the user wants to be reminded of the
task.
type: string
type: object
models.TaskRepeatMode:
enum:
- 0
- 1
- 2
type: integer
x-enum-varnames:
- TaskRepeatModeDefault
- TaskRepeatModeMonth
- TaskRepeatModeFromCurrentDate
models.Team:
example:
oidc_id: oidc_id
include_public: true
created: created
members:
- created: created
name: name
admin: true
id: 6
updated: updated
email: email
username: username
- created: created
name: name
admin: true
id: 6
updated: updated
email: email
username: username
is_public: true
name: name
description: description
id: 0
created_by: "{}"
updated: updated
properties:
created:
description: A timestamp when this relation was created. You cannot change
this value.
type: string
created_by:
allOf:
- $ref: '#/components/schemas/user.User'
description: The user who created this team.
type: object
description:
description: The team's description.
type: string
id:
description: "The unique, numeric id of this team."
type: integer
include_public:
description: Query parameter controlling whether to include public projects
or not
type: boolean
is_public:
description: Defines wether the team should be publicly discoverable when
sharing a project
type: boolean
members:
description: An array of all members in this team.
items:
$ref: '#/components/schemas/models.TeamUser'
type: array
name:
description: The name of this team.
maxLength: 250
minLength: 1
type: string
oidc_id:
description: The team's oidc id delivered by the oidc provider
maxLength: 250
type: string
updated:
description: A timestamp when this relation was last updated. You cannot
change this value.
type: string
type: object
models.TeamMember:
example:
created: created
admin: true
id: 0
username: username
properties:
admin:
description: Whether or not the member is an admin of the team. See the
docs for more about what a team admin can do
type: boolean
created:
description: A timestamp when this relation was created. You cannot change
this value.
type: string
id:
description: "The unique, numeric id of this team member relation."
type: integer
username:
description: The username of the member. We use this to prevent automated
user id entering.
type: string
type: object
models.TeamProject:
example:
created: created
id: 0
right: "{}"
team_id: 6
updated: updated
properties:
created:
description: A timestamp when this relation was created. You cannot change
this value.
type: string
id:
description: "The unique, numeric id of this project <-> team relation."
type: integer
right:
allOf:
- $ref: '#/components/schemas/models.Right'
description: "The right this team has. 0 = Read only, 1 = Read & Write,\
\ 2 = Admin. See the docs for more details."
type: object
team_id:
description: The team id.
type: integer
updated:
description: A timestamp when this relation was last updated. You cannot
change this value.
type: string
type: object
models.TeamUser:
example:
created: created
name: name
admin: true
id: 6
updated: updated
email: email
username: username
properties:
admin:
description: Whether the member is an admin of the team. See the docs for
more about what a team admin can do
type: boolean
created:
description: A timestamp when this task was created. You cannot change this
value.
type: string
email:
description: The user's email address.
maxLength: 250
type: string
id:
description: "The unique, numeric id of this user."
type: integer
name:
description: The full name of the user.
type: string
updated:
description: A timestamp when this task was last updated. You cannot change
this value.
type: string
username:
description: The username of the user. Is always unique.
maxLength: 250
minLength: 1
type: string
type: object
models.TeamWithRight:
example:
oidc_id: oidc_id
include_public: true
created: created
members:
- created: created
name: name
admin: true
id: 6
updated: updated
email: email
username: username
- created: created
name: name
admin: true
id: 6
updated: updated
email: email
username: username
is_public: true
name: name
description: description
id: 0
right: 1
created_by: "{}"
updated: updated
properties:
created:
description: A timestamp when this relation was created. You cannot change
this value.
type: string
created_by:
allOf:
- $ref: '#/components/schemas/user.User'
description: The user who created this team.
type: object
description:
description: The team's description.
type: string
id:
description: "The unique, numeric id of this team."
type: integer
include_public:
description: Query parameter controlling whether to include public projects
or not
type: boolean
is_public:
description: Defines wether the team should be publicly discoverable when
sharing a project
type: boolean
members:
description: An array of all members in this team.
items:
$ref: '#/components/schemas/models.TeamUser'
type: array
name:
description: The name of this team.
maxLength: 250
minLength: 1
type: string
oidc_id:
description: The team's oidc id delivered by the oidc provider
maxLength: 250
type: string
right:
$ref: '#/components/schemas/models.Right'
updated:
description: A timestamp when this relation was last updated. You cannot
change this value.
type: string
type: object
models.UserWithRight:
example:
created: created
name: name
id: 0
right: 6
updated: updated
email: email
username: username
properties:
created:
description: A timestamp when this task was created. You cannot change this
value.
type: string
email:
description: The user's email address.
maxLength: 250
type: string
id:
description: "The unique, numeric id of this user."
type: integer
name:
description: The full name of the user.
type: string
right:
$ref: '#/components/schemas/models.Right'
updated:
description: A timestamp when this task was last updated. You cannot change
this value.
type: string
username:
description: The username of the user. Is always unique.
maxLength: 250
minLength: 1
type: string
type: object
models.Webhook:
example:
project_id: 6
created: created
target_url: target_url
id: 0
secret: secret
created_by: "{}"
updated: updated
events:
- events
- events
properties:
created:
description: A timestamp when this webhook target was created. You cannot
change this value.
type: string
created_by:
allOf:
- $ref: '#/components/schemas/user.User'
description: The user who initially created the webhook target.
type: object
events:
description: The webhook events which should fire this webhook target
items:
type: string
type: array
id:
description: The generated ID of this webhook target
type: integer
project_id:
description: The project ID of the project this webhook target belongs to
type: integer
secret:
description: "If provided, webhook requests will be signed using HMAC. Check\
\ out the docs about how to use this: https://vikunja.io/docs/webhooks/#signing"
type: string
target_url:
description: The target URL where the POST request with the webhook payload
will be made
type: string
updated:
description: A timestamp when this webhook target was last updated. You
cannot change this value.
type: string
type: object
notifications.DatabaseNotification:
example:
notification: "{}"
created: created
name: name
read_at: read_at
id: 0
properties:
created:
description: A timestamp when this notification was created. You cannot
change this value.
type: string
id:
description: "The unique, numeric id of this notification."
type: integer
name:
description: The name of the notification
type: string
notification:
description: The actual content of the notification.
type: object
read_at:
description: "When this notification is marked as read, this will be updated\
\ with the current timestamp."
type: string
type: object
openid.Callback:
properties:
code:
type: string
redirect_url:
type: string
scope:
type: string
type: object
openid.Provider:
example:
logout_url: logout_url
scope: scope
name: name
auth_url: auth_url
client_id: client_id
key: key
properties:
auth_url:
type: string
client_id:
type: string
key:
type: string
logout_url:
type: string
name:
type: string
scope:
type: string
type: object
todoist.Migration:
properties:
code:
type: string
type: object
trello.Migration:
properties:
code:
type: string
type: object
user.APIUserPassword:
properties:
email:
description: The user's email address
maxLength: 250
type: string
id:
description: "The unique, numeric id of this user."
type: integer
password:
description: "The user's password in clear text. Only used when registering\
\ the user. The maximum limi is 72 bytes, which may be less than 72 characters.\
\ This is due to the limit in the bcrypt hashing algorithm used to store\
\ passwords in Vikunja."
maxLength: 72
minLength: 8
type: string
username:
description: The user's username. Cannot contain anything that looks like
an url or whitespaces.
maxLength: 250
minLength: 3
type: string
type: object
user.EmailConfirm:
properties:
token:
description: The email confirm token sent via email.
type: string
type: object
user.EmailUpdate:
properties:
new_email:
description: The new email address. Needs to be a valid email address.
type: string
password:
description: The password of the user for confirmation.
type: string
type: object
user.Login:
properties:
long_token:
description: "If true, the token returned will be valid a lot longer than\
\ default. Useful for \"remember me\" style logins."
type: boolean
password:
description: The password for the user.
type: string
totp_passcode:
description: The totp passcode of a user. Only needs to be provided when
enabled.
type: string
username:
description: The username used to log in.
type: string
type: object
user.PasswordReset:
properties:
new_password:
description: The new password for this user.
type: string
token:
description: The previously issued reset token.
type: string
type: object
user.PasswordTokenRequest:
properties:
email:
maxLength: 250
type: string
type: object
user.TOTP:
example:
secret: secret
enabled: true
url: url
properties:
enabled:
description: The totp entry will only be enabled after the user verified
they have a working totp setup.
type: boolean
secret:
type: string
url:
description: The totp url used to be able to enroll the user later
type: string
type: object
user.TOTPPasscode:
properties:
passcode:
type: string
type: object
user.Token:
example:
created: created
id: 0
token: token
properties:
created:
type: string
id:
type: integer
token:
type: string
type: object
user.User:
example:
created: created
name: name
id: 0
updated: updated
email: email
username: username
properties:
created:
description: A timestamp when this task was created. You cannot change this
value.
type: string
email:
description: The user's email address.
maxLength: 250
type: string
id:
description: "The unique, numeric id of this user."
type: integer
name:
description: The full name of the user.
type: string
updated:
description: A timestamp when this task was last updated. You cannot change
this value.
type: string
username:
description: The username of the user. Is always unique.
maxLength: 250
minLength: 1
type: string
type: object
v1.LinkShareAuth:
properties:
password:
type: string
type: object
v1.UserAvatarProvider:
example:
avatar_provider: avatar_provider
properties:
avatar_provider:
description: "The avatar provider. Valid types are `gravatar` (uses the\
\ user email), `upload`, `initials`, `marble` (generates a random avatar\
\ for each user), `default`."
type: string
type: object
v1.UserDeletionRequestConfirm:
properties:
token:
type: string
type: object
v1.UserPassword:
properties:
new_password:
type: string
old_password:
type: string
type: object
v1.UserPasswordConfirmation:
properties:
password:
type: string
type: object
v1.UserSettings:
example:
discoverable_by_email: true
frontend_settings: "{}"
discoverable_by_name: true
timezone: timezone
default_project_id: 6
name: name
language: language
week_start: 1
overdue_tasks_reminders_enabled: true
overdue_tasks_reminders_time: overdue_tasks_reminders_time
email_reminders_enabled: true
properties:
default_project_id:
description: |-
If a task is created without a specified project this value should be used. Applies
to tasks made directly in API and from clients.
type: integer
discoverable_by_email:
description: "If true, the user can be found when searching for their exact\
\ email."
type: boolean
discoverable_by_name:
description: "If true, this user can be found by their name or parts of\
\ it when searching for it."
type: boolean
email_reminders_enabled:
description: "If enabled, sends email reminders of tasks to the user."
type: boolean
frontend_settings:
description: Additional settings only used by the frontend
type: object
language:
description: The user's language
type: string
name:
description: The new name of the current user.
type: string
overdue_tasks_reminders_enabled:
description: "If enabled, the user will get an email for their overdue tasks\
\ each morning."
type: boolean
overdue_tasks_reminders_time:
description: The time when the daily summary of overdue tasks will be sent
via email.
type: string
timezone:
description: The user's time zone. Used to send task reminders in the time
zone of the user.
type: string
week_start:
description: "The day when the week starts for this user. 0 = sunday, 1\
\ = monday, etc."
type: integer
type: object
v1.UserWithSettings:
example:
settings:
discoverable_by_email: true
frontend_settings: "{}"
discoverable_by_name: true
timezone: timezone
default_project_id: 6
name: name
language: language
week_start: 1
overdue_tasks_reminders_enabled: true
overdue_tasks_reminders_time: overdue_tasks_reminders_time
email_reminders_enabled: true
created: created
deletion_scheduled_at: deletion_scheduled_at
name: name
is_local_user: true
id: 0
updated: updated
email: email
username: username
properties:
created:
description: A timestamp when this task was created. You cannot change this
value.
type: string
deletion_scheduled_at:
type: string
email:
description: The user's email address.
maxLength: 250
type: string
id:
description: "The unique, numeric id of this user."
type: integer
is_local_user:
type: boolean
name:
description: The full name of the user.
type: string
settings:
$ref: '#/components/schemas/v1.UserSettings'
updated:
description: A timestamp when this task was last updated. You cannot change
this value.
type: string
username:
description: The username of the user. Is always unique.
maxLength: 250
minLength: 1
type: string
type: object
v1.authInfo:
example:
openid_connect:
enabled: true
providers:
- logout_url: logout_url
scope: scope
name: name
auth_url: auth_url
client_id: client_id
key: key
- logout_url: logout_url
scope: scope
name: name
auth_url: auth_url
client_id: client_id
key: key
local:
enabled: true
properties:
local:
$ref: '#/components/schemas/v1.localAuthInfo'
openid_connect:
$ref: '#/components/schemas/v1.openIDAuthInfo'
type: object
v1.legalInfo:
example:
privacy_policy_url: privacy_policy_url
imprint_url: imprint_url
properties:
imprint_url:
type: string
privacy_policy_url:
type: string
type: object
v1.localAuthInfo:
example:
enabled: true
properties:
enabled:
type: boolean
type: object
v1.openIDAuthInfo:
example:
enabled: true
providers:
- logout_url: logout_url
scope: scope
name: name
auth_url: auth_url
client_id: client_id
key: key
- logout_url: logout_url
scope: scope
name: name
auth_url: auth_url
client_id: client_id
key: key
properties:
enabled:
type: boolean
providers:
items:
$ref: '#/components/schemas/openid.Provider'
type: array
type: object
v1.vikunjaInfos:
example:
motd: motd
frontend_url: frontend_url
task_comments_enabled: true
available_migrators:
- available_migrators
- available_migrators
auth:
openid_connect:
enabled: true
providers:
- logout_url: logout_url
scope: scope
name: name
auth_url: auth_url
client_id: client_id
key: key
- logout_url: logout_url
scope: scope
name: name
auth_url: auth_url
client_id: client_id
key: key
local:
enabled: true
totp_enabled: true
user_deletion_enabled: true
enabled_background_providers:
- enabled_background_providers
- enabled_background_providers
public_teams_enabled: true
task_attachments_enabled: true
version: version
email_reminders_enabled: true
link_sharing_enabled: true
max_file_size: max_file_size
registration_enabled: true
demo_mode_enabled: true
legal:
privacy_policy_url: privacy_policy_url
imprint_url: imprint_url
caldav_enabled: true
webhooks_enabled: true
properties:
auth:
$ref: '#/components/schemas/v1.authInfo'
available_migrators:
items:
type: string
type: array
caldav_enabled:
type: boolean
demo_mode_enabled:
type: boolean
email_reminders_enabled:
type: boolean
enabled_background_providers:
items:
type: string
type: array
frontend_url:
type: string
legal:
$ref: '#/components/schemas/v1.legalInfo'
link_sharing_enabled:
type: boolean
max_file_size:
type: string
motd:
type: string
public_teams_enabled:
type: boolean
registration_enabled:
type: boolean
task_attachments_enabled:
type: boolean
task_comments_enabled:
type: boolean
totp_enabled:
type: boolean
user_deletion_enabled:
type: boolean
version:
type: string
webhooks_enabled:
type: boolean
type: object
web.HTTPError:
example:
code: 6
message: message
properties:
code:
type: integer
message:
type: string
type: object
_migration_ticktick_migrate_post_request:
properties:
import:
description: The TickTick backup csv file.
type: string
required:
- import
type: object
_migration_vikunja_file_migrate_post_request:
properties:
import:
description: The Vikunja export zip file.
type: string
required:
- import
type: object
_projects__id__backgrounds_upload_put_request:
properties:
background:
description: The file as single file.
type: string
required:
- background
type: object
_tasks__id__attachments_put_request:
properties:
files:
description: "The file, as multipart form file. You can pass multiple."
type: string
required:
- files
type: object
_user_settings_avatar_upload_put_request:
properties:
avatar:
description: The avatar as single file.
type: string
required:
- avatar
type: object
securitySchemes:
BasicAuth:
scheme: basic
type: http
JWTKeyAuth:
in: header
name: Authorization
type: apiKey
x-original-swagger-version: "2.0"