4844 lines
124 KiB
YAML
4844 lines
124 KiB
YAML
swagger: '2.0'
|
|
info:
|
|
title: Wekan REST API
|
|
version: v9.42
|
|
description: |
|
|
The REST API allows you to control and extend Wekan with ease.
|
|
|
|
If you are an end-user and not a dev or a tester, [create an issue](https://github.com/wekan/wekan/issues/new) to request new APIs.
|
|
|
|
> All API calls in the documentation are made using `curl`. However, you are free to use Java / Python / PHP / Golang / Ruby / Swift / Objective-C / Rust / Scala / C# or any other programming languages.
|
|
|
|
# Production Security Concerns
|
|
When calling a production Wekan server, ensure it is running via HTTPS and has a valid SSL Certificate. The login method requires you to post your username and password in plaintext, which is why we highly suggest only calling the REST login api over HTTPS. Also, few things to note:
|
|
|
|
* Only call via HTTPS
|
|
* Implement a timed authorization token expiration strategy
|
|
* Ensure the calling user only has permissions for what they are calling and no more
|
|
|
|
schemes:
|
|
- http
|
|
|
|
securityDefinitions:
|
|
UserSecurity:
|
|
type: apiKey
|
|
in: header
|
|
name: Authorization
|
|
|
|
paths:
|
|
/users/login:
|
|
post:
|
|
operationId: login
|
|
summary: Login with REST API
|
|
consumes:
|
|
- application/json
|
|
- application/x-www-form-urlencoded
|
|
tags:
|
|
- Login
|
|
parameters:
|
|
- name: loginRequest
|
|
in: body
|
|
required: true
|
|
description: Login credentials
|
|
schema:
|
|
type: object
|
|
required:
|
|
- username
|
|
- password
|
|
properties:
|
|
username:
|
|
description: |
|
|
Your username
|
|
type: string
|
|
password:
|
|
description: |
|
|
Your password
|
|
type: string
|
|
format: password
|
|
responses:
|
|
200:
|
|
description: |-
|
|
Successful authentication
|
|
schema:
|
|
type: object
|
|
required:
|
|
- id
|
|
- token
|
|
- tokenExpires
|
|
properties:
|
|
id:
|
|
type: string
|
|
description: User ID
|
|
token:
|
|
type: string
|
|
description: |
|
|
Authentication token
|
|
tokenExpires:
|
|
type: string
|
|
format: date-time
|
|
description: |
|
|
Token expiration date
|
|
400:
|
|
description: |
|
|
Error in authentication
|
|
schema:
|
|
type: object
|
|
properties:
|
|
error:
|
|
type: string
|
|
reason:
|
|
type: string
|
|
default:
|
|
description: |
|
|
Error in authentication
|
|
/users/register:
|
|
post:
|
|
operationId: register
|
|
summary: Register with REST API
|
|
description: |
|
|
Notes:
|
|
- You will need to provide the token for any of the authenticated methods.
|
|
consumes:
|
|
- application/x-www-form-urlencoded
|
|
- application/json
|
|
tags:
|
|
- Login
|
|
parameters:
|
|
- name: username
|
|
in: formData
|
|
required: true
|
|
description: |
|
|
Your username
|
|
type: string
|
|
- name: password
|
|
in: formData
|
|
required: true
|
|
description: |
|
|
Your password
|
|
type: string
|
|
format: password
|
|
- name: email
|
|
in: formData
|
|
required: true
|
|
description: |
|
|
Your email
|
|
type: string
|
|
responses:
|
|
200:
|
|
description: |-
|
|
Successful registration
|
|
schema:
|
|
items:
|
|
properties:
|
|
id:
|
|
type: string
|
|
token:
|
|
type: string
|
|
tokenExpires:
|
|
type: string
|
|
400:
|
|
description: |
|
|
Error in registration
|
|
schema:
|
|
items:
|
|
properties:
|
|
error:
|
|
type: number
|
|
reason:
|
|
type: string
|
|
default:
|
|
description: |
|
|
Error in registration
|
|
|
|
/api/boards:
|
|
get:
|
|
operationId: get_boards
|
|
tags:
|
|
- Boards
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
post:
|
|
operationId: post_boards
|
|
tags:
|
|
- Boards
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}:
|
|
get:
|
|
operationId: get_board
|
|
tags:
|
|
- Boards
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
delete:
|
|
operationId: delete_board
|
|
tags:
|
|
- Boards
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/attachments:
|
|
get:
|
|
operationId: get_board_attachments
|
|
tags:
|
|
- Boards
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/attachments/{attachment}/export:
|
|
get:
|
|
operationId: exportJson
|
|
summary: This route is used to export a attachement to a json file format.
|
|
description: |
|
|
If user is already logged-in, pass loginToken as param
|
|
"authToken": '/api/boards/:boardId/attachments/:attachmentId/export?authToken=:token'
|
|
tags:
|
|
- Boards
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: |
|
|
the ID of the board we are exporting
|
|
type: string
|
|
required: true
|
|
- name: attachment
|
|
in: path
|
|
description: |
|
|
the ID of the attachment we are exporting
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/cardSettings:
|
|
get:
|
|
operationId: get_board_cardSettings
|
|
tags:
|
|
- Boards
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
put:
|
|
operationId: put_board_cardSettings
|
|
tags:
|
|
- Boards
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: key
|
|
in: formData
|
|
description: the key value
|
|
type: string
|
|
required: true
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/cards/{card}/checklists:
|
|
get:
|
|
operationId: get_board_card_checklists
|
|
tags:
|
|
- Checklists
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
post:
|
|
operationId: post_board_card_checklists
|
|
tags:
|
|
- Checklists
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: items
|
|
in: formData
|
|
description: the items value
|
|
type: string
|
|
required: true
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/cards/{card}/checklists/{checklist}:
|
|
get:
|
|
operationId: get_board_card_checklist
|
|
tags:
|
|
- Checklists
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
- name: checklist
|
|
in: path
|
|
description: the checklist value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
delete:
|
|
operationId: delete_board_card_checklist
|
|
tags:
|
|
- Checklists
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
- name: checklist
|
|
in: path
|
|
description: the checklist value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/cards/{card}/checklists/{checklist}/items:
|
|
post:
|
|
operationId: post_board_card_checklist_items
|
|
tags:
|
|
- ChecklistItems
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
- name: checklist
|
|
in: path
|
|
description: the checklist value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}:
|
|
get:
|
|
operationId: get_board_card_checklist_item
|
|
tags:
|
|
- ChecklistItems
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
- name: checklist
|
|
in: path
|
|
description: the checklist value
|
|
type: string
|
|
required: true
|
|
- name: item
|
|
in: path
|
|
description: the item value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
put:
|
|
operationId: put_board_card_checklist_item
|
|
tags:
|
|
- ChecklistItems
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
- name: checklist
|
|
in: path
|
|
description: the checklist value
|
|
type: string
|
|
required: true
|
|
- name: item
|
|
in: path
|
|
description: the item value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
delete:
|
|
operationId: delete_board_card_checklist_item
|
|
tags:
|
|
- ChecklistItems
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
- name: checklist
|
|
in: path
|
|
description: the checklist value
|
|
type: string
|
|
required: true
|
|
- name: item
|
|
in: path
|
|
description: the item value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/cards/{card}/comments:
|
|
get:
|
|
operationId: get_board_card_comments
|
|
tags:
|
|
- CardComments
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
post:
|
|
operationId: post_board_card_comments
|
|
tags:
|
|
- CardComments
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/cards/{card}/comments/{comment}:
|
|
get:
|
|
operationId: get_board_card_comment
|
|
tags:
|
|
- CardComments
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
- name: comment
|
|
in: path
|
|
description: the comment value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
delete:
|
|
operationId: delete_board_card_comment
|
|
tags:
|
|
- CardComments
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
- name: comment
|
|
in: path
|
|
description: the comment value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/cards/bulk:
|
|
delete:
|
|
operationId: delete_board_cards_bulk
|
|
tags:
|
|
- Cards
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/cards/labels:
|
|
post:
|
|
operationId: post_board_cards_labels
|
|
tags:
|
|
- Cards
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: cardIds
|
|
in: formData
|
|
description: the cardIds value
|
|
type: string
|
|
required: true
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/cardsByCustomField/{customField}/{customFieldValue}:
|
|
get:
|
|
operationId: get_board_customFieldValue
|
|
tags:
|
|
- Cards
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: customField
|
|
in: path
|
|
description: the customField value
|
|
type: string
|
|
required: true
|
|
- name: customFieldValue
|
|
in: path
|
|
description: the customFieldValue value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/cards_count:
|
|
get:
|
|
operationId: get_board_cards_count
|
|
tags:
|
|
- Cards
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/copy:
|
|
post:
|
|
operationId: post_board_copy
|
|
tags:
|
|
- Boards
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: title
|
|
in: formData
|
|
description: the title value
|
|
type: string
|
|
required: true
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/custom-fields:
|
|
get:
|
|
operationId: get_board_custom-fields
|
|
tags:
|
|
- CustomFields
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
post:
|
|
operationId: post_board_custom-fields
|
|
tags:
|
|
- CustomFields
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/custom-fields/{customField}:
|
|
get:
|
|
operationId: get_board_customField
|
|
tags:
|
|
- CustomFields
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: customField
|
|
in: path
|
|
description: the customField value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
put:
|
|
operationId: put_board_customField
|
|
tags:
|
|
- CustomFields
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: customField
|
|
in: path
|
|
description: the customField value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
delete:
|
|
operationId: delete_board_customField
|
|
tags:
|
|
- CustomFields
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: customField
|
|
in: path
|
|
description: the customField value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/custom-fields/{customField}/dropdown-items:
|
|
post:
|
|
operationId: post_board_customField_dropdown-items
|
|
tags:
|
|
- CustomFields
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: items
|
|
in: formData
|
|
description: the items value
|
|
type: string
|
|
required: true
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: customField
|
|
in: path
|
|
description: the customField value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/custom-fields/{customField}/dropdown-items/{dropdownItem}:
|
|
put:
|
|
operationId: put_board_customField_dropdownItem
|
|
tags:
|
|
- CustomFields
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: name
|
|
in: formData
|
|
description: the name value
|
|
type: string
|
|
required: true
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: customField
|
|
in: path
|
|
description: the customField value
|
|
type: string
|
|
required: true
|
|
- name: dropdownItem
|
|
in: path
|
|
description: the dropdownItem value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
delete:
|
|
operationId: delete_board_customField_dropdownItem
|
|
tags:
|
|
- CustomFields
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: customField
|
|
in: path
|
|
description: the customField value
|
|
type: string
|
|
required: true
|
|
- name: dropdownItem
|
|
in: path
|
|
description: the dropdownItem value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/export:
|
|
get:
|
|
operationId: exportJson
|
|
summary: This route is used to export the board to a json file format.
|
|
description: |
|
|
If user is already logged-in, pass loginToken as param
|
|
"authToken": '/api/boards/:boardId/export?authToken=:token'
|
|
|
|
See https://blog.kayla.com.au/server-side-route-authentication-in-meteor/
|
|
for detailed explanations
|
|
tags:
|
|
- Boards
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: |
|
|
the ID of the board we are exporting
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/export/csv:
|
|
get:
|
|
operationId: exportCSV/TSV
|
|
summary: This route is used to export the board to a CSV or TSV file format.
|
|
description: |
|
|
If user is already logged-in, pass loginToken as param
|
|
|
|
See https://blog.kayla.com.au/server-side-route-authentication-in-meteor/
|
|
for detailed explanations
|
|
tags:
|
|
- Boards
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: |
|
|
the ID of the board we are exporting
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/exportExcel:
|
|
get:
|
|
operationId: exportExcel
|
|
summary: This route is used to export the board Excel.
|
|
description: |
|
|
If user is already logged-in, pass loginToken as param
|
|
"authToken": '/api/boards/:boardId/exportExcel?authToken=:token'
|
|
|
|
See https://blog.kayla.com.au/server-side-route-authentication-in-meteor/
|
|
for detailed explanations
|
|
tags:
|
|
- Boards
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: |
|
|
the ID of the board we are exporting
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/integrations:
|
|
get:
|
|
operationId: get_board_integrations
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
post:
|
|
operationId: post_board_integrations
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/integrations/{int}:
|
|
get:
|
|
operationId: get_board_int
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: int
|
|
in: path
|
|
description: the int value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
put:
|
|
operationId: put_board_int
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: int
|
|
in: path
|
|
description: the int value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
delete:
|
|
operationId: delete_board_int
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: int
|
|
in: path
|
|
description: the int value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/integrations/{int}/activities:
|
|
delete:
|
|
operationId: delete_board_int_activities
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: int
|
|
in: path
|
|
description: the int value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
post:
|
|
operationId: post_board_int_activities
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: activities
|
|
in: formData
|
|
description: the activities value
|
|
type: string
|
|
required: true
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: int
|
|
in: path
|
|
description: the int value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/labels:
|
|
put:
|
|
operationId: put_board_labels
|
|
tags:
|
|
- Boards
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: label
|
|
in: formData
|
|
description: the label value
|
|
type: string
|
|
required: true
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/lists:
|
|
get:
|
|
operationId: get_board_lists
|
|
tags:
|
|
- Lists
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
post:
|
|
operationId: post_board_lists
|
|
tags:
|
|
- Lists
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/lists/{list}:
|
|
get:
|
|
operationId: get_board_list
|
|
tags:
|
|
- Lists
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: list
|
|
in: path
|
|
description: the list value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
put:
|
|
operationId: put_board_list
|
|
tags:
|
|
- Lists
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: title
|
|
in: formData
|
|
description: the title value
|
|
type: string
|
|
required: true
|
|
- name: color
|
|
in: formData
|
|
description: the color value
|
|
type: string
|
|
required: true
|
|
- name: wipLimit
|
|
in: formData
|
|
description: the wipLimit value
|
|
type: string
|
|
required: true
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: list
|
|
in: path
|
|
description: the list value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
delete:
|
|
operationId: delete_board_list
|
|
tags:
|
|
- Lists
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: list
|
|
in: path
|
|
description: the list value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/lists/{list}/cards:
|
|
get:
|
|
operationId: get_board_list_cards
|
|
tags:
|
|
- Cards
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: list
|
|
in: path
|
|
description: the list value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
post:
|
|
operationId: post_board_list_cards
|
|
tags:
|
|
- Cards
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: linkedId
|
|
in: formData
|
|
description: the linkedId value
|
|
type: string
|
|
required: true
|
|
- name: members
|
|
in: formData
|
|
description: the members value
|
|
type: string
|
|
required: true
|
|
- name: assignees
|
|
in: formData
|
|
description: the assignees value
|
|
type: string
|
|
required: true
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: list
|
|
in: path
|
|
description: the list value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/lists/{list}/cards/{card}:
|
|
get:
|
|
operationId: get_board_list_card
|
|
tags:
|
|
- Cards
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: list
|
|
in: path
|
|
description: the list value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
put:
|
|
operationId: put_board_list_card
|
|
tags:
|
|
- Cards
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: newBoardId
|
|
in: formData
|
|
description: the newBoardId value
|
|
type: string
|
|
required: true
|
|
- name: newSwimlaneId
|
|
in: formData
|
|
description: the newSwimlaneId value
|
|
type: string
|
|
required: true
|
|
- name: newListId
|
|
in: formData
|
|
description: the newListId value
|
|
type: string
|
|
required: true
|
|
- name: title
|
|
in: formData
|
|
description: the title value
|
|
type: string
|
|
required: true
|
|
- name: sort
|
|
in: formData
|
|
description: the sort value
|
|
type: string
|
|
required: true
|
|
- name: parentId
|
|
in: formData
|
|
description: the parentId value
|
|
type: string
|
|
required: true
|
|
- name: description
|
|
in: formData
|
|
description: the description value
|
|
type: string
|
|
required: true
|
|
- name: color
|
|
in: formData
|
|
description: the color value
|
|
type: string
|
|
required: true
|
|
- name: vote
|
|
in: formData
|
|
description: the vote value
|
|
type: string
|
|
required: true
|
|
- name: poker
|
|
in: formData
|
|
description: the poker value
|
|
type: string
|
|
required: true
|
|
- name: labelIds
|
|
in: formData
|
|
description: the labelIds value
|
|
type: string
|
|
required: true
|
|
- name: requestedBy
|
|
in: formData
|
|
description: the requestedBy value
|
|
type: string
|
|
required: true
|
|
- name: assignedBy
|
|
in: formData
|
|
description: the assignedBy value
|
|
type: string
|
|
required: true
|
|
- name: spentTime
|
|
in: formData
|
|
description: the spentTime value
|
|
type: string
|
|
required: true
|
|
- name: isOverTime
|
|
in: formData
|
|
description: the isOverTime value
|
|
type: string
|
|
required: true
|
|
- name: customFields
|
|
in: formData
|
|
description: the customFields value
|
|
type: string
|
|
required: true
|
|
- name: members
|
|
in: formData
|
|
description: the members value
|
|
type: string
|
|
required: true
|
|
- name: assignees
|
|
in: formData
|
|
description: the assignees value
|
|
type: string
|
|
required: true
|
|
- name: swimlaneId
|
|
in: formData
|
|
description: the swimlaneId value
|
|
type: string
|
|
required: true
|
|
- name: listId
|
|
in: formData
|
|
description: the listId value
|
|
type: string
|
|
required: true
|
|
- name: archive
|
|
in: formData
|
|
description: the archive value
|
|
type: string
|
|
required: true
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: list
|
|
in: path
|
|
description: the list value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
delete:
|
|
operationId: delete_board_list_card
|
|
tags:
|
|
- Cards
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: list
|
|
in: path
|
|
description: the list value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/lists/{list}/cards/{card}/archive:
|
|
post:
|
|
operationId: post_board_list_card_archive
|
|
tags:
|
|
- Cards
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: list
|
|
in: path
|
|
description: the list value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/lists/{list}/cards/{card}/assignees/{assignee}:
|
|
post:
|
|
operationId: post_board_list_card_assignee
|
|
tags:
|
|
- Cards
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: list
|
|
in: path
|
|
description: the list value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
- name: assignee
|
|
in: path
|
|
description: the assignee value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
delete:
|
|
operationId: delete_board_list_card_assignee
|
|
tags:
|
|
- Cards
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: list
|
|
in: path
|
|
description: the list value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
- name: assignee
|
|
in: path
|
|
description: the assignee value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/lists/{list}/cards/{card}/copy:
|
|
post:
|
|
operationId: post_board_list_card_copy
|
|
tags:
|
|
- Cards
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: toBoardId
|
|
in: formData
|
|
description: the toBoardId value
|
|
type: string
|
|
required: true
|
|
- name: toSwimlaneId
|
|
in: formData
|
|
description: the toSwimlaneId value
|
|
type: string
|
|
required: true
|
|
- name: toListId
|
|
in: formData
|
|
description: the toListId value
|
|
type: string
|
|
required: true
|
|
- name: position
|
|
in: formData
|
|
description: the position value
|
|
type: string
|
|
required: true
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: list
|
|
in: path
|
|
description: the list value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/lists/{list}/cards/{card}/customFields/{customField}:
|
|
post:
|
|
operationId: post_board_list_card_customField
|
|
tags:
|
|
- Cards
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: value
|
|
in: formData
|
|
description: the value value
|
|
type: string
|
|
required: true
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: list
|
|
in: path
|
|
description: the list value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
- name: customField
|
|
in: path
|
|
description: the customField value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/lists/{list}/cards/{card}/exportExcel:
|
|
get:
|
|
operationId: exportExcelCard
|
|
summary: Export a single card to Excel (.xlsx), formatted for DIN A4 Portrait printing.
|
|
description: |
|
|
If user is already logged-in, pass loginToken as param
|
|
"authToken": '/api/boards/:boardId/lists/:listId/cards/:cardId/exportExcel?authToken=:token'
|
|
|
|
Optional query param "fields" is a comma-separated list of sections to include.
|
|
Valid values: people, board-info, dates, description, checklists, subtasks, comments
|
|
Omitting "fields" includes all sections.
|
|
tags:
|
|
- Cards
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: |
|
|
the ID of the board
|
|
type: string
|
|
required: true
|
|
- name: list
|
|
in: path
|
|
description: |
|
|
the ID of the list
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: |
|
|
the ID of the card to export
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/lists/{list}/cards/{card}/exportPDF:
|
|
get:
|
|
operationId: exportExcel
|
|
summary: This route is used to export the board Excel.
|
|
description: |
|
|
If user is already logged-in, pass loginToken as param
|
|
"authToken": '/api/boards/:boardId/exportExcel?authToken=:token'
|
|
|
|
See https://blog.kayla.com.au/server-side-route-authentication-in-meteor/
|
|
for detailed explanations
|
|
tags:
|
|
- Boards
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: |
|
|
the ID of the board we are exporting
|
|
type: string
|
|
required: true
|
|
- name: list
|
|
in: path
|
|
description: the list value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/lists/{list}/cards/{card}/members/{member}:
|
|
post:
|
|
operationId: post_board_list_card_member
|
|
tags:
|
|
- Cards
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: list
|
|
in: path
|
|
description: the list value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
- name: member
|
|
in: path
|
|
description: the member value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
delete:
|
|
operationId: delete_board_list_card_member
|
|
tags:
|
|
- Cards
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: list
|
|
in: path
|
|
description: the list value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
- name: member
|
|
in: path
|
|
description: the member value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/lists/{list}/cards/{card}/unarchive:
|
|
post:
|
|
operationId: post_board_list_card_unarchive
|
|
tags:
|
|
- Cards
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: list
|
|
in: path
|
|
description: the list value
|
|
type: string
|
|
required: true
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/lists/{list}/cards/bulk:
|
|
post:
|
|
operationId: post_board_list_cards_bulk
|
|
tags:
|
|
- Cards
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: cards
|
|
in: formData
|
|
description: the cards value
|
|
type: string
|
|
required: true
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: list
|
|
in: path
|
|
description: the list value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/lists/{list}/cards_count:
|
|
get:
|
|
operationId: get_board_list_cards_count
|
|
tags:
|
|
- Cards
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: list
|
|
in: path
|
|
description: the list value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/lists/{list}/copy:
|
|
post:
|
|
operationId: post_board_list_copy
|
|
tags:
|
|
- Lists
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: toBoardId
|
|
in: formData
|
|
description: the toBoardId value
|
|
type: string
|
|
required: true
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: list
|
|
in: path
|
|
description: the list value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/lists/{list}/move:
|
|
post:
|
|
operationId: post_board_list_move
|
|
tags:
|
|
- Lists
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: toBoardId
|
|
in: formData
|
|
description: the toBoardId value
|
|
type: string
|
|
required: true
|
|
- name: toSwimlaneId
|
|
in: formData
|
|
description: the toSwimlaneId value
|
|
type: string
|
|
required: true
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: list
|
|
in: path
|
|
description: the list value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/members/{member}:
|
|
post:
|
|
operationId: post_board_member
|
|
tags:
|
|
- Boards
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: role
|
|
in: formData
|
|
description: the role value
|
|
type: string
|
|
required: true
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: member
|
|
in: path
|
|
description: the member value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/members/{user}/add:
|
|
post:
|
|
operationId: post_board_user_add
|
|
tags:
|
|
- Users
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: action
|
|
in: formData
|
|
description: the action value
|
|
type: string
|
|
required: true
|
|
- name: role
|
|
in: formData
|
|
description: the role value
|
|
type: string
|
|
required: true
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: user
|
|
in: path
|
|
description: the user value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/members/{user}/remove:
|
|
post:
|
|
operationId: post_board_user_remove
|
|
tags:
|
|
- Users
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: action
|
|
in: formData
|
|
description: the action value
|
|
type: string
|
|
required: true
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: user
|
|
in: path
|
|
description: the user value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/swimlanes:
|
|
get:
|
|
operationId: get_board_swimlanes
|
|
tags:
|
|
- Swimlanes
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
post:
|
|
operationId: post_board_swimlanes
|
|
tags:
|
|
- Swimlanes
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/swimlanes/{swimlane}:
|
|
get:
|
|
operationId: get_board_swimlane
|
|
tags:
|
|
- Swimlanes
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: swimlane
|
|
in: path
|
|
description: the swimlane value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
put:
|
|
operationId: put_board_swimlane
|
|
tags:
|
|
- Swimlanes
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: swimlane
|
|
in: path
|
|
description: the swimlane value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
delete:
|
|
operationId: delete_board_swimlane
|
|
tags:
|
|
- Swimlanes
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: swimlane
|
|
in: path
|
|
description: the swimlane value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/swimlanes/{swimlane}/cards:
|
|
get:
|
|
operationId: get_board_swimlane_cards
|
|
tags:
|
|
- Cards
|
|
parameters:
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: swimlane
|
|
in: path
|
|
description: the swimlane value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/swimlanes/{swimlane}/copy:
|
|
post:
|
|
operationId: post_board_swimlane_copy
|
|
tags:
|
|
- Swimlanes
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: toBoardId
|
|
in: formData
|
|
description: the toBoardId value
|
|
type: string
|
|
required: true
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: swimlane
|
|
in: path
|
|
description: the swimlane value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/swimlanes/{swimlane}/move:
|
|
post:
|
|
operationId: post_board_swimlane_move
|
|
tags:
|
|
- Swimlanes
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: toBoardId
|
|
in: formData
|
|
description: the toBoardId value
|
|
type: string
|
|
required: true
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
- name: swimlane
|
|
in: path
|
|
description: the swimlane value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards/{board}/title:
|
|
put:
|
|
operationId: put_board_title
|
|
tags:
|
|
- Boards
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: title
|
|
in: formData
|
|
description: the title value
|
|
type: string
|
|
required: true
|
|
- name: board
|
|
in: path
|
|
description: the board value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/boards_count:
|
|
get:
|
|
operationId: get_boards_count
|
|
tags:
|
|
- Boards
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/cards/{card}:
|
|
get:
|
|
operationId: get_card
|
|
tags:
|
|
- Cards
|
|
parameters:
|
|
- name: card
|
|
in: path
|
|
description: the card value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/createtoken/{user}:
|
|
post:
|
|
operationId: post_user
|
|
tags:
|
|
- Users
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: the user value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/deletetoken:
|
|
post:
|
|
operationId: post_deletetoken
|
|
tags:
|
|
- Users
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: userId
|
|
in: formData
|
|
description: the userId value
|
|
type: string
|
|
required: true
|
|
- name: token
|
|
in: formData
|
|
description: the token value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/user:
|
|
get:
|
|
operationId: get_user
|
|
tags:
|
|
- Users
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/user/cards:
|
|
get:
|
|
operationId: get_user_cards
|
|
tags:
|
|
- Cards
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/users:
|
|
get:
|
|
operationId: get_users
|
|
tags:
|
|
- Users
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
post:
|
|
operationId: post_users
|
|
tags:
|
|
- Users
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: username
|
|
in: formData
|
|
description: the username value
|
|
type: string
|
|
required: true
|
|
- name: email
|
|
in: formData
|
|
description: the email value
|
|
type: string
|
|
required: true
|
|
- name: password
|
|
in: formData
|
|
description: the password value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/users/{user}:
|
|
get:
|
|
operationId: get_user
|
|
tags:
|
|
- Users
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: the user value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
put:
|
|
operationId: put_user
|
|
tags:
|
|
- Users
|
|
consumes:
|
|
- multipart/form-data
|
|
- application/json
|
|
parameters:
|
|
- name: action
|
|
in: formData
|
|
description: the action value
|
|
type: string
|
|
required: true
|
|
- name: user
|
|
in: path
|
|
description: the user value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
delete:
|
|
operationId: delete_user
|
|
tags:
|
|
- Users
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: the user value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
/api/users/{user}/boards:
|
|
get:
|
|
operationId: get_user_boards
|
|
tags:
|
|
- Boards
|
|
parameters:
|
|
- name: user
|
|
in: path
|
|
description: the user value
|
|
type: string
|
|
required: true
|
|
produces:
|
|
- application/json
|
|
security:
|
|
- UserSecurity: []
|
|
responses:
|
|
'200':
|
|
description: |-
|
|
200 response
|
|
# ───────────────────────────────────────────────────────────────────────────
|
|
# Attachment / file API (server/routes/attachmentApi.js)
|
|
#
|
|
# These endpoints are registered with `WebApp.handlers.use('/api/attachment/...')`
|
|
# rather than the `WebApp.handlers.get/post/put/delete(...)` form, so they are
|
|
# not auto-discovered by openapi/generate_openapi.py and are documented here by
|
|
# hand. Keep this file in sync with server/routes/attachmentApi.js.
|
|
#
|
|
# Authentication: send the login token in the `Authorization: Bearer <token>`
|
|
# header (same UserSecurity scheme as the rest of the API). The legacy
|
|
# `X-User-Id` + `X-Auth-Token` header pair is also accepted.
|
|
#
|
|
# Permissions: read operations (download, list, info) require active membership
|
|
# of the board. Write operations (upload, copy, move, delete) require write
|
|
# access to the board — active members who are read-only, comment-only,
|
|
# no-comments, worker or assigned-only are rejected; global site admins are
|
|
# always allowed. Upload/copy additionally require the board to allow
|
|
# attachments, and honour the admin API transfer limits (apiUpload*/apiDownload*).
|
|
# ───────────────────────────────────────────────────────────────────────────
|
|
/api/attachment/upload:
|
|
post:
|
|
operationId: upload_attachment
|
|
summary: Upload a file as a card attachment
|
|
description: |
|
|
Upload a file to a card. The file content is sent base64-encoded in the
|
|
JSON body. The maximum size is bounded by the admin Attachment Storage
|
|
Settings (`apiUploadMaxBytes`) and a hard server safety cap (64 MB).
|
|
|
|
Permissions: requires a valid auth token, write access to the target
|
|
board (read-only / comment-only / worker members are rejected), and the
|
|
board must allow attachments.
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- application/json
|
|
tags:
|
|
- Attachments
|
|
security:
|
|
- UserSecurity: []
|
|
parameters:
|
|
- name: body
|
|
in: body
|
|
required: true
|
|
schema:
|
|
type: object
|
|
required:
|
|
- boardId
|
|
- swimlaneId
|
|
- listId
|
|
- cardId
|
|
- fileData
|
|
- fileName
|
|
properties:
|
|
boardId:
|
|
type: string
|
|
description: ID of the board the card belongs to
|
|
swimlaneId:
|
|
type: string
|
|
description: ID of the card's swimlane (must match the card)
|
|
listId:
|
|
type: string
|
|
description: ID of the card's list (must match the card)
|
|
cardId:
|
|
type: string
|
|
description: ID of the card to attach the file to
|
|
fileName:
|
|
type: string
|
|
description: Name to store the file under
|
|
fileType:
|
|
type: string
|
|
description: MIME type of the file (optional)
|
|
fileData:
|
|
type: string
|
|
description: Base64-encoded file contents
|
|
responses:
|
|
'200':
|
|
description: Attachment uploaded successfully
|
|
'400':
|
|
description: Missing/invalid parameters or card/board/list/swimlane mismatch
|
|
'401':
|
|
description: Missing or invalid authentication
|
|
'403':
|
|
description: Uploads disabled, not a board member, or attachments not allowed on this board
|
|
'404':
|
|
description: Card or board not found
|
|
'413':
|
|
description: Attachment exceeds the API upload limit
|
|
/api/attachment/download/{attachmentId}:
|
|
get:
|
|
operationId: download_attachment
|
|
summary: Download an attachment as base64
|
|
description: |
|
|
Returns the attachment metadata together with the file contents
|
|
base64-encoded in `base64Data`. The maximum size is bounded by the admin
|
|
Attachment Storage Settings (`apiDownloadMaxBytes`).
|
|
|
|
Permissions: requires active membership of the attachment's board.
|
|
produces:
|
|
- application/json
|
|
tags:
|
|
- Attachments
|
|
security:
|
|
- UserSecurity: []
|
|
parameters:
|
|
- name: attachmentId
|
|
in: path
|
|
required: true
|
|
type: string
|
|
description: ID of the attachment to download
|
|
responses:
|
|
'200':
|
|
description: Attachment contents returned (base64Data)
|
|
'401':
|
|
description: Missing or invalid authentication
|
|
'403':
|
|
description: Downloads disabled, or not a member of the attachment's board
|
|
'404':
|
|
description: Attachment or stored file not found
|
|
'413':
|
|
description: Attachment exceeds the API download limit
|
|
/api/attachment/info/{attachmentId}:
|
|
get:
|
|
operationId: get_attachment_info
|
|
summary: Get attachment metadata
|
|
description: |
|
|
Returns attachment metadata (name, size, type, storage backend, board /
|
|
swimlane / list / card IDs and available versions) without the file
|
|
contents.
|
|
|
|
Permissions: requires active membership of the attachment's board.
|
|
produces:
|
|
- application/json
|
|
tags:
|
|
- Attachments
|
|
security:
|
|
- UserSecurity: []
|
|
parameters:
|
|
- name: attachmentId
|
|
in: path
|
|
required: true
|
|
type: string
|
|
description: ID of the attachment
|
|
responses:
|
|
'200':
|
|
description: Attachment metadata returned
|
|
'401':
|
|
description: Missing or invalid authentication
|
|
'403':
|
|
description: Not a member of the attachment's board
|
|
'404':
|
|
description: Attachment not found
|
|
/api/attachment/list/{boardId}:
|
|
get:
|
|
operationId: list_board_attachments
|
|
summary: List all attachments of a board
|
|
description: |
|
|
List every attachment on a board. Use the swimlane / list / card
|
|
variants of this path to narrow the result.
|
|
|
|
Permissions: requires active membership of the board.
|
|
produces:
|
|
- application/json
|
|
tags:
|
|
- Attachments
|
|
security:
|
|
- UserSecurity: []
|
|
parameters:
|
|
- name: boardId
|
|
in: path
|
|
required: true
|
|
type: string
|
|
description: ID of the board
|
|
responses:
|
|
'200':
|
|
description: List of attachments with metadata
|
|
'401':
|
|
description: Missing or invalid authentication
|
|
'403':
|
|
description: Not a member of the board
|
|
/api/attachment/list/{boardId}/{swimlaneId}:
|
|
get:
|
|
operationId: list_swimlane_attachments
|
|
summary: List attachments of a board filtered by swimlane
|
|
produces:
|
|
- application/json
|
|
tags:
|
|
- Attachments
|
|
security:
|
|
- UserSecurity: []
|
|
parameters:
|
|
- name: boardId
|
|
in: path
|
|
required: true
|
|
type: string
|
|
- name: swimlaneId
|
|
in: path
|
|
required: true
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: List of attachments with metadata
|
|
'401':
|
|
description: Missing or invalid authentication
|
|
'403':
|
|
description: Not a member of the board
|
|
/api/attachment/list/{boardId}/{swimlaneId}/{listId}:
|
|
get:
|
|
operationId: list_list_attachments
|
|
summary: List attachments of a board filtered by swimlane and list
|
|
produces:
|
|
- application/json
|
|
tags:
|
|
- Attachments
|
|
security:
|
|
- UserSecurity: []
|
|
parameters:
|
|
- name: boardId
|
|
in: path
|
|
required: true
|
|
type: string
|
|
- name: swimlaneId
|
|
in: path
|
|
required: true
|
|
type: string
|
|
- name: listId
|
|
in: path
|
|
required: true
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: List of attachments with metadata
|
|
'401':
|
|
description: Missing or invalid authentication
|
|
'403':
|
|
description: Not a member of the board
|
|
/api/attachment/list/{boardId}/{swimlaneId}/{listId}/{cardId}:
|
|
get:
|
|
operationId: list_card_attachments
|
|
summary: List attachments of a single card
|
|
description: |
|
|
List attachments filtered down to one card. The card must belong to the
|
|
given board.
|
|
|
|
Permissions: requires active membership of the board.
|
|
produces:
|
|
- application/json
|
|
tags:
|
|
- Attachments
|
|
security:
|
|
- UserSecurity: []
|
|
parameters:
|
|
- name: boardId
|
|
in: path
|
|
required: true
|
|
type: string
|
|
- name: swimlaneId
|
|
in: path
|
|
required: true
|
|
type: string
|
|
- name: listId
|
|
in: path
|
|
required: true
|
|
type: string
|
|
- name: cardId
|
|
in: path
|
|
required: true
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: List of attachments with metadata
|
|
'401':
|
|
description: Missing or invalid authentication
|
|
'403':
|
|
description: Not a member of the board
|
|
'404':
|
|
description: Card not found or does not belong to the board
|
|
/api/attachment/copy:
|
|
post:
|
|
operationId: copy_attachment
|
|
summary: Copy an attachment to another card
|
|
description: |
|
|
Copy an existing attachment to a target card, creating a new attachment.
|
|
|
|
Permissions: requires membership of the source board (to read it) and
|
|
write access to the target board, which must allow attachments. Honours
|
|
the admin API upload limits.
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- application/json
|
|
tags:
|
|
- Attachments
|
|
security:
|
|
- UserSecurity: []
|
|
parameters:
|
|
- name: body
|
|
in: body
|
|
required: true
|
|
schema:
|
|
type: object
|
|
required:
|
|
- attachmentId
|
|
- targetBoardId
|
|
- targetSwimlaneId
|
|
- targetListId
|
|
- targetCardId
|
|
properties:
|
|
attachmentId:
|
|
type: string
|
|
description: ID of the source attachment
|
|
targetBoardId:
|
|
type: string
|
|
targetSwimlaneId:
|
|
type: string
|
|
targetListId:
|
|
type: string
|
|
targetCardId:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Attachment copied (newAttachmentId returned)
|
|
'400':
|
|
description: Target card/board/list/swimlane mismatch
|
|
'401':
|
|
description: Missing or invalid authentication
|
|
'403':
|
|
description: Not a member of source or target board, or attachments not allowed
|
|
'404':
|
|
description: Source attachment, target card, or stored file not found
|
|
/api/attachment/move:
|
|
post:
|
|
operationId: move_attachment
|
|
summary: Move an attachment to another card
|
|
description: |
|
|
Move an existing attachment to a target card by updating its metadata.
|
|
|
|
Permissions: requires write access to both the source board (the
|
|
attachment is removed from it) and the target board, which must allow
|
|
attachments.
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- application/json
|
|
tags:
|
|
- Attachments
|
|
security:
|
|
- UserSecurity: []
|
|
parameters:
|
|
- name: body
|
|
in: body
|
|
required: true
|
|
schema:
|
|
type: object
|
|
required:
|
|
- attachmentId
|
|
- targetBoardId
|
|
- targetSwimlaneId
|
|
- targetListId
|
|
- targetCardId
|
|
properties:
|
|
attachmentId:
|
|
type: string
|
|
description: ID of the attachment to move
|
|
targetBoardId:
|
|
type: string
|
|
targetSwimlaneId:
|
|
type: string
|
|
targetListId:
|
|
type: string
|
|
targetCardId:
|
|
type: string
|
|
responses:
|
|
'200':
|
|
description: Attachment moved
|
|
'400':
|
|
description: Target card/board/list/swimlane mismatch
|
|
'401':
|
|
description: Missing or invalid authentication
|
|
'403':
|
|
description: Not a member of source or target board, or attachments not allowed
|
|
'404':
|
|
description: Source attachment or target card not found
|
|
/api/attachment/delete/{attachmentId}:
|
|
delete:
|
|
operationId: delete_attachment
|
|
summary: Delete an attachment
|
|
description: |
|
|
Delete an attachment.
|
|
|
|
Permissions: requires write access to the attachment's board (read-only /
|
|
comment-only / worker members are rejected).
|
|
produces:
|
|
- application/json
|
|
tags:
|
|
- Attachments
|
|
security:
|
|
- UserSecurity: []
|
|
parameters:
|
|
- name: attachmentId
|
|
in: path
|
|
required: true
|
|
type: string
|
|
description: ID of the attachment to delete
|
|
responses:
|
|
'200':
|
|
description: Attachment deleted
|
|
'401':
|
|
description: Missing or invalid authentication
|
|
'403':
|
|
description: Not a member of the attachment's board
|
|
'404':
|
|
description: Attachment not found
|
|
definitions:
|
|
Boards:
|
|
type: object
|
|
description: This is a Board.
|
|
properties:
|
|
title:
|
|
description: |
|
|
The title of the board
|
|
type: string
|
|
slug:
|
|
description: |
|
|
The title slugified.
|
|
type: string
|
|
archived:
|
|
description: |
|
|
Is the board archived?
|
|
type: boolean
|
|
archivedAt:
|
|
description: |
|
|
Latest archiving time of the board
|
|
type: string
|
|
x-nullable: true
|
|
createdAt:
|
|
description: |
|
|
Creation time of the board
|
|
type: string
|
|
modifiedAt:
|
|
description: |
|
|
Last modification time of the board
|
|
type: string
|
|
x-nullable: true
|
|
stars:
|
|
description: |
|
|
How many stars the board has
|
|
type: number
|
|
labels:
|
|
description: |
|
|
List of labels attached to a board
|
|
type: array
|
|
items:
|
|
$ref: "#/definitions/BoardsLabels"
|
|
x-nullable: true
|
|
members:
|
|
description: |
|
|
List of members of a board
|
|
type: array
|
|
items:
|
|
$ref: "#/definitions/BoardsMembers"
|
|
permission:
|
|
description: |
|
|
visibility of the board
|
|
type: string
|
|
enum:
|
|
- public
|
|
- private
|
|
orgs:
|
|
description: |
|
|
the list of organizations that a board belongs to
|
|
type: array
|
|
items:
|
|
$ref: "#/definitions/BoardsOrgs"
|
|
x-nullable: true
|
|
teams:
|
|
description: |
|
|
the list of teams that a board belongs to
|
|
type: array
|
|
items:
|
|
$ref: "#/definitions/BoardsTeams"
|
|
x-nullable: true
|
|
importUsernames:
|
|
description: |
|
|
Usernames of imported (e.g. Trello) board members that were not mapped
|
|
to an existing WeKan user during import. Kept so an admin can map them
|
|
to real users later (People panel -> user -> Imported Usernames), after
|
|
which future imports of this board auto-map.
|
|
type: array
|
|
items:
|
|
type: string
|
|
x-nullable: true
|
|
x-nullable: true
|
|
color:
|
|
description: |
|
|
The color of the board.
|
|
type: string
|
|
enum:
|
|
backgroundImageURL:
|
|
description: |
|
|
The background image URL of the board.
|
|
type: string
|
|
x-nullable: true
|
|
backgroundImageId:
|
|
description: |
|
|
The id of the active board background attachment (a board-level
|
|
Attachment with meta.source === 'board-background'), when the active
|
|
background is an uploaded/imported image rather than an external URL.
|
|
type: string
|
|
x-nullable: true
|
|
allowsCardCounterList:
|
|
description: |
|
|
Show card counter per list
|
|
type: boolean
|
|
allowsBoardMemberList:
|
|
description: |
|
|
Show board member list
|
|
type: boolean
|
|
description:
|
|
description: |
|
|
The description of the board
|
|
type: string
|
|
x-nullable: true
|
|
subtasksDefaultBoardId:
|
|
description: |
|
|
The default board ID assigned to subtasks.
|
|
type: string
|
|
x-nullable: true
|
|
migrationVersion:
|
|
description: |
|
|
The migration version of the board structure.
|
|
New boards are created with the latest version and don't need migration.
|
|
type: number
|
|
subtasksDefaultListId:
|
|
description: |
|
|
The default List ID assigned to subtasks.
|
|
type: string
|
|
x-nullable: true
|
|
dateSettingsDefaultBoardId:
|
|
type: string
|
|
x-nullable: true
|
|
dateSettingsDefaultListId:
|
|
type: string
|
|
x-nullable: true
|
|
allowsSubtasks:
|
|
description: |
|
|
Does the board allows subtasks?
|
|
type: boolean
|
|
allowsSubtasksOnMinicard:
|
|
description: |
|
|
Does the board allows subtasks on minicard?
|
|
type: boolean
|
|
allowsAttachments:
|
|
description: |
|
|
Does the board allows attachments?
|
|
type: boolean
|
|
allowsAttachmentsOnMinicard:
|
|
description: |
|
|
Does the board allows attachments on minicard?
|
|
type: boolean
|
|
allowsChecklists:
|
|
description: |
|
|
Does the board allows checklists?
|
|
type: boolean
|
|
allowsChecklistsOnMinicard:
|
|
description: |
|
|
Does the board allows checklists on minicard?
|
|
type: boolean
|
|
allowsComments:
|
|
description: |
|
|
Does the board allows comments?
|
|
type: boolean
|
|
allowsDescriptionTitle:
|
|
description: |
|
|
Does the board allows description title?
|
|
type: boolean
|
|
allowsDescriptionTitleOnMinicard:
|
|
description: |
|
|
Does the board allows description title on minicard?
|
|
type: boolean
|
|
allowsDescriptionText:
|
|
description: |
|
|
Does the board allows description text?
|
|
type: boolean
|
|
allowsDescriptionTextOnMinicard:
|
|
description: |
|
|
Does the board allows description text on minicard?
|
|
type: boolean
|
|
allowsCoverAttachmentOnMinicard:
|
|
description: |
|
|
Does the board allows cover attachment on minicard?
|
|
type: boolean
|
|
allowsBadgeAttachmentOnMinicard:
|
|
description: |
|
|
Does the board allows badge attachment on minicard?
|
|
type: boolean
|
|
allowsCardSortingByNumberOnMinicard:
|
|
description: |
|
|
Does the board allows card sorting by number on minicard?
|
|
type: boolean
|
|
allowsCardNumber:
|
|
description: |
|
|
Does the board allows card numbers?
|
|
type: boolean
|
|
allowsCardNumberOnMinicard:
|
|
description: |
|
|
Does the board allows card numbers on minicard?
|
|
type: boolean
|
|
allowsActivities:
|
|
description: |
|
|
Does the board allows comments?
|
|
type: boolean
|
|
allowsLabels:
|
|
description: |
|
|
Does the board allows labels?
|
|
type: boolean
|
|
allowsLabelsOnMinicard:
|
|
description: |
|
|
Does the board allows labels on minicard?
|
|
type: boolean
|
|
allowsCreator:
|
|
description: |
|
|
Does the board allow creator?
|
|
type: boolean
|
|
allowsCreatorOnMinicard:
|
|
description: |
|
|
Does the board allow creator?
|
|
type: boolean
|
|
allowsAssignee:
|
|
description: |
|
|
Does the board allows assignee?
|
|
type: boolean
|
|
allowsAssigneeOnMinicard:
|
|
description: |
|
|
Does the board allows assignee on minicard?
|
|
type: boolean
|
|
allowsMembers:
|
|
description: |
|
|
Does the board allows members?
|
|
type: boolean
|
|
allowsMembersOnMinicard:
|
|
description: |
|
|
Does the board allows members on minicard?
|
|
type: boolean
|
|
allowsRequestedBy:
|
|
description: |
|
|
Does the board allows requested by?
|
|
type: boolean
|
|
allowsRequestedByOnMinicard:
|
|
description: |
|
|
Does the board allows requested by on minicard?
|
|
type: boolean
|
|
allowsCardSortingByNumber:
|
|
description: |
|
|
Does the board allows card sorting by number?
|
|
type: boolean
|
|
allowsShowLists:
|
|
description: |
|
|
Does the board allows show lists on the card?
|
|
type: boolean
|
|
allowsAssignedBy:
|
|
description: |
|
|
Does the board allows requested by?
|
|
type: boolean
|
|
allowsAssignedByOnMinicard:
|
|
description: |
|
|
Does the board allows requested by on minicard?
|
|
type: boolean
|
|
allowsShowListsOnMinicard:
|
|
description: |
|
|
Does the board allow showing list names on all minicards?
|
|
type: boolean
|
|
allowsChecklistAtMinicard:
|
|
description: |
|
|
Does the board allow showing checklists on all minicards?
|
|
type: boolean
|
|
allowsReceivedDate:
|
|
description: |
|
|
Does the board allows received date?
|
|
type: boolean
|
|
allowsReceivedDateOnMinicard:
|
|
description: |
|
|
Does the board allows received date on minicard?
|
|
type: boolean
|
|
allowsStartDate:
|
|
description: |
|
|
Does the board allows start date?
|
|
type: boolean
|
|
allowsStartDateOnMinicard:
|
|
description: |
|
|
Does the board allows start date on minicard?
|
|
type: boolean
|
|
allowsEndDate:
|
|
description: |
|
|
Does the board allows end date?
|
|
type: boolean
|
|
allowsEndDateOnMinicard:
|
|
description: |
|
|
Does the board allows end date on minicard?
|
|
type: boolean
|
|
allowsDueDate:
|
|
description: |
|
|
Does the board allows due date?
|
|
type: boolean
|
|
allowsDueDateOnMinicard:
|
|
description: |
|
|
Does the board allows due date on minicard?
|
|
type: boolean
|
|
presentParentTask:
|
|
description: |
|
|
Controls how to present the parent task:
|
|
|
|
- `prefix-with-full-path`: add a prefix with the full path
|
|
- `prefix-with-parent`: add a prefisx with the parent name
|
|
- `subtext-with-full-path`: add a subtext with the full path
|
|
- `subtext-with-parent`: add a subtext with the parent name
|
|
- `no-parent`: does not show the parent at all
|
|
type: string
|
|
enum:
|
|
- prefix-with-full-path
|
|
- prefix-with-parent
|
|
- subtext-with-full-path
|
|
- subtext-with-parent
|
|
- no-parent
|
|
x-nullable: true
|
|
receivedAt:
|
|
description: |
|
|
Date the card was received
|
|
type: string
|
|
x-nullable: true
|
|
startAt:
|
|
description: |
|
|
Starting date of the board.
|
|
type: string
|
|
x-nullable: true
|
|
dueAt:
|
|
description: |
|
|
Due date of the board.
|
|
type: string
|
|
x-nullable: true
|
|
endAt:
|
|
description: |
|
|
End date of the board.
|
|
type: string
|
|
x-nullable: true
|
|
spentTime:
|
|
description: |
|
|
Time spent in the board.
|
|
type: number
|
|
x-nullable: true
|
|
isOvertime:
|
|
description: |
|
|
Is the board overtimed?
|
|
type: boolean
|
|
x-nullable: true
|
|
type:
|
|
description: |
|
|
The type of board
|
|
possible values: board, template-board, template-container
|
|
type: string
|
|
enum:
|
|
- board
|
|
- template-board
|
|
- template-container
|
|
sort:
|
|
description: |
|
|
Sort value
|
|
type: number
|
|
showActivities:
|
|
type: boolean
|
|
required:
|
|
- title
|
|
- slug
|
|
- archived
|
|
- createdAt
|
|
- stars
|
|
- members
|
|
- permission
|
|
- color
|
|
- allowsCardCounterList
|
|
- allowsBoardMemberList
|
|
- migrationVersion
|
|
- allowsSubtasks
|
|
- allowsSubtasksOnMinicard
|
|
- allowsAttachments
|
|
- allowsAttachmentsOnMinicard
|
|
- allowsChecklists
|
|
- allowsChecklistsOnMinicard
|
|
- allowsComments
|
|
- allowsDescriptionTitle
|
|
- allowsDescriptionTitleOnMinicard
|
|
- allowsDescriptionText
|
|
- allowsDescriptionTextOnMinicard
|
|
- allowsCoverAttachmentOnMinicard
|
|
- allowsBadgeAttachmentOnMinicard
|
|
- allowsCardSortingByNumberOnMinicard
|
|
- allowsCardNumber
|
|
- allowsCardNumberOnMinicard
|
|
- allowsActivities
|
|
- allowsLabels
|
|
- allowsLabelsOnMinicard
|
|
- allowsCreator
|
|
- allowsCreatorOnMinicard
|
|
- allowsAssignee
|
|
- allowsAssigneeOnMinicard
|
|
- allowsMembers
|
|
- allowsMembersOnMinicard
|
|
- allowsRequestedBy
|
|
- allowsRequestedByOnMinicard
|
|
- allowsCardSortingByNumber
|
|
- allowsShowLists
|
|
- allowsAssignedBy
|
|
- allowsAssignedByOnMinicard
|
|
- allowsShowListsOnMinicard
|
|
- allowsChecklistAtMinicard
|
|
- allowsReceivedDate
|
|
- allowsReceivedDateOnMinicard
|
|
- allowsStartDate
|
|
- allowsStartDateOnMinicard
|
|
- allowsEndDate
|
|
- allowsEndDateOnMinicard
|
|
- allowsDueDate
|
|
- allowsDueDateOnMinicard
|
|
- type
|
|
- sort
|
|
- showActivities
|
|
BoardsLabels:
|
|
type: object
|
|
properties:
|
|
_id:
|
|
description: |
|
|
Unique id of a label
|
|
type: string
|
|
name:
|
|
description: |
|
|
Name of a label
|
|
type: string
|
|
color:
|
|
description: |
|
|
color of a label.
|
|
|
|
Can be amongst `green`, `yellow`, `orange`, `red`, `purple`,
|
|
`blue`, `sky`, `lime`, `pink`, `black`,
|
|
`silver`, `peachpuff`, `crimson`, `plum`, `darkgreen`,
|
|
`slateblue`, `magenta`, `gold`, `navy`, `gray`,
|
|
`saddlebrown`, `paleturquoise`, `mistyrose`, `indigo`
|
|
type: string
|
|
enum:
|
|
required:
|
|
- _id
|
|
- color
|
|
BoardsMembers:
|
|
type: object
|
|
properties:
|
|
userId:
|
|
description: |
|
|
The uniq ID of the member
|
|
type: string
|
|
isAdmin:
|
|
description: |
|
|
Is the member an admin of the board?
|
|
type: boolean
|
|
isActive:
|
|
description: |
|
|
Is the member active?
|
|
type: boolean
|
|
isNoComments:
|
|
description: |
|
|
Is the member not allowed to make comments
|
|
type: boolean
|
|
isCommentOnly:
|
|
description: |
|
|
Is the member only allowed to comment on the board
|
|
type: boolean
|
|
isWorker:
|
|
description: |
|
|
Is the member only allowed to move card, assign himself to card and comment
|
|
type: boolean
|
|
isNormalAssignedOnly:
|
|
description: |
|
|
Is the member only allowed to see assigned cards (Normal permission)
|
|
type: boolean
|
|
isCommentAssignedOnly:
|
|
description: |
|
|
Is the member only allowed to comment on assigned cards
|
|
type: boolean
|
|
isReadOnly:
|
|
description: |
|
|
Is the member only allowed to read the board (no comments, no editing)
|
|
type: boolean
|
|
isReadAssignedOnly:
|
|
description: |
|
|
Is the member only allowed to read assigned cards (no comments, no editing)
|
|
type: boolean
|
|
required:
|
|
- userId
|
|
- isAdmin
|
|
- isActive
|
|
BoardsOrgs:
|
|
type: object
|
|
properties:
|
|
orgId:
|
|
description: |
|
|
The uniq ID of the organization
|
|
type: string
|
|
orgDisplayName:
|
|
description: |
|
|
The display name of the organization
|
|
type: string
|
|
isActive:
|
|
description: |
|
|
Is the organization active?
|
|
type: boolean
|
|
required:
|
|
- orgId
|
|
- orgDisplayName
|
|
- isActive
|
|
BoardsTeams:
|
|
type: object
|
|
properties:
|
|
teamId:
|
|
description: |
|
|
The uniq ID of the team
|
|
type: string
|
|
teamDisplayName:
|
|
description: |
|
|
The display name of the team
|
|
type: string
|
|
isActive:
|
|
description: |
|
|
Is the team active?
|
|
type: boolean
|
|
required:
|
|
- teamId
|
|
- teamDisplayName
|
|
- isActive
|
|
BoardsImportusernames:
|
|
type: object
|
|
CardComments:
|
|
type: object
|
|
description: A comment on a card
|
|
properties:
|
|
boardId:
|
|
description: |
|
|
the board ID
|
|
type: string
|
|
cardId:
|
|
description: |
|
|
the card ID
|
|
type: string
|
|
text:
|
|
description: |
|
|
the text of the comment
|
|
type: string
|
|
createdAt:
|
|
description: |
|
|
when was the comment created
|
|
type: string
|
|
modifiedAt:
|
|
type: string
|
|
userId:
|
|
description: |
|
|
the author ID of the comment
|
|
type: string
|
|
required:
|
|
- boardId
|
|
- cardId
|
|
- text
|
|
- createdAt
|
|
- modifiedAt
|
|
- userId
|
|
Cards:
|
|
type: object
|
|
properties:
|
|
title:
|
|
description: |
|
|
the title of the card
|
|
type: string
|
|
x-nullable: true
|
|
archived:
|
|
description: |
|
|
is the card archived
|
|
type: boolean
|
|
archivedAt:
|
|
description: |
|
|
latest archiving date
|
|
type: string
|
|
x-nullable: true
|
|
parentId:
|
|
description: |
|
|
ID of the parent card
|
|
type: string
|
|
x-nullable: true
|
|
listId:
|
|
description: |
|
|
List ID where the card is
|
|
type: string
|
|
x-nullable: true
|
|
swimlaneId:
|
|
description: |
|
|
Swimlane ID where the card is
|
|
type: string
|
|
boardId:
|
|
description: |
|
|
Board ID of the card
|
|
type: string
|
|
x-nullable: true
|
|
coverId:
|
|
description: |
|
|
Cover ID of the card
|
|
type: string
|
|
x-nullable: true
|
|
color:
|
|
type: string
|
|
enum:
|
|
x-nullable: true
|
|
createdAt:
|
|
description: |
|
|
creation date
|
|
type: string
|
|
modifiedAt:
|
|
type: string
|
|
customFields:
|
|
description: |
|
|
list of custom fields
|
|
type: array
|
|
items:
|
|
$ref: "#/definitions/CardsCustomfields"
|
|
x-nullable: true
|
|
dateLastActivity:
|
|
description: |
|
|
Date of last activity
|
|
type: string
|
|
description:
|
|
description: |
|
|
description of the card
|
|
type: string
|
|
x-nullable: true
|
|
requestedBy:
|
|
description: |
|
|
who requested the card (ID of the user)
|
|
type: string
|
|
x-nullable: true
|
|
assignedBy:
|
|
description: |
|
|
who assigned the card (ID of the user)
|
|
type: string
|
|
x-nullable: true
|
|
labelIds:
|
|
description: |
|
|
list of labels ID the card has
|
|
type: array
|
|
items:
|
|
type: string
|
|
x-nullable: true
|
|
x-nullable: true
|
|
members:
|
|
description: |
|
|
list of members (user IDs)
|
|
type: array
|
|
items:
|
|
type: string
|
|
x-nullable: true
|
|
x-nullable: true
|
|
assignees:
|
|
description: |
|
|
who is assignee of the card (user ID),
|
|
maximum one ID of assignee in array.
|
|
type: array
|
|
items:
|
|
type: string
|
|
x-nullable: true
|
|
x-nullable: true
|
|
receivedAt:
|
|
description: |
|
|
Date the card was received
|
|
type: string
|
|
x-nullable: true
|
|
startAt:
|
|
description: |
|
|
Date the card was started to be worked on
|
|
type: string
|
|
x-nullable: true
|
|
dueAt:
|
|
description: |
|
|
Date the card is due
|
|
type: string
|
|
x-nullable: true
|
|
endAt:
|
|
description: |
|
|
Date the card ended
|
|
type: string
|
|
x-nullable: true
|
|
dueComplete:
|
|
description: |
|
|
Has the due date been marked complete? Imported from Trello
|
|
(card.dueComplete) and toggled by the minicard due checkbox.
|
|
type: boolean
|
|
x-nullable: true
|
|
stickers:
|
|
description: |
|
|
list of stickers shown on the card (imported from Trello)
|
|
type: array
|
|
items:
|
|
$ref: "#/definitions/CardsStickers"
|
|
x-nullable: true
|
|
locationName:
|
|
description: |
|
|
human readable location name of the card (imported from Trello)
|
|
type: string
|
|
x-nullable: true
|
|
locationAddress:
|
|
description: |
|
|
street address of the card location (imported from Trello)
|
|
type: string
|
|
x-nullable: true
|
|
locationLatitude:
|
|
description: |
|
|
latitude of the card location (imported from Trello)
|
|
type: number
|
|
x-nullable: true
|
|
locationLongitude:
|
|
description: |
|
|
longitude of the card location (imported from Trello)
|
|
type: number
|
|
x-nullable: true
|
|
locations:
|
|
description: |
|
|
list of locations attached to the card. Supports multiple locations,
|
|
each with an optional name, address and coordinates. A legacy single
|
|
location stored in the locationName/Address/Latitude/Longitude fields
|
|
is surfaced through getLocations() for backwards compatibility.
|
|
type: array
|
|
items:
|
|
$ref: "#/definitions/CardsLocations"
|
|
x-nullable: true
|
|
spentTime:
|
|
description: |
|
|
How much time has been spent on this
|
|
type: number
|
|
x-nullable: true
|
|
isOvertime:
|
|
description: |
|
|
is the card over time?
|
|
type: boolean
|
|
x-nullable: true
|
|
userId:
|
|
description: |
|
|
user ID of the author of the card
|
|
type: string
|
|
sort:
|
|
description: |
|
|
Sort value
|
|
type: number
|
|
x-nullable: true
|
|
subtaskSort:
|
|
description: |
|
|
subtask sort value
|
|
type: number
|
|
x-nullable: true
|
|
type:
|
|
description: |
|
|
type of the card
|
|
type: string
|
|
linkedId:
|
|
description: |
|
|
ID of the linked card
|
|
type: string
|
|
x-nullable: true
|
|
vote:
|
|
description: |
|
|
vote object, see below
|
|
$ref: "#/definitions/CardsVote"
|
|
x-nullable: true
|
|
poker:
|
|
description: |
|
|
poker object, see below
|
|
$ref: "#/definitions/CardsPoker"
|
|
x-nullable: true
|
|
targetId_gantt:
|
|
description: |
|
|
ID of card which is the child link in gantt view
|
|
type: array
|
|
items:
|
|
type: string
|
|
x-nullable: true
|
|
x-nullable: true
|
|
linkType_gantt:
|
|
description: |
|
|
ID of card which is the parent link in gantt view
|
|
type: array
|
|
items:
|
|
type: number
|
|
x-nullable: true
|
|
x-nullable: true
|
|
linkId_gantt:
|
|
description: |
|
|
ID of card which is the parent link in gantt view
|
|
type: array
|
|
items:
|
|
type: string
|
|
x-nullable: true
|
|
x-nullable: true
|
|
cardNumber:
|
|
description: |
|
|
A boardwise sequentially increasing number that is assigned
|
|
to every newly created card
|
|
type: number
|
|
x-nullable: true
|
|
showActivities:
|
|
type: boolean
|
|
showListOnMinicard:
|
|
description: |
|
|
show list name on minicard?
|
|
type: boolean
|
|
x-nullable: true
|
|
showChecklistAtMinicard:
|
|
description: |
|
|
show checklist on minicard?
|
|
type: boolean
|
|
x-nullable: true
|
|
hideFinishedChecklistIfItemsAreHidden:
|
|
description: |
|
|
hide completed checklist sections when checklist items are hidden?
|
|
type: boolean
|
|
x-nullable: true
|
|
required:
|
|
- archived
|
|
- swimlaneId
|
|
- createdAt
|
|
- modifiedAt
|
|
- dateLastActivity
|
|
- userId
|
|
- type
|
|
- showActivities
|
|
CardsVote:
|
|
type: object
|
|
properties:
|
|
question:
|
|
type: string
|
|
positive:
|
|
description: |
|
|
list of members (user IDs)
|
|
type: array
|
|
items:
|
|
type: string
|
|
x-nullable: true
|
|
negative:
|
|
description: |
|
|
list of members (user IDs)
|
|
type: array
|
|
items:
|
|
type: string
|
|
x-nullable: true
|
|
end:
|
|
type: string
|
|
public:
|
|
type: boolean
|
|
allowNonBoardMembers:
|
|
type: boolean
|
|
required:
|
|
- question
|
|
- public
|
|
- allowNonBoardMembers
|
|
CardsPoker:
|
|
type: object
|
|
properties:
|
|
question:
|
|
type: boolean
|
|
one:
|
|
description: |
|
|
poker card one
|
|
type: array
|
|
items:
|
|
type: string
|
|
x-nullable: true
|
|
two:
|
|
description: |
|
|
poker card two
|
|
type: array
|
|
items:
|
|
type: string
|
|
x-nullable: true
|
|
three:
|
|
description: |
|
|
poker card three
|
|
type: array
|
|
items:
|
|
type: string
|
|
x-nullable: true
|
|
five:
|
|
description: |
|
|
poker card five
|
|
type: array
|
|
items:
|
|
type: string
|
|
x-nullable: true
|
|
eight:
|
|
description: |
|
|
poker card eight
|
|
type: array
|
|
items:
|
|
type: string
|
|
x-nullable: true
|
|
thirteen:
|
|
description: |
|
|
poker card thirteen
|
|
type: array
|
|
items:
|
|
type: string
|
|
x-nullable: true
|
|
twenty:
|
|
description: |
|
|
poker card twenty
|
|
type: array
|
|
items:
|
|
type: string
|
|
x-nullable: true
|
|
forty:
|
|
description: |
|
|
poker card forty
|
|
type: array
|
|
items:
|
|
type: string
|
|
x-nullable: true
|
|
oneHundred:
|
|
description: |
|
|
poker card oneHundred
|
|
type: array
|
|
items:
|
|
type: string
|
|
x-nullable: true
|
|
unsure:
|
|
description: |
|
|
poker card unsure
|
|
type: array
|
|
items:
|
|
type: string
|
|
x-nullable: true
|
|
end:
|
|
type: string
|
|
allowNonBoardMembers:
|
|
type: boolean
|
|
estimation:
|
|
description: |
|
|
poker estimation value
|
|
type: number
|
|
CardsCustomfields:
|
|
type: object
|
|
CardsLabelids:
|
|
type: object
|
|
CardsMembers:
|
|
type: object
|
|
CardsAssignees:
|
|
type: object
|
|
CardsStickers:
|
|
type: object
|
|
CardsLocations:
|
|
type: object
|
|
CardsVotePositive:
|
|
type: object
|
|
CardsVoteNegative:
|
|
type: object
|
|
CardsPokerOne:
|
|
type: object
|
|
CardsPokerTwo:
|
|
type: object
|
|
CardsPokerThree:
|
|
type: object
|
|
CardsPokerFive:
|
|
type: object
|
|
CardsPokerEight:
|
|
type: object
|
|
CardsPokerThirteen:
|
|
type: object
|
|
CardsPokerTwenty:
|
|
type: object
|
|
CardsPokerForty:
|
|
type: object
|
|
CardsPokerOnehundred:
|
|
type: object
|
|
CardsPokerUnsure:
|
|
type: object
|
|
CardsTargetid_gantt:
|
|
type: object
|
|
CardsLinktype_gantt:
|
|
type: object
|
|
CardsLinkid_gantt:
|
|
type: object
|
|
ChecklistItems:
|
|
type: object
|
|
description: An item in a checklist
|
|
properties:
|
|
title:
|
|
description: |
|
|
the text of the item
|
|
type: string
|
|
sort:
|
|
description: |
|
|
the sorting field of the item
|
|
type: number
|
|
isFinished:
|
|
description: |
|
|
Is the item checked?
|
|
type: boolean
|
|
checklistId:
|
|
description: |
|
|
the checklist ID the item is attached to
|
|
type: string
|
|
cardId:
|
|
description: |
|
|
the card ID the item is attached to
|
|
type: string
|
|
boardId:
|
|
description: |
|
|
The ID of the board the item's card is on. Denormalized from the card
|
|
so the board publication can publish checklist items with a single
|
|
reactive cursor filtered by boardId. Kept in sync on insert, on the
|
|
item / its checklist moving to another card, and when the card moves to
|
|
another board.
|
|
type: string
|
|
x-nullable: true
|
|
createdAt:
|
|
type: string
|
|
x-nullable: true
|
|
modifiedAt:
|
|
type: string
|
|
required:
|
|
- title
|
|
- sort
|
|
- isFinished
|
|
- checklistId
|
|
- cardId
|
|
- modifiedAt
|
|
Checklists:
|
|
type: object
|
|
description: A Checklist
|
|
properties:
|
|
cardId:
|
|
description: |
|
|
The ID of the card the checklist is in
|
|
type: string
|
|
boardId:
|
|
description: |
|
|
The ID of the board the checklist's card is on. Denormalized from the
|
|
card so the board publication can publish checklists with a single
|
|
reactive cursor filtered by boardId (a new checklist on a new card then
|
|
publishes reactively). Kept in sync on insert, on checklist move to
|
|
another card, and when the card moves to another board.
|
|
type: string
|
|
x-nullable: true
|
|
title:
|
|
description: |
|
|
the title of the checklist
|
|
type: string
|
|
finishedAt:
|
|
description: |
|
|
When was the checklist finished
|
|
type: string
|
|
x-nullable: true
|
|
createdAt:
|
|
description: |
|
|
Creation date of the checklist
|
|
type: string
|
|
modifiedAt:
|
|
type: string
|
|
sort:
|
|
description: |
|
|
sorting value of the checklist
|
|
type: number
|
|
hideCheckedChecklistItems:
|
|
description: |
|
|
hide the checked checklist-items?
|
|
type: boolean
|
|
x-nullable: true
|
|
hideAllChecklistItems:
|
|
description: |
|
|
hide all checklist items ?
|
|
type: boolean
|
|
x-nullable: true
|
|
showChecklistAtMinicard:
|
|
description: |
|
|
show this checklist on minicard?
|
|
type: boolean
|
|
required:
|
|
- cardId
|
|
- title
|
|
- createdAt
|
|
- modifiedAt
|
|
- sort
|
|
- showChecklistAtMinicard
|
|
CustomFields:
|
|
type: object
|
|
description: A custom field on a card in the board
|
|
properties:
|
|
boardIds:
|
|
description: |
|
|
the ID of the board
|
|
type: array
|
|
items:
|
|
type: string
|
|
name:
|
|
description: |
|
|
name of the custom field
|
|
type: string
|
|
type:
|
|
description: |
|
|
type of the custom field
|
|
type: string
|
|
enum:
|
|
- text
|
|
- number
|
|
- date
|
|
- dropdown
|
|
- checkbox
|
|
- currency
|
|
- stringtemplate
|
|
settings:
|
|
description: |
|
|
settings of the custom field
|
|
$ref: "#/definitions/CustomFieldsSettings"
|
|
showOnCard:
|
|
description: |
|
|
should we show on the cards this custom field
|
|
type: boolean
|
|
automaticallyOnCard:
|
|
description: |
|
|
should the custom fields automatically be added on cards?
|
|
type: boolean
|
|
alwaysOnCard:
|
|
description: |
|
|
should the custom field be automatically added to all cards?
|
|
type: boolean
|
|
showLabelOnMiniCard:
|
|
description: |
|
|
should the label of the custom field be shown on minicards?
|
|
type: boolean
|
|
showSumAtTopOfList:
|
|
description: |
|
|
should the sum of the custom fields be shown at top of list?
|
|
type: boolean
|
|
createdAt:
|
|
type: string
|
|
x-nullable: true
|
|
modifiedAt:
|
|
type: string
|
|
required:
|
|
- boardIds
|
|
- name
|
|
- type
|
|
- settings
|
|
- showOnCard
|
|
- automaticallyOnCard
|
|
- alwaysOnCard
|
|
- showLabelOnMiniCard
|
|
- showSumAtTopOfList
|
|
- modifiedAt
|
|
CustomFieldsSettings:
|
|
type: object
|
|
properties:
|
|
currencyCode:
|
|
type: string
|
|
dropdownItems:
|
|
description: |
|
|
list of drop down items objects
|
|
type: array
|
|
items:
|
|
$ref: "#/definitions/CustomFieldsSettingsDropdownitems"
|
|
stringtemplateFormat:
|
|
type: string
|
|
stringtemplateSeparator:
|
|
type: string
|
|
CustomFieldsBoardids:
|
|
type: object
|
|
CustomFieldsSettingsDropdownitems:
|
|
type: object
|
|
Lists:
|
|
type: object
|
|
description: A list (column) in the Wekan board.
|
|
properties:
|
|
title:
|
|
description: |
|
|
the title of the list
|
|
type: string
|
|
starred:
|
|
description: |
|
|
if a list is stared
|
|
then we put it on the top
|
|
type: boolean
|
|
x-nullable: true
|
|
archived:
|
|
description: |
|
|
is the list archived
|
|
type: boolean
|
|
archivedAt:
|
|
description: |
|
|
latest archiving date
|
|
type: string
|
|
x-nullable: true
|
|
boardId:
|
|
description: |
|
|
the board associated to this list
|
|
type: string
|
|
swimlaneId:
|
|
description: |
|
|
the swimlane associated to this list. Optional for backward compatibility
|
|
type: string
|
|
x-nullable: true
|
|
createdAt:
|
|
description: |
|
|
creation date
|
|
type: string
|
|
sort:
|
|
description: |
|
|
is the list sorted
|
|
type: number
|
|
x-nullable: true
|
|
updatedAt:
|
|
description: |
|
|
last update of the list
|
|
type: string
|
|
x-nullable: true
|
|
modifiedAt:
|
|
type: string
|
|
wipLimit:
|
|
description: |
|
|
WIP object, see below
|
|
$ref: "#/definitions/ListsWiplimit"
|
|
x-nullable: true
|
|
color:
|
|
description: |
|
|
the color of the list
|
|
type: string
|
|
enum:
|
|
x-nullable: true
|
|
type:
|
|
description: |
|
|
The type of list
|
|
type: string
|
|
width:
|
|
description: |
|
|
The width of the list in pixels (100-1000).
|
|
Default width is 272 pixels.
|
|
type: number
|
|
x-nullable: true
|
|
required:
|
|
- title
|
|
- archived
|
|
- boardId
|
|
- createdAt
|
|
- modifiedAt
|
|
- type
|
|
ListsWiplimit:
|
|
type: object
|
|
properties:
|
|
value:
|
|
description: |
|
|
value of the WIP
|
|
type: number
|
|
enabled:
|
|
description: |
|
|
is the WIP enabled
|
|
type: boolean
|
|
soft:
|
|
description: |
|
|
is the WIP a soft or hard requirement
|
|
type: boolean
|
|
required:
|
|
- value
|
|
- enabled
|
|
- soft
|
|
Swimlanes:
|
|
type: object
|
|
description: A swimlane is an line in the kaban board.
|
|
properties:
|
|
title:
|
|
description: |
|
|
the title of the swimlane
|
|
type: string
|
|
archived:
|
|
description: |
|
|
is the swimlane archived?
|
|
type: boolean
|
|
archivedAt:
|
|
description: |
|
|
latest archiving date of the swimlane
|
|
type: string
|
|
x-nullable: true
|
|
boardId:
|
|
description: |
|
|
the ID of the board the swimlane is attached to
|
|
type: string
|
|
createdAt:
|
|
description: |
|
|
creation date of the swimlane
|
|
type: string
|
|
sort:
|
|
description: |
|
|
the sort value of the swimlane
|
|
type: number
|
|
x-nullable: true
|
|
color:
|
|
description: |
|
|
the color of the swimlane
|
|
type: string
|
|
enum:
|
|
x-nullable: true
|
|
updatedAt:
|
|
description: |
|
|
when was the swimlane last edited
|
|
type: string
|
|
x-nullable: true
|
|
modifiedAt:
|
|
type: string
|
|
type:
|
|
description: |
|
|
The type of swimlane
|
|
type: string
|
|
height:
|
|
description: |
|
|
The height of the swimlane in pixels.
|
|
-1 = auto-height (default)
|
|
50-2000 = fixed height in pixels
|
|
type: number
|
|
x-nullable: true
|
|
required:
|
|
- title
|
|
- archived
|
|
- boardId
|
|
- createdAt
|
|
- modifiedAt
|
|
- type
|
|
Users:
|
|
type: object
|
|
description: A User in wekan
|
|
properties:
|
|
username:
|
|
description: |
|
|
the username of the user
|
|
type: string
|
|
x-nullable: true
|
|
orgs:
|
|
description: |
|
|
the list of organizations that a user belongs to
|
|
type: array
|
|
items:
|
|
$ref: "#/definitions/UsersOrgs"
|
|
x-nullable: true
|
|
teams:
|
|
description: |
|
|
the list of teams that a user belongs to
|
|
type: array
|
|
items:
|
|
$ref: "#/definitions/UsersTeams"
|
|
x-nullable: true
|
|
emails:
|
|
description: |
|
|
the list of emails attached to a user
|
|
type: array
|
|
items:
|
|
$ref: "#/definitions/UsersEmails"
|
|
x-nullable: true
|
|
createdAt:
|
|
description: |
|
|
creation date of the user
|
|
type: string
|
|
modifiedAt:
|
|
type: string
|
|
profile:
|
|
description: |
|
|
profile settings
|
|
$ref: "#/definitions/UsersProfile"
|
|
x-nullable: true
|
|
services:
|
|
description: |
|
|
services field of the user
|
|
type: object
|
|
x-nullable: true
|
|
heartbeat:
|
|
description: |
|
|
last time the user has been seen
|
|
type: string
|
|
x-nullable: true
|
|
isAdmin:
|
|
description: |
|
|
is the user an admin of the board?
|
|
type: boolean
|
|
x-nullable: true
|
|
createdThroughApi:
|
|
description: |
|
|
was the user created through the API?
|
|
type: boolean
|
|
x-nullable: true
|
|
loginDisabled:
|
|
description: |
|
|
loginDisabled field of the user
|
|
type: boolean
|
|
x-nullable: true
|
|
authenticationMethod:
|
|
description: |
|
|
authentication method of the user
|
|
type: string
|
|
sessionData:
|
|
description: |
|
|
profile settings
|
|
$ref: "#/definitions/UsersSessiondata"
|
|
x-nullable: true
|
|
importUsernames:
|
|
description: |
|
|
username for imported
|
|
type: array
|
|
items:
|
|
type: string
|
|
x-nullable: true
|
|
x-nullable: true
|
|
lastConnectionDate:
|
|
type: string
|
|
x-nullable: true
|
|
required:
|
|
- createdAt
|
|
- modifiedAt
|
|
- authenticationMethod
|
|
UsersProfile:
|
|
type: object
|
|
properties:
|
|
avatarUrl:
|
|
description: |
|
|
URL of the avatar of the user
|
|
type: string
|
|
emailBuffer:
|
|
description: |
|
|
list of email buffers of the user
|
|
type: array
|
|
items:
|
|
type: string
|
|
x-nullable: true
|
|
fullname:
|
|
description: |
|
|
full name of the user
|
|
type: string
|
|
showDesktopDragHandles:
|
|
description: |
|
|
does the user want to show desktop drag handles?
|
|
type: boolean
|
|
GreyIcons:
|
|
description: |
|
|
per-user preference to render unicode icons in grey
|
|
type: boolean
|
|
cardMaximized:
|
|
description: |
|
|
has user clicked maximize card?
|
|
type: boolean
|
|
cardCollapsed:
|
|
description: |
|
|
has user collapsed the card details?
|
|
type: boolean
|
|
showActivities:
|
|
description: |
|
|
does the user want to show activities in card details?
|
|
type: boolean
|
|
customFieldsGrid:
|
|
description: |
|
|
has user at card Custom Fields have Grid (false) or one per row (true) layout?
|
|
type: boolean
|
|
trelloApiSaved:
|
|
description: |
|
|
Has the user saved Trello API credentials (key + token) for importing?
|
|
The credentials themselves are stored server-side only (never published
|
|
to the client); this is just the published "saved" indicator.
|
|
type: boolean
|
|
hiddenMinicardLabelText:
|
|
description: |
|
|
does the user want to hide minicard label texts?
|
|
type: boolean
|
|
initials:
|
|
description: |
|
|
initials of the user
|
|
type: string
|
|
boardWorkspacesTree:
|
|
description: |
|
|
Per-user spaces tree for All Boards page
|
|
type: array
|
|
items:
|
|
$ref: "#/definitions/UsersProfileBoardworkspacestree"
|
|
boardWorkspaceAssignments:
|
|
description: |
|
|
Per-user map of boardId -> spaceId
|
|
type: object
|
|
invitedBoards:
|
|
description: |
|
|
board IDs the user has been invited to
|
|
type: array
|
|
items:
|
|
type: string
|
|
x-nullable: true
|
|
language:
|
|
description: |
|
|
language of the user
|
|
type: string
|
|
mapProvider:
|
|
description: |
|
|
which map service the card "Open in map" links use
|
|
('openstreetmap' (default), 'google', 'bing' or 'apple').
|
|
type: string
|
|
enum:
|
|
- openstreetmap
|
|
- google
|
|
- bing
|
|
- apple
|
|
moveAndCopyDialog:
|
|
description: |
|
|
move and copy card dialog
|
|
type: object
|
|
moveChecklistDialog:
|
|
description: |
|
|
move checklist dialog
|
|
type: object
|
|
copyChecklistDialog:
|
|
description: |
|
|
copy checklist dialog
|
|
type: object
|
|
notifications:
|
|
description: |
|
|
enabled notifications for the user
|
|
type: array
|
|
items:
|
|
$ref: "#/definitions/UsersProfileNotifications"
|
|
rescueCardDescription:
|
|
description: |
|
|
show dialog for saving card description on unintentional card closing
|
|
type: boolean
|
|
showCardsCountAt:
|
|
description: |
|
|
showCardCountAt field of the user
|
|
type: number
|
|
startDayOfWeek:
|
|
description: |
|
|
startDayOfWeek field of the user
|
|
type: number
|
|
starredBoards:
|
|
description: |
|
|
list of starred board IDs
|
|
type: array
|
|
items:
|
|
type: string
|
|
x-nullable: true
|
|
icode:
|
|
description: |
|
|
icode
|
|
type: string
|
|
boardView:
|
|
description: |
|
|
boardView field of the user
|
|
type: string
|
|
enum:
|
|
- board-view-swimlanes
|
|
- board-view-lists
|
|
- board-view-cal
|
|
- board-view-gantt
|
|
listSortBy:
|
|
description: |
|
|
default sort list for user
|
|
type: string
|
|
enum:
|
|
- -modifiedat
|
|
- modifiedat
|
|
- -title
|
|
- title
|
|
- -sort
|
|
- sort
|
|
templatesBoardId:
|
|
description: |
|
|
Reference to the templates board
|
|
type: string
|
|
cardTemplatesSwimlaneId:
|
|
description: |
|
|
Reference to the card templates swimlane Id
|
|
type: string
|
|
listTemplatesSwimlaneId:
|
|
description: |
|
|
Reference to the list templates swimlane Id
|
|
type: string
|
|
boardTemplatesSwimlaneId:
|
|
description: |
|
|
Reference to the board templates swimlane Id
|
|
type: string
|
|
listWidths:
|
|
description: |
|
|
User-specified width of each list (or nothing if default).
|
|
profile[boardId][listId] = width;
|
|
type: object
|
|
listConstraints:
|
|
description: |
|
|
User-specified constraint of each list (or nothing if default).
|
|
profile[boardId][listId] = constraint;
|
|
type: object
|
|
autoWidthBoards:
|
|
description: |
|
|
User-specified flag for enabling auto-width for boards (false is the default).
|
|
profile[boardId][listId] = constraint;
|
|
type: object
|
|
swimlaneHeights:
|
|
description: |
|
|
User-specified heights of each swimlane (or nothing if default).
|
|
profile[boardId][swimlaneId] = height;
|
|
type: object
|
|
collapsedLists:
|
|
description: |
|
|
Per-user collapsed state for lists.
|
|
profile[boardId][listId] = true|false
|
|
type: object
|
|
collapsedSwimlanes:
|
|
description: |
|
|
Per-user collapsed state for swimlanes.
|
|
profile[boardId][swimlaneId] = true|false
|
|
type: object
|
|
keyboardShortcuts:
|
|
description: |
|
|
User-specified state of keyboard shortcut activation.
|
|
type: boolean
|
|
verticalScrollbars:
|
|
description: |
|
|
User-specified state of vertical scrollbars visibility.
|
|
type: boolean
|
|
showWeekOfYear:
|
|
description: |
|
|
User-specified state of week-of-year in date displays.
|
|
type: boolean
|
|
dateFormat:
|
|
description: |
|
|
User-specified date format for displaying dates (includes time HH:MM).
|
|
type: string
|
|
enum:
|
|
- yyyy-mm-dd
|
|
- dd-mm-yyyy
|
|
- mm-dd-yyyy
|
|
zoomLevel:
|
|
description: |
|
|
User-specified zoom level for board view (1.0 = 100%, 1.5 = 150%, etc.)
|
|
type: number
|
|
mobileMode:
|
|
description: |
|
|
User-specified mobile/desktop mode toggle
|
|
type: boolean
|
|
cardZoom:
|
|
description: |
|
|
User-specified zoom level for card details (1.0 = 100%, 1.5 = 150%, etc.)
|
|
type: number
|
|
required:
|
|
- templatesBoardId
|
|
- cardTemplatesSwimlaneId
|
|
- listTemplatesSwimlaneId
|
|
- boardTemplatesSwimlaneId
|
|
- listWidths
|
|
- listConstraints
|
|
- autoWidthBoards
|
|
- swimlaneHeights
|
|
- collapsedLists
|
|
- collapsedSwimlanes
|
|
- keyboardShortcuts
|
|
- verticalScrollbars
|
|
- showWeekOfYear
|
|
- zoomLevel
|
|
- mobileMode
|
|
- cardZoom
|
|
UsersSessiondata:
|
|
type: object
|
|
properties:
|
|
totalHits:
|
|
description: |
|
|
Total hits from last searchquery['members.userId'] = Meteor.userId();
|
|
last hit that was returned
|
|
type: number
|
|
UsersOrgs:
|
|
type: object
|
|
properties:
|
|
orgId:
|
|
description: |
|
|
The uniq ID of the organization
|
|
type: string
|
|
orgDisplayName:
|
|
description: |
|
|
The display name of the organization
|
|
type: string
|
|
required:
|
|
- orgId
|
|
- orgDisplayName
|
|
UsersTeams:
|
|
type: object
|
|
properties:
|
|
teamId:
|
|
description: |
|
|
The uniq ID of the team
|
|
type: string
|
|
teamDisplayName:
|
|
description: |
|
|
The display name of the team
|
|
type: string
|
|
required:
|
|
- teamId
|
|
- teamDisplayName
|
|
UsersEmails:
|
|
type: object
|
|
properties:
|
|
address:
|
|
description: |
|
|
The email address
|
|
type: string
|
|
verified:
|
|
description: |
|
|
Has the email been verified
|
|
type: boolean
|
|
required:
|
|
- address
|
|
- verified
|
|
UsersProfileEmailbuffer:
|
|
type: object
|
|
UsersProfileBoardworkspacestree:
|
|
type: object
|
|
UsersProfileInvitedboards:
|
|
type: object
|
|
UsersProfileNotifications:
|
|
type: object
|
|
properties:
|
|
activity:
|
|
description: |
|
|
The id of the activity this notification references
|
|
type: string
|
|
read:
|
|
description: |
|
|
the date on which this notification was read
|
|
type: string
|
|
required:
|
|
- activity
|
|
UsersProfileStarredboards:
|
|
type: object
|
|
UsersImportusernames:
|
|
type: object
|