diff --git a/.gitignore b/.gitignore index 175c66dd2..7037d0625 100644 --- a/.gitignore +++ b/.gitignore @@ -31,5 +31,4 @@ Thumbs.db ehthumbs.db .eslintcache .meteor/local -.meteor-1.6-snap/.meteor/local .devcontainer/docker-compose.extend.yml diff --git a/.tx/config b/.tx/config index ddf173871..f70912248 100644 --- a/.tx/config +++ b/.tx/config @@ -39,7 +39,7 @@ host = https://www.transifex.com # tap:i18n requires us to use `-` separator in the language identifiers whereas # Transifex uses a `_` separator, without an option to customize it on one side # or the other, so we need to do a Manual mapping. -lang_map = ar_EG:ar-EG, bg_BG:bg, en_GB:en-GB, es_AR:es-AR, es_CL:es-CL, es_PE:es-PE, es_MX:es-MX, es_TX:es-TX, es_PY:es-PY, el_GR:el, fa_IR:fa-IR, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, no:nb, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, sl_SI:sl, zh_CN:zh-CN, zh_TW:zh-TW, zh_HK:zh-HK +lang_map = ar_EG:ar-EG, bg_BG:bg, en_GB:en-GB, es_AR:es-AR, es_CL:es-CL, es_419:es-LA, es_PE:es-PE, es_MX:es-MX, es_TX:es-TX, es_PY:es-PY, el_GR:el, fa_IR:fa-IR, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, no:nb, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, sl_SI:sl, zh_CN:zh-CN, zh_TW:zh-TW, zh_HK:zh-HK [wekan.application] file_filter = i18n/.i18n.json diff --git a/CHANGELOG.md b/CHANGELOG.md index e5013c784..26100fe33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,63 @@ +# v5.09 2021-03-26 Wekan release + +This release adds the following improvements: + +- [Replace edit icon by plus-square on new links](https://github.com/wekan/wekan/pull/3671). + Thanks to sim51. + +and fixes the following bugs: + +- [Fix openapi docs generation](https://github.com/wekan/wekan/pull/3672). + Thanks to bentiss. + +Thanks to above GitHub users for their contributions and translators for their translations. + +# v5.08 2021-03-26 Wekan release + +This release adds the following new features: + +- [Admin Panel/Settings/Accounts: Hide system messages of all users](https://github.com/wekan/wekan/commit/a249ffc8054189d8e3db9b4c8f082cc7ce7dcb52). + Thanks to bbyszio, r4nc0r and xet7. + +and adds the following improvements: + +- [Add Trello attached links to the card description](https://github.com/wekan/wekan/pull/3669). + Thanks to jrsupplee. +- [Added package-lock.json and updated .gitignore](https://github.com/wekan/wekan/commit/d532a3591f338cec9a3839d43d9a1e9d69f59dc2). + Thanks to xet7. + +and adds the following new translations: + +- [Added translation: español de América Latina](https://github.com/wekan/wekan/commit/ccc9efb2703efda4e199a861920b9ec88e634b59). + Thanks to translators. + +and fixes the following bugs: + +- [Fix typos in translations](https://github.com/wekan/wekan/commit/a0e1b6f918dbb252a13db05d6b9e1f832c28654f). + Thanks to xet7. + +Thanks to above GitHub users for their contributions and translators for their translations. + +# v5.07 2021-03-19 Wekan release + +This release fixes the following bugs: + +- [Fixed sort cards feature](https://github.com/wekan/wekan/pull/3662). + Thanks to ednamaeG. + +Thanks to above GitHub users for their contributions and translators for their translations. + +# v5.06 2021-03-18 Wekan release + +This release fixes the following bugs: + +- [Fixed Bug: Calendar & parent cards URLs used absolute URLs](https://github.com/wekan/wekan/pull/3648). + Thanks to Majed6. +- [Fixed Bug: copy to clipboard uses pathname](https://github.com/wekan/wekan/pull/3661). + Thanks to Majed6. + +Thanks to above GitHub users for their contributions and translators for their translations. + # v5.05 2021-03-11 Wekan release This release fixes the following bugs: diff --git a/README.md b/README.md index 63086056c..8b7623d8c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/wekan/wekan) +[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/wekan/wekan) # Wekan - Open Source kanban @@ -32,7 +32,7 @@ It's better than at chat where details get lost when chat scrolls up. ## FAQ -**NOTE**: +**NOTE**: - Please read the [FAQ](https://github.com/wekan/wekan/wiki/FAQ) first - Please don't feed the [trolls](https://github.com/wekan/wekan/wiki/FAQ#why-am-i-called-a-troll) and [spammers](https://github.com/wekan/wekan/wiki/FAQ#why-am-i-called-a-spammer) that are mentioned in the FAQ :) @@ -52,7 +52,7 @@ that by providing one-click installation on various platforms. - Wekan is used in [most countries of the world](https://snapcraft.io/wekan). - Wekan largest user has 13k users using Wekan in their company. -- Wekan has been [translated](https://transifex.com/wekan/wekan) to about 61 languages. +- Wekan has been [translated](https://transifex.com/wekan/wekan) to about 62 languages. - [Features][features]: Wekan has real-time user interface. - [Platforms][platforms]: Wekan supports many platforms. Wekan is critical part of new platforms Wekan is currently being integrated to. @@ -64,7 +64,7 @@ that by providing one-click installation on various platforms. [More Platforms](https://github.com/wekan/wekan/wiki/Platforms), bundle for RasPi3 ARM and other CPUs where Node.js and MongoDB exists. - 1 GB RAM minimum free for Wekan. Production server should have minimum total 4 GB RAM. For thousands of users, for example with [Docker](https://github.com/wekan/wekan/blob/master/docker-compose.yml): 3 frontend servers, - each having 2 CPU and 2 wekan-app containers. One backend wekan-db server with many CPUs. + each having 2 CPU and 2 wekan-app containers. One backend wekan-db server with many CPUs. - Enough disk space and alerts about low disk space. If you run out disk space, MongoDB database gets corrupted. - SECURITY: Updating to newest Wekan version very often. Please check you do not have automatic updates of Sandstorm or Snap turned off. Old versions have security issues because of old versions Node.js etc. Only newest Wekan is supported. diff --git a/Stackerfile.yml b/Stackerfile.yml index 076d270c1..d7f4be3cc 100644 --- a/Stackerfile.yml +++ b/Stackerfile.yml @@ -1,5 +1,5 @@ appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928 -appVersion: "v5.05.0" +appVersion: "v5.09.0" files: userUploads: - README.md diff --git a/client/components/boards/boardBody.js b/client/components/boards/boardBody.js index b08de3384..900931d05 100644 --- a/client/components/boards/boardBody.js +++ b/client/components/boards/boardBody.js @@ -360,7 +360,7 @@ BlazeComponent.extendComponent({ end: end || card.endAt, allDay: Math.abs(end.getTime() - start.getTime()) / 1000 === 24 * 3600, - url: FlowRouter.url('card', { + url: FlowRouter.path('card', { boardId: currentBoard._id, slug: currentBoard.slug, cardId: card._id, diff --git a/client/components/boards/boardHeader.jade b/client/components/boards/boardHeader.jade index b59e650e0..e1b50eb0e 100644 --- a/client/components/boards/boardHeader.jade +++ b/client/components/boards/boardHeader.jade @@ -34,9 +34,12 @@ template(name="boardHeaderBar") if $eq watchLevel "muted" i.fa.fa-bell-slash span {{_ watchLevel}} - a.board-header-btn.js-sort-cards(title="{{_ 'sort-cards'}}") + a.board-header-btn(title="{{_ 'sort-cards'}}" class="{{#if isSortActive }}emphasis{{else}} js-sort-cards {{/if}}") i.fa.fa-sort - | {{_ 'sort-cards'}} {{sortCardsBy.get}} + span {{#if isSortActive }}{{_ 'Sort is on'}}{{else}}{{_ 'sort-cards'}}{{/if}} + if isSortActive + a.board-header-btn-close.js-sort-reset(title="Remove Sort") + i.fa.fa-times-thin else a.board-header-btn.js-log-in( diff --git a/client/components/boards/boardHeader.js b/client/components/boards/boardHeader.js index bbd847db8..1cca7f11b 100644 --- a/client/components/boards/boardHeader.js +++ b/client/components/boards/boardHeader.js @@ -54,6 +54,10 @@ Template.boardChangeTitlePopup.events({ }); BlazeComponent.extendComponent({ + onCreated() { + // set sort to default + Session.set('sortBy', ''); + }, watchLevel() { const currentBoard = Boards.findOne(Session.get('currentBoard')); return currentBoard && currentBoard.getWatchLevel(Meteor.userId()); @@ -129,6 +133,9 @@ BlazeComponent.extendComponent({ Sidebar.setView(); Filter.reset(); }, + 'click .js-sort-reset'() { + Session.set('sortBy', ''); + }, 'click .js-open-search-view'() { Sidebar.setView('search'); }, @@ -162,6 +169,9 @@ Template.boardHeaderBar.helpers({ boardView() { return Utils.boardView(); }, + isSortActive() { + return Session.get('sortBy') ? true : false; + }, }); Template.boardChangeViewPopup.events({ @@ -407,14 +417,6 @@ BlazeComponent.extendComponent({ sortCardsBy.set(TAPi18n.__('date-created-oldest-first')); Popup.close(); }, - 'click .js-sort-default'() { - const sortBy = { - sort: 1, - }; - Session.set('sortBy', sortBy); - sortCardsBy.set(TAPi18n.__('default')); - Popup.close(); - }, }, ]; }, diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade index bd8a8346a..245ab773d 100644 --- a/client/components/cards/cardDetails.jade +++ b/client/components/cards/cardDetails.jade @@ -12,7 +12,6 @@ template(name="cardDetails") a.fa.fa-link.card-copy-button.js-copy-link( class="fa-link" title="{{_ 'copy-card-link-to-clipboard'}}" - value="{{ originRelativeUrl }}" ) if isMiniScreen a.fa.fa-times-thin.close-card-details-mobile-web.js-close-card-details diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js index 832007f6d..c745f0730 100644 --- a/client/components/cards/cardDetails.js +++ b/client/components/cards/cardDetails.js @@ -114,7 +114,7 @@ BlazeComponent.extendComponent({ if (card) { const board = Boards.findOne(card.boardId); if (board) { - result = FlowRouter.url('card', { + result = FlowRouter.path('card', { boardId: card.boardId, slug: board.slug, cardId: card._id, @@ -291,6 +291,8 @@ BlazeComponent.extendComponent({ }, 'click .js-copy-link'() { StringToCopyElement = document.getElementById('cardURL_copy'); + StringToCopyElement.value = + window.location.origin + window.location.pathname; StringToCopyElement.select(); if (document.execCommand('copy')) { StringToCopyElement.blur(); diff --git a/client/components/main/layouts.js b/client/components/main/layouts.js index 207dadda8..a43a49d6c 100644 --- a/client/components/main/layouts.js +++ b/client/components/main/layouts.js @@ -77,8 +77,6 @@ Template.userFormsLayout.helpers({ } else if (lang.name === 'ar-EG') { // ar-EG = Arabic (Egypt), simply Masri (مَصرى, [ˈmɑsˤɾi], Egyptian, Masr refers to Cairo) name = 'مَصرى'; - } else if (lang.name === 'es-PY') { - name = 'Español de Paraguayo'; } else if (lang.name === 'fa-IR') { // fa-IR = Persian (Iran) name = 'فارسی/پارسی (ایران‎)'; @@ -94,6 +92,14 @@ Template.userFormsLayout.helpers({ name = 'Latviešu'; } else if (lang.name === 'Español') { name = 'español'; + } else if (lang.name === 'es_419') { + name = 'español de América Latina'; + } else if (lang.name === 'es-419') { + name = 'español de América Latina'; + } else if (lang.name === 'Español de América Latina') { + name = 'español de América Latina'; + } else if (lang.name === 'es-LA') { + name = 'español de América Latina'; } else if (lang.name === 'Español de Argentina') { name = 'español de Argentina'; } else if (lang.name === 'Español de Chile') { @@ -104,6 +110,8 @@ Template.userFormsLayout.helpers({ name = 'español de México'; } else if (lang.name === 'es-PY') { name = 'español de Paraguayo'; + } else if (lang.name === 'Español de Paraguayo') { + name = 'español de Paraguayo'; } else if (lang.name === 'Español de Perú') { name = 'español de Perú'; } else if (lang.name === 'Español de Puerto Rico') { diff --git a/client/components/settings/peopleBody.jade b/client/components/settings/peopleBody.jade index 7cb196973..d1d2228bf 100644 --- a/client/components/settings/peopleBody.jade +++ b/client/components/settings/peopleBody.jade @@ -117,17 +117,17 @@ template(name="peopleGeneral") template(name="newOrgRow") a.new-org - i.fa.fa-edit + i.fa.fa-plus-square | {{_ 'new'}} template(name="newTeamRow") a.new-team - i.fa.fa-edit + i.fa.fa-plus-square | {{_ 'new'}} template(name="newUserRow") a.new-user - i.fa.fa-edit + i.fa.fa-plus-square | {{_ 'new'}} template(name="orgRow") diff --git a/client/components/settings/settingBody.jade b/client/components/settings/settingBody.jade index 84d7a1b18..f8cfc3a59 100644 --- a/client/components/settings/settingBody.jade +++ b/client/components/settings/settingBody.jade @@ -122,6 +122,8 @@ template(name='email') template(name='accountSettings') ul#account-setting.setting-detail + li + button.js-all-hide-system-messages.primary {{_ 'hide-system-messages-of-all-users'}} li.accounts-form .title {{_ 'accounts-allowEmailChange'}} .form-group.flex @@ -129,23 +131,18 @@ template(name='accountSettings') span {{_ 'yes'}} input.wekan-form-control#accounts-allowEmailChange(type="radio" name="allowEmailChange" value="false" checked="{{#unless allowEmailChange}}checked{{/unless}}") span {{_ 'no'}} - li - li.accounts-form .title {{_ 'accounts-allowUserNameChange'}} .form-group.flex input.wekan-form-control#accounts-allowUserNameChange(type="radio" name="allowUserNameChange" value="true" checked="{{#if allowUserNameChange}}checked{{/if}}") span {{_ 'yes'}} input.wekan-form-control#accounts-allowUserNameChange(type="radio" name="allowUserNameChange" value="false" checked="{{#unless allowUserNameChange}}checked{{/unless}}") span {{_ 'no'}} - li - li.accounts-form .title {{_ 'accounts-allowUserDelete'}} .form-group.flex input.wekan-form-control#accounts-allowUserDelete(type="radio" name="allowUserDelete" value="true" checked="{{#if allowUserDelete}}checked{{/if}}") span {{_ 'yes'}} input.wekan-form-control#accounts-allowUserDelete(type="radio" name="allowUserDelete" value="false" checked="{{#unless allowUserDelete}}checked{{/unless}}") span {{_ 'no'}} - li button.js-accounts-save.primary {{_ 'save'}} template(name='announcementSettings') diff --git a/client/components/settings/settingBody.js b/client/components/settings/settingBody.js index 68126589e..596b40613 100644 --- a/client/components/settings/settingBody.js +++ b/client/components/settings/settingBody.js @@ -274,7 +274,6 @@ BlazeComponent.extendComponent({ $set: { booleanValue: allowUserDelete }, }); }, - allowEmailChange() { return AccountSettings.findOne('accounts-allowEmailChange').booleanValue; }, @@ -284,12 +283,31 @@ BlazeComponent.extendComponent({ allowUserDelete() { return AccountSettings.findOne('accounts-allowUserDelete').booleanValue; }, + allHideSystemMessages() { + Meteor.call('setAllUsersHideSystemMessages', (err, ret) => { + if (!err && ret) { + if (ret === true) { + const message = `${TAPi18n.__( + 'now-system-messages-of-all-users-are-hidden', + )}`; + alert(message); + } + } else { + const reason = err.reason || ''; + const message = `${TAPi18n.__(err.error)}\n${reason}`; + alert(message); + } + }); + }, events() { return [ { 'click button.js-accounts-save': this.saveAccountsChange, }, + { + 'click button.js-all-hide-system-messages': this.allHideSystemMessages, + }, ]; }, }).register('accountSettings'); diff --git a/client/components/users/userHeader.js b/client/components/users/userHeader.js index 1e291ecac..7b484bc48 100644 --- a/client/components/users/userHeader.js +++ b/client/components/users/userHeader.js @@ -171,8 +171,6 @@ Template.changeLanguagePopup.helpers({ } else if (lang.name === 'ar-EG') { // ar-EG = Arabic (Egypt), simply Masri (مَصرى, [ˈmɑsˤɾi], Egyptian, Masr refers to Cairo) name = 'مَصرى'; - } else if (lang.name === 'es-PY') { - name = 'Español de Paraguayo'; } else if (lang.name === 'fa-IR') { // fa-IR = Persian (Iran) name = 'فارسی/پارسی (ایران‎)'; @@ -188,6 +186,14 @@ Template.changeLanguagePopup.helpers({ name = 'Latviešu'; } else if (lang.name === 'Español') { name = 'español'; + } else if (lang.name === 'es_419') { + name = 'español de América Latina'; + } else if (lang.name === 'es-419') { + name = 'español de América Latina'; + } else if (lang.name === 'Español de América Latina') { + name = 'español de América Latina'; + } else if (lang.name === 'es-LA') { + name = 'español de América Latina'; } else if (lang.name === 'Español de Argentina') { name = 'español de Argentina'; } else if (lang.name === 'Español de Chile') { @@ -198,6 +204,8 @@ Template.changeLanguagePopup.helpers({ name = 'español de México'; } else if (lang.name === 'es-PY') { name = 'español de Paraguayo'; + } else if (lang.name === 'Español de Paraguayo') { + name = 'español de Paraguayo'; } else if (lang.name === 'Español de Perú') { name = 'español de Perú'; } else if (lang.name === 'Español de Puerto Rico') { diff --git a/i18n/ar-EG.i18n.json b/i18n/ar-EG.i18n.json index fa6f0b52b..65b8bfc9e 100644 --- a/i18n/ar-EG.i18n.json +++ b/i18n/ar-EG.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/ar.i18n.json b/i18n/ar.i18n.json index 3975ba899..10e64c627 100644 --- a/i18n/ar.i18n.json +++ b/i18n/ar.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/bg.i18n.json b/i18n/bg.i18n.json index aa8a1a0bc..f151e8267 100644 --- a/i18n/bg.i18n.json +++ b/i18n/bg.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/br.i18n.json b/i18n/br.i18n.json index ce5d644ec..3010240b8 100644 --- a/i18n/br.i18n.json +++ b/i18n/br.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/ca.i18n.json b/i18n/ca.i18n.json index 05f501278..f9f09e12d 100644 --- a/i18n/ca.i18n.json +++ b/i18n/ca.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/cs.i18n.json b/i18n/cs.i18n.json index bcb1530f4..7a8715b7c 100644 --- a/i18n/cs.i18n.json +++ b/i18n/cs.i18n.json @@ -906,7 +906,7 @@ "operator-modified": "modifikováno", "operator-sort": "třídění", "operator-comment": "komentář", - "operator-has": "has", + "operator-has": "má", "operator-limit": "limit", "predicate-archived": "archivováno", "predicate-open": "otevřít", @@ -980,5 +980,8 @@ "due-date": "Požadovaný termín", "title-alphabetically": "Nadpis (Abecedně)", "created-at-newest-first": "Vyvtořeno (Od nejnovějších)", - "created-at-oldest-first": "Vytvořeno (Od nejstarších)" + "created-at-oldest-first": "Vytvořeno (Od nejstarších)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/da.i18n.json b/i18n/da.i18n.json index 944039a16..2a5c632ce 100644 --- a/i18n/da.i18n.json +++ b/i18n/da.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/de.i18n.json b/i18n/de.i18n.json index c5a01d6e5..b58601cff 100644 --- a/i18n/de.i18n.json +++ b/i18n/de.i18n.json @@ -980,5 +980,8 @@ "due-date": "Fälligkeitsdatum", "title-alphabetically": "Überschrift (alphabetisch)", "created-at-newest-first": "Erstelldatum (neueste zuerst)", - "created-at-oldest-first": "Erstelldatum (älteste zuerst)" + "created-at-oldest-first": "Erstelldatum (älteste zuerst)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Alle System-Nachrichten aller Nutzer verbergen", + "now-system-messages-of-all-users-are-hidden": "Alle System-Nachrichten aller Nutzer sind nun verborgen" } diff --git a/i18n/el.i18n.json b/i18n/el.i18n.json index 80cb97a05..18296c660 100644 --- a/i18n/el.i18n.json +++ b/i18n/el.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/en-GB.i18n.json b/i18n/en-GB.i18n.json index 9a306ce44..82a20625f 100644 --- a/i18n/en-GB.i18n.json +++ b/i18n/en-GB.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json index 9f3489df8..564b92e25 100644 --- a/i18n/en.i18n.json +++ b/i18n/en.i18n.json @@ -983,5 +983,8 @@ "server-error-troubleshooting": "Please submit the error generated by the server.\nFor a snap installation on Linux, run: `sudo journalctl -u 'snap.wekan.*'`", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/eo.i18n.json b/i18n/eo.i18n.json index 9219e3843..1bc18bdc9 100644 --- a/i18n/eo.i18n.json +++ b/i18n/eo.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/es-AR.i18n.json b/i18n/es-AR.i18n.json index 69e50d842..765d857c5 100644 --- a/i18n/es-AR.i18n.json +++ b/i18n/es-AR.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/es-CL.i18n.json b/i18n/es-CL.i18n.json index 5fb689cf2..7fc24476f 100644 --- a/i18n/es-CL.i18n.json +++ b/i18n/es-CL.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/es-LA.i18n.json b/i18n/es-LA.i18n.json new file mode 100644 index 000000000..65b8bfc9e --- /dev/null +++ b/i18n/es-LA.i18n.json @@ -0,0 +1,987 @@ +{ + "accept": "Accept", + "act-activity-notify": "Activity Notification", + "act-addAttachment": "added attachment __attachment__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-removeChecklistItem": "removed checklist item __checklistItem__ from checklist __checkList__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-checkedItem": "checked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-uncheckedItem": "unchecked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-completeChecklist": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-editComment": "edited comment on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-deleteComment": "deleted comment on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-createBoard": "created board __board__", + "act-createSwimlane": "created swimlane __swimlane__ to board __board__", + "act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__", + "act-createCustomField": "created custom field __customField__ at board __board__", + "act-deleteCustomField": "deleted custom field __customField__ at board __board__", + "act-setCustomField": "edited custom field __customField__: __customFieldValue__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-createList": "added list __list__ to board __board__", + "act-addBoardMember": "added member __member__ to board __board__", + "act-archivedBoard": "Board __board__ moved to Archive", + "act-archivedCard": "Card __card__ at list __list__ at swimlane __swimlane__ at board __board__ moved to Archive", + "act-archivedList": "List __list__ at swimlane __swimlane__ at board __board__ moved to Archive", + "act-archivedSwimlane": "Swimlane __swimlane__ at board __board__ moved to Archive", + "act-importBoard": "imported board __board__", + "act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__", + "act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__", + "act-joinMember": "added member __member__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__", + "act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__", + "act-removeBoardMember": "removed member __member__ from board __board__", + "act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__", + "act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-withBoardTitle": "__board__", + "act-withCardTitle": "[__board__] __card__", + "actions": "Actions", + "activities": "Activities", + "activity": "Activity", + "activity-added": "added %s to %s", + "activity-archived": "%s moved to Archive", + "activity-attached": "attached %s to %s", + "activity-created": "created %s", + "activity-customfield-created": "created custom field %s", + "activity-excluded": "excluded %s from %s", + "activity-imported": "imported %s into %s from %s", + "activity-imported-board": "imported %s from %s", + "activity-joined": "joined %s", + "activity-moved": "moved %s from %s to %s", + "activity-on": "on %s", + "activity-removed": "removed %s from %s", + "activity-sent": "sent %s to %s", + "activity-unjoined": "unjoined %s", + "activity-subtask-added": "added subtask to %s", + "activity-checked-item": "checked %s in checklist %s of %s", + "activity-unchecked-item": "unchecked %s in checklist %s of %s", + "activity-checklist-added": "added checklist to %s", + "activity-checklist-removed": "removed a checklist from %s", + "activity-checklist-completed": "completed checklist %s of %s", + "activity-checklist-uncompleted": "uncompleted the checklist %s of %s", + "activity-checklist-item-added": "added checklist item to '%s' in %s", + "activity-checklist-item-removed": "removed a checklist item from '%s' in %s", + "add": "Add", + "activity-checked-item-card": "checked %s in checklist %s", + "activity-unchecked-item-card": "unchecked %s in checklist %s", + "activity-checklist-completed-card": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "activity-checklist-uncompleted-card": "uncompleted the checklist %s", + "activity-editComment": "edited comment %s", + "activity-deleteComment": "deleted comment %s", + "activity-receivedDate": "edited received date to %s of %s", + "activity-startDate": "edited start date to %s of %s", + "activity-dueDate": "edited due date to %s of %s", + "activity-endDate": "edited end date to %s of %s", + "add-attachment": "Add Attachment", + "add-board": "Add Board", + "add-card": "Add Card", + "add-swimlane": "Add Swimlane", + "add-subtask": "Add Subtask", + "add-checklist": "Add Checklist", + "add-checklist-item": "Add an item to checklist", + "add-cover": "Add Cover", + "add-label": "Add Label", + "add-list": "Add List", + "add-members": "Add Members", + "added": "Added", + "addMemberPopup-title": "Members", + "admin": "Admin", + "admin-desc": "Can view and edit cards, remove members, and change settings for the board.", + "admin-announcement": "Announcement", + "admin-announcement-active": "Active System-Wide Announcement", + "admin-announcement-title": "Announcement from Administrator", + "all-boards": "All boards", + "and-n-other-card": "And __count__ other card", + "and-n-other-card_plural": "And __count__ other cards", + "apply": "Apply", + "app-is-offline": "Loading, please wait. Refreshing the page will cause data loss. If loading does not work, please check that server has not stopped.", + "archive": "Move to Archive", + "archive-all": "Move All to Archive", + "archive-board": "Move Board to Archive", + "archive-card": "Move Card to Archive", + "archive-list": "Move List to Archive", + "archive-swimlane": "Move Swimlane to Archive", + "archive-selection": "Move selection to Archive", + "archiveBoardPopup-title": "Move Board to Archive?", + "archived-items": "Archive", + "archived-boards": "Boards in Archive", + "restore-board": "Restore Board", + "no-archived-boards": "No Boards in Archive.", + "archives": "Archive", + "template": "Template", + "templates": "Templates", + "assign-member": "Assign member", + "attached": "attached", + "attachment": "Attachment", + "attachment-delete-pop": "Deleting an attachment is permanent. There is no undo.", + "attachmentDeletePopup-title": "Delete Attachment?", + "attachments": "Attachments", + "auto-watch": "Automatically watch boards when they are created", + "avatar-too-big": "The avatar is too large (520KB max)", + "back": "Back", + "board-change-color": "Change color", + "board-nb-stars": "%s stars", + "board-not-found": "Board not found", + "board-private-info": "This board will be private.", + "board-public-info": "This board will be public.", + "boardChangeColorPopup-title": "Change Board Background", + "boardChangeTitlePopup-title": "Rename Board", + "boardChangeVisibilityPopup-title": "Change Visibility", + "boardChangeWatchPopup-title": "Change Watch", + "boardMenuPopup-title": "Board Settings", + "boardChangeViewPopup-title": "Board View", + "boards": "Boards", + "board-view": "Board View", + "board-view-cal": "Calendar", + "board-view-swimlanes": "Swimlanes", + "board-view-collapse": "Collapse", + "board-view-gantt": "Gantt", + "board-view-lists": "Lists", + "bucket-example": "Like “Bucket List” for example", + "cancel": "Cancel", + "card-archived": "This card is moved to Archive.", + "board-archived": "This board is moved to Archive.", + "card-comments-title": "This card has %s comment.", + "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.", + "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.", + "card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.", + "card-due": "Due", + "card-due-on": "Due on", + "card-spent": "Spent Time", + "card-edit-attachments": "Edit attachments", + "card-edit-custom-fields": "Edit custom fields", + "card-edit-labels": "Edit labels", + "card-edit-members": "Edit members", + "card-labels-title": "Change the labels for the card.", + "card-members-title": "Add or remove members of the board from the card.", + "card-start": "Start", + "card-start-on": "Starts on", + "cardAttachmentsPopup-title": "Attach From", + "cardCustomField-datePopup-title": "Change date", + "cardCustomFieldsPopup-title": "Edit custom fields", + "cardStartVotingPopup-title": "Start a vote", + "positiveVoteMembersPopup-title": "Proponents", + "negativeVoteMembersPopup-title": "Opponents", + "card-edit-voting": "Edit voting", + "editVoteEndDatePopup-title": "Change vote end date", + "allowNonBoardMembers": "Allow all logged in users", + "vote-question": "Voting question", + "vote-public": "Show who voted what", + "vote-for-it": "for it", + "vote-against": "against", + "deleteVotePopup-title": "Delete vote?", + "vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.", + "cardDeletePopup-title": "Delete Card?", + "cardDetailsActionsPopup-title": "Card Actions", + "cardLabelsPopup-title": "Labels", + "cardMembersPopup-title": "Members", + "cardMorePopup-title": "More", + "cardTemplatePopup-title": "Create template", + "cards": "Cards", + "cards-count": "Cards", + "casSignIn": "Sign In with CAS", + "cardType-card": "Card", + "cardType-linkedCard": "Linked Card", + "cardType-linkedBoard": "Linked Board", + "change": "Change", + "change-avatar": "Change Avatar", + "change-password": "Change Password", + "change-permissions": "Change permissions", + "change-settings": "Change Settings", + "changeAvatarPopup-title": "Change Avatar", + "changeLanguagePopup-title": "Change Language", + "changePasswordPopup-title": "Change Password", + "changePermissionsPopup-title": "Change Permissions", + "changeSettingsPopup-title": "Change Settings", + "subtasks": "Subtasks", + "checklists": "Checklists", + "click-to-star": "Click to star this board.", + "click-to-unstar": "Click to unstar this board.", + "clipboard": "Clipboard or drag & drop", + "close": "Close", + "close-board": "Close Board", + "close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.", + "color-black": "black", + "color-blue": "blue", + "color-crimson": "crimson", + "color-darkgreen": "darkgreen", + "color-gold": "gold", + "color-gray": "gray", + "color-green": "green", + "color-indigo": "indigo", + "color-lime": "lime", + "color-magenta": "magenta", + "color-mistyrose": "mistyrose", + "color-navy": "navy", + "color-orange": "orange", + "color-paleturquoise": "paleturquoise", + "color-peachpuff": "peachpuff", + "color-pink": "pink", + "color-plum": "plum", + "color-purple": "purple", + "color-red": "red", + "color-saddlebrown": "saddlebrown", + "color-silver": "silver", + "color-sky": "sky", + "color-slateblue": "slateblue", + "color-white": "white", + "color-yellow": "yellow", + "unset-color": "Unset", + "comment": "Comment", + "comment-placeholder": "Write Comment", + "comment-only": "Comment only", + "comment-only-desc": "Can comment on cards only.", + "no-comments": "No comments", + "no-comments-desc": "Can not see comments and activities.", + "worker": "Worker", + "worker-desc": "Can only move cards, assign itself to card and comment.", + "computer": "Computer", + "confirm-subtask-delete-dialog": "Are you sure you want to delete subtask?", + "confirm-checklist-delete-dialog": "Are you sure you want to delete checklist?", + "copy-card-link-to-clipboard": "Copy card link to clipboard", + "linkCardPopup-title": "Link Card", + "searchElementPopup-title": "Search", + "copyCardPopup-title": "Copy Card", + "copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards", + "copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format", + "copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]", + "create": "Create", + "createBoardPopup-title": "Create Board", + "chooseBoardSourcePopup-title": "Import board", + "createLabelPopup-title": "Create Label", + "createCustomField": "Create Field", + "createCustomFieldPopup-title": "Create Field", + "current": "current", + "custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.", + "custom-field-checkbox": "Checkbox", + "custom-field-currency": "Currency", + "custom-field-currency-option": "Currency Code", + "custom-field-date": "Date", + "custom-field-dropdown": "Dropdown List", + "custom-field-dropdown-none": "(none)", + "custom-field-dropdown-options": "List Options", + "custom-field-dropdown-options-placeholder": "Press enter to add more options", + "custom-field-dropdown-unknown": "(unknown)", + "custom-field-number": "Number", + "custom-field-text": "Text", + "custom-fields": "Custom Fields", + "date": "Date", + "decline": "Decline", + "default-avatar": "Default avatar", + "delete": "Delete", + "deleteCustomFieldPopup-title": "Delete Custom Field?", + "deleteLabelPopup-title": "Delete Label?", + "description": "Description", + "disambiguateMultiLabelPopup-title": "Disambiguate Label Action", + "disambiguateMultiMemberPopup-title": "Disambiguate Member Action", + "discard": "Discard", + "done": "Done", + "download": "Download", + "edit": "Edit", + "edit-avatar": "Change Avatar", + "edit-profile": "Edit Profile", + "edit-wip-limit": "Edit WIP Limit", + "soft-wip-limit": "Soft WIP Limit", + "editCardStartDatePopup-title": "Change start date", + "editCardDueDatePopup-title": "Change due date", + "editCustomFieldPopup-title": "Edit Field", + "editCardSpentTimePopup-title": "Change spent time", + "editLabelPopup-title": "Change Label", + "editNotificationPopup-title": "Edit Notification", + "editProfilePopup-title": "Edit Profile", + "email": "Email", + "email-enrollAccount-subject": "An account created for you on __siteName__", + "email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.", + "email-fail": "Sending email failed", + "email-fail-text": "Error trying to send email", + "email-invalid": "Invalid email", + "email-invite": "Invite via Email", + "email-invite-subject": "__inviter__ sent you an invitation", + "email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.", + "email-resetPassword-subject": "Reset your password on __siteName__", + "email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.", + "email-sent": "Email sent", + "email-verifyEmail-subject": "Verify your email address on __siteName__", + "email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.", + "enable-wip-limit": "Enable WIP Limit", + "error-board-doesNotExist": "This board does not exist", + "error-board-notAdmin": "You need to be admin of this board to do that", + "error-board-notAMember": "You need to be a member of this board to do that", + "error-json-malformed": "Your text is not valid JSON", + "error-json-schema": "Your JSON data does not include the proper information in the correct format", + "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", + "error-list-doesNotExist": "This list does not exist", + "error-user-doesNotExist": "This user does not exist", + "error-user-notAllowSelf": "You can not invite yourself", + "error-user-notCreated": "This user is not created", + "error-username-taken": "This username is already taken", + "error-orgname-taken": "This organization name is already taken", + "error-teamname-taken": "This team name is already taken", + "error-email-taken": "Email has already been taken", + "export-board": "Export board", + "export-board-json": "Export board to JSON", + "export-board-csv": "Export board to CSV", + "export-board-tsv": "Export board to TSV", + "export-board-excel": "Export board to Excel", + "user-can-not-export-excel": "User can not export Excel", + "export-board-html": "Export board to HTML", + "exportBoardPopup-title": "Export board", + "sort": "Sort", + "sort-desc": "Click to Sort List", + "list-sort-by": "Sort the List By:", + "list-label-modifiedAt": "Last Access Time", + "list-label-title": "Name of the List", + "list-label-sort": "Your Manual Order", + "list-label-short-modifiedAt": "(L)", + "list-label-short-title": "(N)", + "list-label-short-sort": "(M)", + "filter": "Filter", + "filter-cards": "Filter Cards or Lists", + "list-filter-label": "Filter List by Title", + "filter-clear": "Clear filter", + "filter-labels-label": "Filter by label", + "filter-no-label": "No label", + "filter-member-label": "Filter by member", + "filter-no-member": "No member", + "filter-assignee-label": "Filter by assignee", + "filter-no-assignee": "No assignee", + "filter-custom-fields-label": "Filter by Custom Fields", + "filter-no-custom-fields": "No Custom Fields", + "filter-show-archive": "Show archived lists", + "filter-hide-empty": "Hide empty lists", + "filter-on": "Filter is on", + "filter-on-desc": "You are filtering cards on this board. Click here to edit filter.", + "filter-to-selection": "Filter to selection", + "other-filters-label": "Other Filters", + "advanced-filter-label": "Advanced Filter", + "advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i", + "fullname": "Full Name", + "header-logo-title": "Go back to your boards page.", + "hide-system-messages": "Hide system messages", + "headerBarCreateBoardPopup-title": "Create Board", + "home": "Home", + "import": "Import", + "impersonate-user": "Impersonate user", + "link": "Link", + "import-board": "import board", + "import-board-c": "Import board", + "import-board-title-trello": "Import board from Trello", + "import-board-title-wekan": "Import board from previous export", + "import-board-title-csv": "Import board from CSV/TSV", + "from-trello": "From Trello", + "from-wekan": "From previous export", + "from-csv": "From CSV/TSV", + "import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.", + "import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .", + "import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.", + "import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.", + "import-json-placeholder": "Paste your valid JSON data here", + "import-csv-placeholder": "Paste your valid CSV/TSV data here", + "import-map-members": "Map members", + "import-members-map": "Your imported board has some members. Please map the members you want to import to your users", + "import-members-map-note": "Note: Unmapped members will be assigned to the current user.", + "import-show-user-mapping": "Review members mapping", + "import-user-select": "Pick your existing user you want to use as this member", + "importMapMembersAddPopup-title": "Select member", + "info": "Version", + "initials": "Initials", + "invalid-date": "Invalid date", + "invalid-time": "Invalid time", + "invalid-user": "Invalid user", + "joined": "joined", + "just-invited": "You are just invited to this board", + "keyboard-shortcuts": "Keyboard shortcuts", + "label-create": "Create Label", + "label-default": "%s label (default)", + "label-delete-pop": "There is no undo. This will remove this label from all cards and destroy its history.", + "labels": "Labels", + "language": "Language", + "last-admin-desc": "You can’t change roles because there must be at least one admin.", + "leave-board": "Leave Board", + "leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.", + "leaveBoardPopup-title": "Leave Board ?", + "link-card": "Link to this card", + "list-archive-cards": "Move all cards in this list to Archive", + "list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.", + "list-move-cards": "Move all cards in this list", + "list-select-cards": "Select all cards in this list", + "set-color-list": "Set Color", + "listActionPopup-title": "List Actions", + "settingsUserPopup-title": "User Settings", + "swimlaneActionPopup-title": "Swimlane Actions", + "swimlaneAddPopup-title": "Add a Swimlane below", + "listImportCardPopup-title": "Import a Trello card", + "listImportCardsTsvPopup-title": "Import Excel CSV/TSV", + "listMorePopup-title": "More", + "link-list": "Link to this list", + "list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.", + "list-delete-suggest-archive": "You can move a list to Archive to remove it from the board and preserve the activity.", + "lists": "Lists", + "swimlanes": "Swimlanes", + "log-out": "Log Out", + "log-in": "Log In", + "loginPopup-title": "Log In", + "memberMenuPopup-title": "Member Settings", + "members": "Members", + "menu": "Menu", + "move-selection": "Move selection", + "moveCardPopup-title": "Move Card", + "moveCardToBottom-title": "Move to Bottom", + "moveCardToTop-title": "Move to Top", + "moveSelectionPopup-title": "Move selection", + "multi-selection": "Multi-Selection", + "multi-selection-label": "Set label for selection", + "multi-selection-member": "Set member for selection", + "multi-selection-on": "Multi-Selection is on", + "muted": "Muted", + "muted-info": "You will never be notified of any changes in this board", + "my-boards": "My Boards", + "name": "Name", + "no-archived-cards": "No cards in Archive.", + "no-archived-lists": "No lists in Archive.", + "no-archived-swimlanes": "No swimlanes in Archive.", + "no-results": "No results", + "normal": "Normal", + "normal-desc": "Can view and edit cards. Can't change settings.", + "not-accepted-yet": "Invitation not accepted yet", + "notify-participate": "Receive updates to any cards you participate as creater or member", + "notify-watch": "Receive updates to any boards, lists, or cards you’re watching", + "optional": "optional", + "or": "or", + "page-maybe-private": "This page may be private. You may be able to view it by logging in.", + "page-not-found": "Page not found.", + "password": "Password", + "paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)", + "participating": "Participating", + "preview": "Preview", + "previewAttachedImagePopup-title": "Preview", + "previewClipboardImagePopup-title": "Preview", + "private": "Private", + "private-desc": "This board is private. Only people added to the board can view and edit it.", + "profile": "Profile", + "public": "Public", + "public-desc": "This board is public. It's visible to anyone with the link and will show up in search engines like Google. Only people added to the board can edit.", + "quick-access-description": "Star a board to add a shortcut in this bar.", + "remove-cover": "Remove Cover", + "remove-from-board": "Remove from Board", + "remove-label": "Remove Label", + "listDeletePopup-title": "Delete List ?", + "remove-member": "Remove Member", + "remove-member-from-card": "Remove from Card", + "remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.", + "removeMemberPopup-title": "Remove Member?", + "rename": "Rename", + "rename-board": "Rename Board", + "restore": "Restore", + "save": "Save", + "search": "Search", + "rules": "Rules", + "search-cards": "Search from card/list titles, descriptions and custom fields on this board", + "search-example": "Write text you search and press Enter", + "select-color": "Select Color", + "select-board": "Select Board", + "set-wip-limit-value": "Set a limit for the maximum number of tasks in this list", + "setWipLimitPopup-title": "Set WIP Limit", + "shortcut-assign-self": "Assign yourself to current card", + "shortcut-autocomplete-emoji": "Autocomplete emoji", + "shortcut-autocomplete-members": "Autocomplete members", + "shortcut-clear-filters": "Clear all filters", + "shortcut-close-dialog": "Close Dialog", + "shortcut-filter-my-cards": "Filter my cards", + "shortcut-show-shortcuts": "Bring up this shortcuts list", + "shortcut-toggle-filterbar": "Toggle Filter Sidebar", + "shortcut-toggle-searchbar": "Toggle Search Sidebar", + "shortcut-toggle-sidebar": "Toggle Board Sidebar", + "show-cards-minimum-count": "Show cards count if list contains more than", + "sidebar-open": "Open Sidebar", + "sidebar-close": "Close Sidebar", + "signupPopup-title": "Create an Account", + "star-board-title": "Click to star this board. It will show up at top of your boards list.", + "starred-boards": "Starred Boards", + "starred-boards-description": "Starred boards show up at the top of your boards list.", + "subscribe": "Subscribe", + "team": "Team", + "this-board": "this board", + "this-card": "this card", + "spent-time-hours": "Spent time (hours)", + "overtime-hours": "Overtime (hours)", + "overtime": "Overtime", + "has-overtime-cards": "Has overtime cards", + "has-spenttime-cards": "Has spent time cards", + "time": "Time", + "title": "Title", + "tracking": "Tracking", + "tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.", + "type": "Type", + "unassign-member": "Unassign member", + "unsaved-description": "You have an unsaved description.", + "unwatch": "Unwatch", + "upload": "Upload", + "upload-avatar": "Upload an avatar", + "uploaded-avatar": "Uploaded an avatar", + "custom-top-left-corner-logo-image-url": "Custom Top Left Corner Logo Image URL", + "custom-top-left-corner-logo-link-url": "Custom Top Left Corner Logo Link URL", + "custom-top-left-corner-logo-height": "Custom Top Left Corner Logo Height. Default: 27", + "custom-login-logo-image-url": "Custom Login Logo Image URL", + "custom-login-logo-link-url": "Custom Login Logo Link URL", + "text-below-custom-login-logo": "Text below Custom Login Logo", + "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line", + "username": "Username", + "import-usernames": "Import Usernames", + "view-it": "View it", + "warn-list-archived": "warning: this card is in an list at Archive", + "watch": "Watch", + "watching": "Watching", + "watching-info": "You will be notified of any change in this board", + "welcome-board": "Welcome Board", + "welcome-swimlane": "Milestone 1", + "welcome-list1": "Basics", + "welcome-list2": "Advanced", + "card-templates-swimlane": "Card Templates", + "list-templates-swimlane": "List Templates", + "board-templates-swimlane": "Board Templates", + "what-to-do": "What do you want to do?", + "wipLimitErrorPopup-title": "Invalid WIP Limit", + "wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.", + "wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.", + "admin-panel": "Admin Panel", + "settings": "Settings", + "people": "People", + "registration": "Registration", + "disable-self-registration": "Disable Self-Registration", + "invite": "Invite", + "invite-people": "Invite People", + "to-boards": "To board(s)", + "email-addresses": "Email Addresses", + "smtp-host-description": "The address of the SMTP server that handles your emails.", + "smtp-port-description": "The port your SMTP server uses for outgoing emails.", + "smtp-tls-description": "Enable TLS support for SMTP server", + "smtp-host": "SMTP Host", + "smtp-port": "SMTP Port", + "smtp-username": "Username", + "smtp-password": "Password", + "smtp-tls": "TLS support", + "send-from": "From", + "send-smtp-test": "Send a test email to yourself", + "invitation-code": "Invitation Code", + "email-invite-register-subject": "__inviter__ sent you an invitation", + "email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to kanban board for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.", + "email-smtp-test-subject": "SMTP Test Email", + "email-smtp-test-text": "You have successfully sent an email", + "error-invitation-code-not-exist": "Invitation code doesn't exist", + "error-notAuthorized": "You are not authorized to view this page.", + "webhook-title": "Webhook Name", + "webhook-token": "Token (Optional for Authentication)", + "outgoing-webhooks": "Outgoing Webhooks", + "bidirectional-webhooks": "Two-Way Webhooks", + "outgoingWebhooksPopup-title": "Outgoing Webhooks", + "boardCardTitlePopup-title": "Card Title Filter", + "disable-webhook": "Disable This Webhook", + "global-webhook": "Global Webhooks", + "new-outgoing-webhook": "New Outgoing Webhook", + "no-name": "(Unknown)", + "Node_version": "Node version", + "Meteor_version": "Meteor version", + "MongoDB_version": "MongoDB version", + "MongoDB_storage_engine": "MongoDB storage engine", + "MongoDB_Oplog_enabled": "MongoDB Oplog enabled", + "OS_Arch": "OS Arch", + "OS_Cpus": "OS CPU Count", + "OS_Freemem": "OS Free Memory", + "OS_Loadavg": "OS Load Average", + "OS_Platform": "OS Platform", + "OS_Release": "OS Release", + "OS_Totalmem": "OS Total Memory", + "OS_Type": "OS Type", + "OS_Uptime": "OS Uptime", + "days": "days", + "hours": "hours", + "minutes": "minutes", + "seconds": "seconds", + "show-field-on-card": "Show this field on card", + "automatically-field-on-card": "Add field to new cards", + "always-field-on-card": "Add field to all cards", + "showLabel-field-on-card": "Show field label on minicard", + "yes": "Yes", + "no": "No", + "accounts": "Accounts", + "accounts-allowEmailChange": "Allow Email Change", + "accounts-allowUserNameChange": "Allow Username Change", + "createdAt": "Created at", + "modifiedAt": "Modified at", + "verified": "Verified", + "active": "Active", + "card-received": "Received", + "card-received-on": "Received on", + "card-end": "End", + "card-end-on": "Ends on", + "editCardReceivedDatePopup-title": "Change received date", + "editCardEndDatePopup-title": "Change end date", + "setCardColorPopup-title": "Set color", + "setCardActionsColorPopup-title": "Choose a color", + "setSwimlaneColorPopup-title": "Choose a color", + "setListColorPopup-title": "Choose a color", + "assigned-by": "Assigned By", + "requested-by": "Requested By", + "board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.", + "delete-board-confirm-popup": "All lists, cards, labels, and activities will be deleted and you won't be able to recover the board contents. There is no undo.", + "boardDeletePopup-title": "Delete Board?", + "delete-board": "Delete Board", + "default-subtasks-board": "Subtasks for __board__ board", + "default": "Default", + "queue": "Queue", + "subtask-settings": "Subtasks Settings", + "card-settings": "Card Settings", + "boardSubtaskSettingsPopup-title": "Board Subtasks Settings", + "boardCardSettingsPopup-title": "Card Settings", + "deposit-subtasks-board": "Deposit subtasks to this board:", + "deposit-subtasks-list": "Landing list for subtasks deposited here:", + "show-parent-in-minicard": "Show parent in minicard:", + "prefix-with-full-path": "Prefix with full path", + "prefix-with-parent": "Prefix with parent", + "subtext-with-full-path": "Subtext with full path", + "subtext-with-parent": "Subtext with parent", + "change-card-parent": "Change card's parent", + "parent-card": "Parent card", + "source-board": "Source board", + "no-parent": "Don't show parent", + "activity-added-label": "added label '%s' to %s", + "activity-removed-label": "removed label '%s' from %s", + "activity-delete-attach": "deleted an attachment from %s", + "activity-added-label-card": "added label '%s'", + "activity-removed-label-card": "removed label '%s'", + "activity-delete-attach-card": "deleted an attachment", + "activity-set-customfield": "set custom field '%s' to '%s' in %s", + "activity-unset-customfield": "unset custom field '%s' in %s", + "r-rule": "Rule", + "r-add-trigger": "Add trigger", + "r-add-action": "Add action", + "r-board-rules": "Board rules", + "r-add-rule": "Add rule", + "r-view-rule": "View rule", + "r-delete-rule": "Delete rule", + "r-new-rule-name": "New rule title", + "r-no-rules": "No rules", + "r-trigger": "Trigger", + "r-action": "Action", + "r-when-a-card": "When a card", + "r-is": "is", + "r-is-moved": "is moved", + "r-added-to": "Added to", + "r-removed-from": "Removed from", + "r-the-board": "the board", + "r-list": "list", + "list": "List", + "set-filter": "Set Filter", + "r-moved-to": "Moved to", + "r-moved-from": "Moved from", + "r-archived": "Moved to Archive", + "r-unarchived": "Restored from Archive", + "r-a-card": "a card", + "r-when-a-label-is": "When a label is", + "r-when-the-label": "When the label", + "r-list-name": "list name", + "r-when-a-member": "When a member is", + "r-when-the-member": "When the member", + "r-name": "name", + "r-when-a-attach": "When an attachment", + "r-when-a-checklist": "When a checklist is", + "r-when-the-checklist": "When the checklist", + "r-completed": "Completed", + "r-made-incomplete": "Made incomplete", + "r-when-a-item": "When a checklist item is", + "r-when-the-item": "When the checklist item", + "r-checked": "Checked", + "r-unchecked": "Unchecked", + "r-move-card-to": "Move card to", + "r-top-of": "Top of", + "r-bottom-of": "Bottom of", + "r-its-list": "its list", + "r-archive": "Move to Archive", + "r-unarchive": "Restore from Archive", + "r-card": "card", + "r-add": "Add", + "r-remove": "Remove", + "r-label": "label", + "r-member": "member", + "r-remove-all": "Remove all members from the card", + "r-set-color": "Set color to", + "r-checklist": "checklist", + "r-check-all": "Check all", + "r-uncheck-all": "Uncheck all", + "r-items-check": "items of checklist", + "r-check": "Check", + "r-uncheck": "Uncheck", + "r-item": "item", + "r-of-checklist": "of checklist", + "r-send-email": "Send an email", + "r-to": "to", + "r-of": "of", + "r-subject": "subject", + "r-rule-details": "Rule details", + "r-d-move-to-top-gen": "Move card to top of its list", + "r-d-move-to-top-spec": "Move card to top of list", + "r-d-move-to-bottom-gen": "Move card to bottom of its list", + "r-d-move-to-bottom-spec": "Move card to bottom of list", + "r-d-send-email": "Send email", + "r-d-send-email-to": "to", + "r-d-send-email-subject": "subject", + "r-d-send-email-message": "message", + "r-d-archive": "Move card to Archive", + "r-d-unarchive": "Restore card from Archive", + "r-d-add-label": "Add label", + "r-d-remove-label": "Remove label", + "r-create-card": "Create new card", + "r-in-list": "in list", + "r-in-swimlane": "in swimlane", + "r-d-add-member": "Add member", + "r-d-remove-member": "Remove member", + "r-d-remove-all-member": "Remove all member", + "r-d-check-all": "Check all items of a list", + "r-d-uncheck-all": "Uncheck all items of a list", + "r-d-check-one": "Check item", + "r-d-uncheck-one": "Uncheck item", + "r-d-check-of-list": "of checklist", + "r-d-add-checklist": "Add checklist", + "r-d-remove-checklist": "Remove checklist", + "r-by": "by", + "r-add-checklist": "Add checklist", + "r-with-items": "with items", + "r-items-list": "item1,item2,item3", + "r-add-swimlane": "Add swimlane", + "r-swimlane-name": "swimlane name", + "r-board-note": "Note: leave a field empty to match every possible value.", + "r-checklist-note": "Note: checklist's items have to be written as comma separated values.", + "r-when-a-card-is-moved": "When a card is moved to another list", + "r-set": "Set", + "r-update": "Update", + "r-datefield": "date field", + "r-df-start-at": "start", + "r-df-due-at": "due", + "r-df-end-at": "end", + "r-df-received-at": "received", + "r-to-current-datetime": "to current date/time", + "r-remove-value-from": "Remove value from", + "ldap": "LDAP", + "oauth2": "OAuth2", + "cas": "CAS", + "authentication-method": "Authentication method", + "authentication-type": "Authentication type", + "custom-product-name": "Custom Product Name", + "layout": "Layout", + "hide-logo": "Hide Logo", + "add-custom-html-after-body-start": "Add Custom HTML after start", + "add-custom-html-before-body-end": "Add Custom HTML before end", + "error-undefined": "Something went wrong", + "error-ldap-login": "An error occurred while trying to login", + "display-authentication-method": "Display Authentication Method", + "default-authentication-method": "Default Authentication Method", + "duplicate-board": "Duplicate Board", + "org-number": "The number of organizations is:", + "team-number": "The number of teams is:", + "people-number": "The number of people is:", + "swimlaneDeletePopup-title": "Delete Swimlane ?", + "swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.", + "restore-all": "Restore all", + "delete-all": "Delete all", + "loading": "Loading, please wait.", + "previous_as": "last time was", + "act-a-dueAt": "modified due time to \nWhen: __timeValue__\nWhere: __card__\n previous due was __timeOldValue__", + "act-a-endAt": "modified ending time to __timeValue__ from (__timeOldValue__)", + "act-a-startAt": "modified starting time to __timeValue__ from (__timeOldValue__)", + "act-a-receivedAt": "modified received time to __timeValue__ from (__timeOldValue__)", + "a-dueAt": "modified due time to be", + "a-endAt": "modified ending time to be", + "a-startAt": "modified starting time to be", + "a-receivedAt": "modified received time to be", + "almostdue": "current due time %s is approaching", + "pastdue": "current due time %s is past", + "duenow": "current due time %s is today", + "act-newDue": "__list__/__card__ has 1st due reminder [__board__]", + "act-withDue": "__list__/__card__ due reminders [__board__]", + "act-almostdue": "was reminding the current due (__timeValue__) of __card__ is approaching", + "act-pastdue": "was reminding the current due (__timeValue__) of __card__ is past", + "act-duenow": "was reminding the current due (__timeValue__) of __card__ is now", + "act-atUserComment": "You were mentioned in [__board__] __list__/__card__", + "delete-user-confirm-popup": "Are you sure you want to delete this account? There is no undo.", + "accounts-allowUserDelete": "Allow users to self delete their account", + "hide-minicard-label-text": "Hide minicard label text", + "show-desktop-drag-handles": "Show desktop drag handles", + "assignee": "Assignee", + "cardAssigneesPopup-title": "Assignee", + "addmore-detail": "Add a more detailed description", + "show-on-card": "Show on Card", + "new": "New", + "editOrgPopup-title": "Edit Organization", + "newOrgPopup-title": "New Organization", + "editTeamPopup-title": "Edit Team", + "newTeamPopup-title": "New Team", + "editUserPopup-title": "Edit User", + "newUserPopup-title": "New User", + "notifications": "Notifications", + "view-all": "View All", + "filter-by-unread": "Filter by Unread", + "mark-all-as-read": "Mark all as read", + "remove-all-read": "Remove all read", + "allow-rename": "Allow Rename", + "allowRenamePopup-title": "Allow Rename", + "start-day-of-week": "Set day of the week start", + "monday": "Monday", + "tuesday": "Tuesday", + "wednesday": "Wednesday", + "thursday": "Thursday", + "friday": "Friday", + "saturday": "Saturday", + "sunday": "Sunday", + "status": "Status", + "swimlane": "Swimlane", + "owner": "Owner", + "last-modified-at": "Last modified at", + "last-activity": "Last activity", + "voting": "Voting", + "archived": "Archived", + "delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has", + "delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list", + "hide-checked-items": "Hide checked items", + "task": "Task", + "create-task": "Create Task", + "ok": "OK", + "organizations": "Organizations", + "teams": "Teams", + "displayName": "Display Name", + "shortName": "Short Name", + "website": "Website", + "person": "Person", + "my-cards": "My Cards", + "card": "Card", + "board": "Board", + "context-separator": "/", + "myCardsSortChange-title": "My Cards Sort", + "myCardsSortChangePopup-title": "My Cards Sort", + "myCardsSortChange-choice-board": "By Board", + "myCardsSortChange-choice-dueat": "By Due Date", + "dueCards-title": "Due Cards", + "dueCardsViewChange-title": "Due Cards View", + "dueCardsViewChangePopup-title": "Due Cards View", + "dueCardsViewChange-choice-me": "Me", + "dueCardsViewChange-choice-all": "All Users", + "dueCardsViewChange-choice-all-description": "Shows all incomplete cards with a *Due* date from boards for which the user has permission.", + "broken-cards": "Broken Cards", + "board-title-not-found": "Board '%s' not found.", + "swimlane-title-not-found": "Swimlane '%s' not found.", + "list-title-not-found": "List '%s' not found.", + "label-not-found": "Label '%s' not found.", + "label-color-not-found": "Label color %s not found.", + "user-username-not-found": "Username '%s' not found.", + "comment-not-found": "Card with comment containing text '%s' not found.", + "globalSearch-title": "Search All Boards", + "no-cards-found": "No Cards Found", + "one-card-found": "One Card Found", + "n-cards-found": "%s Cards Found", + "n-n-of-n-cards-found": "__start__-__end__ of __total__ Cards Found", + "operator-board": "board", + "operator-board-abbrev": "b", + "operator-swimlane": "swimlane", + "operator-swimlane-abbrev": "s", + "operator-list": "list", + "operator-list-abbrev": "l", + "operator-label": "label", + "operator-label-abbrev": "#", + "operator-user": "user", + "operator-user-abbrev": "@", + "operator-member": "member", + "operator-member-abbrev": "m", + "operator-assignee": "assignee", + "operator-assignee-abbrev": "a", + "operator-status": "status", + "operator-due": "due", + "operator-created": "created", + "operator-modified": "modified", + "operator-sort": "sort", + "operator-comment": "comment", + "operator-has": "has", + "operator-limit": "limit", + "predicate-archived": "archived", + "predicate-open": "open", + "predicate-ended": "ended", + "predicate-all": "all", + "predicate-overdue": "overdue", + "predicate-week": "week", + "predicate-month": "month", + "predicate-quarter": "quarter", + "predicate-year": "year", + "predicate-due": "due", + "predicate-modified": "modified", + "predicate-created": "created", + "predicate-attachment": "attachment", + "predicate-description": "description", + "predicate-checklist": "checklist", + "predicate-start": "start", + "predicate-end": "end", + "predicate-assignee": "assignee", + "predicate-member": "member", + "predicate-public": "public", + "predicate-private": "private", + "operator-unknown-error": "%s is not an operator", + "operator-number-expected": "operator __operator__ expected a number, got '__value__'", + "operator-sort-invalid": "sort of '%s' is invalid", + "operator-status-invalid": "'%s' is not a valid status", + "operator-has-invalid": "%s is not a valid existence check", + "operator-limit-invalid": "%s is not a valid limit. Limit should be a positive integer.", + "next-page": "Next Page", + "previous-page": "Previous Page", + "heading-notes": "Notes", + "globalSearch-instructions-heading": "Search Instructions", + "globalSearch-instructions-description": "Searches can include operators to refine the search. Operators are specified by writing the operator name and value separated by a colon. For example, an operator specification of `list:Blocked` would limit the search to cards that are contained in a list named *Blocked*. If the value contains spaces or special characters it must be enclosed in quotation marks (e.g. `__operator_list__:\"To Review\"`).", + "globalSearch-instructions-operators": "Available operators:", + "globalSearch-instructions-operator-board": "`__operator_board__:` - cards in boards matching the specified *<title>*", + "globalSearch-instructions-operator-list": "`__operator_list__:<title>` - cards in lists matching the specified *<title>*", + "globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:<title>` - cards in swimlanes matching the specified *<title>*", + "globalSearch-instructions-operator-comment": "`__operator_comment__:<text>` - cards with a comment containing *<text>*.", + "globalSearch-instructions-operator-label": "`__operator_label__:<color>` `__operator_label__:<name>` - cards that have a label matching *<color>* or *<name>", + "globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<name | color>` - shorthand for `__operator_label__:<color>` or `__operator_label__:<name>`", + "globalSearch-instructions-operator-user": "`__operator_user__:<username>` - cards where *<username>* is a *member* or *assignee*", + "globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - shorthand for `user:<username>`", + "globalSearch-instructions-operator-member": "`__operator_member__:<username>` - cards where *<username>* is a *member*", + "globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` - cards where *<username>* is an *assignee*", + "globalSearch-instructions-operator-due": "`__operator_due__:<n>` - cards which are due up to *<n>* days from now. `__operator_due__:__predicate_overdue__ lists all cards past their due date.", + "globalSearch-instructions-operator-created": "`__operator_created__:<n>` - cards which were created *<n>* days ago or less", + "globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - cards which were modified *<n>* days ago or less", + "globalSearch-instructions-operator-status": "`__operator_status__:<status>` - where *<status>* is one of the following:", + "globalSearch-instructions-status-archived": "`__predicate_archived__` - archived cards", + "globalSearch-instructions-status-all": "`__predicate_all__` - all archived and unarchived cards", + "globalSearch-instructions-status-ended": "`__predicate_ended__` - cards with an end date", + "globalSearch-instructions-status-public": "`__predicate_public__` - cards only in public boards", + "globalSearch-instructions-status-private": "`__predicate_private__` - cards only in private boards", + "globalSearch-instructions-operator-has": "`__operator_has__:<field>` - where *<field>* is one of `__predicate_attachment__`, `__predicate_checklist__`, `__predicate_description__`, `__predicate_start__`, `__predicate_due__`, `__predicate_end__`, `__predicate_assignee__` or `__predicate_member__`. Placing a `-` in front of *<field>* searches for the absence of a value in that field (e.g. `has:-due` searches for cards without a due date).", + "globalSearch-instructions-operator-sort": "`__operator_sort__:<sort-name>` - where *<sort-name>* is one of `__predicate_due__`, `__predicate_created__` or `__predicate_modified__`. For a descending sort, place a `-` in front of the sort name.", + "globalSearch-instructions-operator-limit": "`__operator_limit__:<n>` - where *<n>* is a positive integer expressing the number of cards to be displayed per page.", + "globalSearch-instructions-notes-1": "Multiple operators may be specified.", + "globalSearch-instructions-notes-2": "Similar operators are *OR*ed together. Cards that match any of the conditions will be returned.\n`__operator_list__:Available __operator_list__:Blocked` would return cards contained in any list named *Blocked* or *Available*.", + "globalSearch-instructions-notes-3": "Differing operators are *AND*ed together. Only cards that match all of the differing operators are returned. `__operator_list__:Available __operator_label__:red` returns only cards in the list *Available* with a *red* label.", + "globalSearch-instructions-notes-3-2": "Days can be specified as a positive or negative integer or using `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` or `__predicate_year__` for the current period.", + "globalSearch-instructions-notes-4": "Text searches are case insensitive.", + "globalSearch-instructions-notes-5": "By default archived cards are not searched.", + "link-to-search": "Link to this search", + "excel-font": "Arial", + "number": "Number", + "label-colors": "Label Colors", + "label-names": "Label Names", + "archived-at": "archived at", + "sort-cards": "Sort Cards", + "cardsSortPopup-title": "Sort Cards", + "due-date": "Due Date", + "title-alphabetically": "Title (Alphabetically)", + "created-at-newest-first": "Created At (Newest First)", + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" +} diff --git a/i18n/es-MX.i18n.json b/i18n/es-MX.i18n.json index 23bbbfbac..0d8c15234 100644 --- a/i18n/es-MX.i18n.json +++ b/i18n/es-MX.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/es-PE.i18n.json b/i18n/es-PE.i18n.json index eb0e479d9..ada34b58f 100644 --- a/i18n/es-PE.i18n.json +++ b/i18n/es-PE.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/es-PY.i18n.json b/i18n/es-PY.i18n.json index fa6f0b52b..65b8bfc9e 100644 --- a/i18n/es-PY.i18n.json +++ b/i18n/es-PY.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/es.i18n.json b/i18n/es.i18n.json index 9e754b313..1c7edd072 100644 --- a/i18n/es.i18n.json +++ b/i18n/es.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/eu.i18n.json b/i18n/eu.i18n.json index 8467348cd..f2d1f8d55 100644 --- a/i18n/eu.i18n.json +++ b/i18n/eu.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/fa-IR.i18n.json b/i18n/fa-IR.i18n.json index fa6f0b52b..65b8bfc9e 100644 --- a/i18n/fa-IR.i18n.json +++ b/i18n/fa-IR.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/fa.i18n.json b/i18n/fa.i18n.json index 1e7089e33..f62d1b00c 100644 --- a/i18n/fa.i18n.json +++ b/i18n/fa.i18n.json @@ -980,5 +980,8 @@ "due-date": "تاریخ اجرا", "title-alphabetically": "تیتر (به صورت الفبا)", "created-at-newest-first": "ساخته شده در تاریخ (با اولویت جدید تر)", - "created-at-oldest-first": "ساخته شده در تاریخ (با اولویت قدیمی تر)" + "created-at-oldest-first": "ساخته شده در تاریخ (با اولویت قدیمی تر)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/fi.i18n.json b/i18n/fi.i18n.json index 16f2f412c..ff70162d0 100644 --- a/i18n/fi.i18n.json +++ b/i18n/fi.i18n.json @@ -980,5 +980,8 @@ "due-date": "Eräpäivä", "title-alphabetically": "Otsikko (Aakkosjärjestyksessä)", "created-at-newest-first": "Luotu (Uusin ensin)", - "created-at-oldest-first": "Luotu (Vanhin ensin)" + "created-at-oldest-first": "Luotu (Vanhin ensin)", + "links-heading": "Linkit", + "hide-system-messages-of-all-users": "Piilota kaikkien käyttäjien järjestelmäviestit", + "now-system-messages-of-all-users-are-hidden": "Nyt kaikkien käyttäjien järjestelmäviestit on piilotettu" } diff --git a/i18n/fr.i18n.json b/i18n/fr.i18n.json index 03b2e9ac9..29d54e74d 100644 --- a/i18n/fr.i18n.json +++ b/i18n/fr.i18n.json @@ -980,5 +980,8 @@ "due-date": "Date d'échéance", "title-alphabetically": "Titre (Alphabétiquement)", "created-at-newest-first": "Date de création (Plus récentes en premier)", - "created-at-oldest-first": "Date de création (Plus anciennes en premier)" + "created-at-oldest-first": "Date de création (Plus anciennes en premier)", + "links-heading": "Liens", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/gl.i18n.json b/i18n/gl.i18n.json index a3d64595a..90b3e59eb 100644 --- a/i18n/gl.i18n.json +++ b/i18n/gl.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/he.i18n.json b/i18n/he.i18n.json index 20b359c5e..4e3444b50 100644 --- a/i18n/he.i18n.json +++ b/i18n/he.i18n.json @@ -980,5 +980,8 @@ "due-date": "מועד סיום", "title-alphabetically": "כותרת (לפי האלפבית)", "created-at-newest-first": "מועד יצירה (החדש ביותר בהתחלה)", - "created-at-oldest-first": "מועד יצירה (הישן ביותר בהתחלה)" + "created-at-oldest-first": "מועד יצירה (הישן ביותר בהתחלה)", + "links-heading": "קישורים", + "hide-system-messages-of-all-users": "להסתיר את הודעות המערכת של כל המשתמשים", + "now-system-messages-of-all-users-are-hidden": "כעת הודעות המערכת של כל המשתמשים מוסתרות" } diff --git a/i18n/hi.i18n.json b/i18n/hi.i18n.json index 9a6a0bd99..f5a36dc3e 100644 --- a/i18n/hi.i18n.json +++ b/i18n/hi.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/hr.i18n.json b/i18n/hr.i18n.json index c9299d81e..adf5ef544 100644 --- a/i18n/hr.i18n.json +++ b/i18n/hr.i18n.json @@ -132,10 +132,10 @@ "board-private-info": "This board will be <strong>private</strong>.", "board-public-info": "This board will be <strong>public</strong>.", "boardChangeColorPopup-title": "Change Board Background", - "boardChangeTitlePopup-title": "Rename Board", - "boardChangeVisibilityPopup-title": "Change Visibility", - "boardChangeWatchPopup-title": "Change Watch", - "boardMenuPopup-title": "Board Settings", + "boardChangeTitlePopup-title": "Preimenuj ploču", + "boardChangeVisibilityPopup-title": "Promijeni vidljivost", + "boardChangeWatchPopup-title": "Promijeni praćenje", + "boardMenuPopup-title": "Postavke ploče", "boardChangeViewPopup-title": "Board View", "boards": "Ploče", "board-view": "Board View", @@ -144,27 +144,27 @@ "board-view-collapse": "Collapse", "board-view-gantt": "Gantt", "board-view-lists": "Liste", - "bucket-example": "Like “Bucket List” for example", + "bucket-example": "Na primjer, poput \"Liste zadataka\"", "cancel": "Odustani", "card-archived": "Ova kartica prebačena je u arhivu.", "board-archived": "Ova ploča prebačena je u arhivu.", "card-comments-title": "Broj komentara na ovoj kartici je %s.", - "card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.", - "card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.", - "card-delete-suggest-archive": "You can move a card to Archive to remove it from the board and preserve the activity.", - "card-due": "Due", - "card-due-on": "Due on", + "card-delete-notice": "Brisanje je trajno. Izgubit ćete sve radnje povezane s ovom karticom.", + "card-delete-pop": "Sve radnje će biti uklonjene iz liste aktivnosti i nećete moći ponovo otvoriti karticu. Nema poništavanja radnje.", + "card-delete-suggest-archive": "Karticu možete premjestiti u arhivu da biste je uklonili s ploče i sačuvali aktivnost.", + "card-due": "Dospijeće", + "card-due-on": "Dospijeće na", "card-spent": "Provedeno vrijeme", "card-edit-attachments": "Uredi privitke", "card-edit-custom-fields": "Uredi prilagođena polja", "card-edit-labels": "Uredi oznake", "card-edit-members": "Uredi korisnike", - "card-labels-title": "Change the labels for the card.", - "card-members-title": "Add or remove members of the board from the card.", - "card-start": "Start", - "card-start-on": "Starts on", - "cardAttachmentsPopup-title": "Attach From", - "cardCustomField-datePopup-title": "Change date", + "card-labels-title": "Promijenite oznake na kartici.", + "card-members-title": "Dodajte ili uklonite članove ploče s kartice.", + "card-start": "Početak", + "card-start-on": "Počinje od", + "cardAttachmentsPopup-title": "Privitak od", + "cardCustomField-datePopup-title": "Promjena datuma", "cardCustomFieldsPopup-title": "Uredi prilagođena polja", "cardStartVotingPopup-title": "Pokreni glasanje", "positiveVoteMembersPopup-title": "Proponents", @@ -186,7 +186,7 @@ "cardTemplatePopup-title": "Dodati predložak", "cards": "Kartice", "cards-count": "Kartice", - "casSignIn": "Sign In with CAS", + "casSignIn": "Prijavite se s CAS-om", "cardType-card": "Kartica", "cardType-linkedCard": "Povezane kartice", "cardType-linkedBoard": "Povezane ploče", @@ -202,12 +202,12 @@ "changeSettingsPopup-title": "Promijeni postavke", "subtasks": "Podzadaci", "checklists": "Liste provjere", - "click-to-star": "Click to star this board.", - "click-to-unstar": "Click to unstar this board.", - "clipboard": "Clipboard or drag & drop", + "click-to-star": "Kliknite da biste ovu ploču označili zvjezdicom.", + "click-to-unstar": "Kliknite da biste uklonili zvjezdicu s ove ploče.", + "clipboard": "Međuspremnik ili povucite i ispustite", "close": "Zatvori", "close-board": "Zatvori ploču", - "close-board-pop": "You will be able to restore the board by clicking the “Archive” button from the home header.", + "close-board-pop": "Ploču ćete moći vratiti klikom na gumb \"Arhiviraj\" u zaglavlju.", "color-black": "crna", "color-blue": "plava", "color-crimson": "tamnocrvena", @@ -219,26 +219,26 @@ "color-lime": "lime", "color-magenta": "magenta", "color-mistyrose": "mistyrose", - "color-navy": "navy", + "color-navy": "mornarsko plava", "color-orange": "orange", "color-paleturquoise": "paleturquoise", "color-peachpuff": "peachpuff", - "color-pink": "pink", + "color-pink": "ružičasta", "color-plum": "plum", - "color-purple": "purple", - "color-red": "red", + "color-purple": "ljubičasta", + "color-red": "crvena", "color-saddlebrown": "saddlebrown", - "color-silver": "silver", + "color-silver": "srebrna", "color-sky": "sky", "color-slateblue": "slateblue", - "color-white": "white", - "color-yellow": "yellow", + "color-white": "bijela", + "color-yellow": "žuta", "unset-color": "Unset", "comment": "Komentiraj", "comment-placeholder": "Napiši komentar", "comment-only": "Comment only", "comment-only-desc": "Can comment on cards only.", - "no-comments": "No comments", + "no-comments": "Nema komentara", "no-comments-desc": "Can not see comments and activities.", "worker": "Worker", "worker-desc": "Can only move cards, assign itself to card and comment.", @@ -266,8 +266,8 @@ "custom-field-date": "Datum", "custom-field-dropdown": "Padajuća lista", "custom-field-dropdown-none": "(none)", - "custom-field-dropdown-options": "List Options", - "custom-field-dropdown-options-placeholder": "Press enter to add more options", + "custom-field-dropdown-options": "Opcije popisa", + "custom-field-dropdown-options-placeholder": "Pritisnite enter da biste dodali više opcija", "custom-field-dropdown-unknown": "(nepoznato)", "custom-field-number": "Broj", "custom-field-text": "Tekst", @@ -478,7 +478,7 @@ "remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.", "removeMemberPopup-title": "Ukloniti korisnika?", "rename": "Preimenovati", - "rename-board": "Rename Board", + "rename-board": "Preimenuj ploču", "restore": "Restore", "save": "Spremi", "search": "Traži", @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/hu.i18n.json b/i18n/hu.i18n.json index af8809445..5c04163f7 100644 --- a/i18n/hu.i18n.json +++ b/i18n/hu.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/hy.i18n.json b/i18n/hy.i18n.json index f14dc8c94..bc6a49a29 100644 --- a/i18n/hy.i18n.json +++ b/i18n/hy.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/id.i18n.json b/i18n/id.i18n.json index 035e31fd2..0f51d603e 100644 --- a/i18n/id.i18n.json +++ b/i18n/id.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/ig.i18n.json b/i18n/ig.i18n.json index 96b9efe00..300b7df01 100644 --- a/i18n/ig.i18n.json +++ b/i18n/ig.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/it.i18n.json b/i18n/it.i18n.json index 54a9710b9..edc58d0b6 100644 --- a/i18n/it.i18n.json +++ b/i18n/it.i18n.json @@ -980,5 +980,8 @@ "due-date": "Data di scadenza", "title-alphabetically": "Titolo (ordine alfabetico)", "created-at-newest-first": "Data di creazione (dalla più nuova)", - "created-at-oldest-first": "Data di creazione (dalla più vecchia)" + "created-at-oldest-first": "Data di creazione (dalla più vecchia)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/ja.i18n.json b/i18n/ja.i18n.json index 4e81b9032..58c4192dc 100644 --- a/i18n/ja.i18n.json +++ b/i18n/ja.i18n.json @@ -322,8 +322,8 @@ "error-user-notAllowSelf": "自分を招待することはできません。", "error-user-notCreated": "ユーザーが作成されていません", "error-username-taken": "このユーザ名は既に使用されています", - "error-orgname-taken": "This organization name is already taken", - "error-teamname-taken": "This team name is already taken", + "error-orgname-taken": "この組織名はすでに使われています", + "error-teamname-taken": "このチーム名はすでに使われています", "error-email-taken": "メールは既に受け取られています", "export-board": "ボードのエクスポート", "export-board-json": "ボードをJSONにエクスポート", @@ -931,7 +931,7 @@ "predicate-private": "非公開", "operator-unknown-error": "%sは演算子ではありません", "operator-number-expected": "演算子 __operator__ には数値の指定が必要ですが、「__value__」が入力されました", - "operator-sort-invalid": "sort of '%s' is invalid", + "operator-sort-invalid": "ソート「%s」は無効です", "operator-status-invalid": "「%s」は無効なステータスです", "operator-has-invalid": "%s is not a valid existence check", "operator-limit-invalid": "%s is not a valid limit. Limit should be a positive integer.", @@ -980,5 +980,8 @@ "due-date": "期限日", "title-alphabetically": "タイトル(アルファベット順)", "created-at-newest-first": "作成日(新しいものから)", - "created-at-oldest-first": "作成日(古いものから)" + "created-at-oldest-first": "作成日(古いものから)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/ka.i18n.json b/i18n/ka.i18n.json index 5a2add7f7..b8c3f17bf 100644 --- a/i18n/ka.i18n.json +++ b/i18n/ka.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/km.i18n.json b/i18n/km.i18n.json index 6b1a028a2..05d1d2b6b 100644 --- a/i18n/km.i18n.json +++ b/i18n/km.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/ko.i18n.json b/i18n/ko.i18n.json index fd9afb755..99a81f479 100644 --- a/i18n/ko.i18n.json +++ b/i18n/ko.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/lt.i18n.json b/i18n/lt.i18n.json index fa6f0b52b..65b8bfc9e 100644 --- a/i18n/lt.i18n.json +++ b/i18n/lt.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/lv.i18n.json b/i18n/lv.i18n.json index f076d69eb..3c154ccb6 100644 --- a/i18n/lv.i18n.json +++ b/i18n/lv.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/mk.i18n.json b/i18n/mk.i18n.json index eb1043fca..910d9de2f 100644 --- a/i18n/mk.i18n.json +++ b/i18n/mk.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/mn.i18n.json b/i18n/mn.i18n.json index 37e514cea..ef490b83c 100644 --- a/i18n/mn.i18n.json +++ b/i18n/mn.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/nl.i18n.json b/i18n/nl.i18n.json index 45aa62446..a51ffa7e9 100644 --- a/i18n/nl.i18n.json +++ b/i18n/nl.i18n.json @@ -532,7 +532,7 @@ "custom-login-logo-image-url": "URL Voor Maatwerk Login Logo Afbeelding", "custom-login-logo-link-url": "URL Voor Maatwerk Login Logo Link", "text-below-custom-login-logo": "Tekst onder Maatwerk Login Logo", - "automatic-linked-url-schemes": "Maatwerk URL's die automatisch klikbaar zouden moeten zijn. Een URL per regel.", + "automatic-linked-url-schemes": "Maatwerk URL-schema's die automatisch klikbaar zouden moeten zijn. Een URL per regel.", "username": "Gebruikersnaam", "import-usernames": "Importeer Gebruikersnamen", "view-it": "Bekijk het", @@ -980,5 +980,8 @@ "due-date": "vervaldatum", "title-alphabetically": "Titel (Alfabetisch)", "created-at-newest-first": "Aangemaakt op (Nieuwste Eerst)", - "created-at-oldest-first": "Aangemaakt op (Oudste Eerst)" + "created-at-oldest-first": "Aangemaakt op (Oudste Eerst)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Verberg systeemberichten voor alle gebruikers", + "now-system-messages-of-all-users-are-hidden": "Systeemberichten zijn nu verborgen voor alle gebruikers" } diff --git a/i18n/oc.i18n.json b/i18n/oc.i18n.json index 192f218c5..239510ab8 100644 --- a/i18n/oc.i18n.json +++ b/i18n/oc.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/pa.i18n.json b/i18n/pa.i18n.json index fa6f0b52b..65b8bfc9e 100644 --- a/i18n/pa.i18n.json +++ b/i18n/pa.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/pl.i18n.json b/i18n/pl.i18n.json index bf36d3819..7008117f0 100644 --- a/i18n/pl.i18n.json +++ b/i18n/pl.i18n.json @@ -532,7 +532,7 @@ "custom-login-logo-image-url": "URL obrazu logo ekranu logowania", "custom-login-logo-link-url": "URL linku logo ekranu logowania", "text-below-custom-login-logo": "Tekst pod logo na ekranie logowania", - "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line", + "automatic-linked-url-schemes": "Schematy adresów URL, które powinny być automatycznie przekształcane w aktywne. Wpisz jeden schemat URL w każdej linii", "username": "Nazwa użytkownika", "import-usernames": "Importuj użytkowników", "view-it": "Zobacz", @@ -980,5 +980,8 @@ "due-date": "terminu wykonania", "title-alphabetically": "nazwy (alfabetycznie)", "created-at-newest-first": "daty utworzenia (najpierw najnowsze)", - "created-at-oldest-first": "daty utworzenia (najpierw najstarsze)" + "created-at-oldest-first": "daty utworzenia (najpierw najstarsze)", + "links-heading": "Linki", + "hide-system-messages-of-all-users": "Ukryj powiadomienia systemowe wszystkich użytkowników", + "now-system-messages-of-all-users-are-hidden": "Odtąd powiadomienia systemowe wszystkich użytkowników będą ukryte" } diff --git a/i18n/pt-BR.i18n.json b/i18n/pt-BR.i18n.json index 06d19bef5..1cce9e3df 100644 --- a/i18n/pt-BR.i18n.json +++ b/i18n/pt-BR.i18n.json @@ -980,5 +980,8 @@ "due-date": "Prazo Final", "title-alphabetically": "Título (alfabeticamente) ", "created-at-newest-first": "Criado em (o mais recente primeiro) ", - "created-at-oldest-first": "Criado em (o mais antigo primeiro) " + "created-at-oldest-first": "Criado em (o mais antigo primeiro) ", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Esconder mensagens do sistema para todos os usuários", + "now-system-messages-of-all-users-are-hidden": "Agora as mensagens do sistema para todos os usuários estão escondidas " } diff --git a/i18n/pt.i18n.json b/i18n/pt.i18n.json index 4f8f24368..042382969 100644 --- a/i18n/pt.i18n.json +++ b/i18n/pt.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/ro.i18n.json b/i18n/ro.i18n.json index 145763e3c..f0a716193 100644 --- a/i18n/ro.i18n.json +++ b/i18n/ro.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/ru.i18n.json b/i18n/ru.i18n.json index 63fba70cd..44d74cb8d 100644 --- a/i18n/ru.i18n.json +++ b/i18n/ru.i18n.json @@ -943,30 +943,30 @@ "globalSearch-instructions-operators": "Доступные операторы:", "globalSearch-instructions-operator-board": "`__operator_board__:<title>` - карточки соответствуют: *<title>*", "globalSearch-instructions-operator-list": "`__operator_list__:<title>` - карточки в списке соответствуют: *<title>*", - "globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:<title>` - cards in swimlanes matching the specified *<title>*", - "globalSearch-instructions-operator-comment": "`__operator_comment__:<text>` - cards with a comment containing *<text>*.", - "globalSearch-instructions-operator-label": "`__operator_label__:<color>` `__operator_label__:<name>` - cards that have a label matching *<color>* or *<name>", - "globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<name | color>` - shorthand for `__operator_label__:<color>` or `__operator_label__:<name>`", - "globalSearch-instructions-operator-user": "`__operator_user__:<username>` - cards where *<username>* is a *member* or *assignee*", - "globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - shorthand for `user:<username>`", - "globalSearch-instructions-operator-member": "`__operator_member__:<username>` - cards where *<username>* is a *member*", - "globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` - cards where *<username>* is an *assignee*", - "globalSearch-instructions-operator-due": "`__operator_due__:<n>` - cards which are due up to *<n>* days from now. `__operator_due__:__predicate_overdue__ lists all cards past their due date.", - "globalSearch-instructions-operator-created": "`__operator_created__:<n>` - cards which were created *<n>* days ago or less", - "globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - cards which were modified *<n>* days ago or less", - "globalSearch-instructions-operator-status": "`__operator_status__:<status>` - where *<status>* is one of the following:", + "globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:<title>` - карточки на дорожках, соответствующих *<title>*", + "globalSearch-instructions-operator-comment": "`__operator_comment__:<text>` - карточки с комментарием содержащим *<text>*.", + "globalSearch-instructions-operator-label": "`__operator_label__:<color>` `__operator_label__:<name>` - карточки, которые имеют метку соответствующую *<color>* or *<name>", + "globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<name | color>` - сокращение для `__operator_label__:<color>` или `__operator_label__:<name>`", + "globalSearch-instructions-operator-user": "`__operator_user__:<username>` - карточки в которых *<username>* *участник* или *исполнитель*", + "globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - сокращение для `пользователь:<username>`", + "globalSearch-instructions-operator-member": "`__operator_member__:<username>` - карточки, в которых *<username>* *участник*", + "globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` - карточки, в которых *<username>* *исполнитель*", + "globalSearch-instructions-operator-due": "`__operator_due__:<n>` - карточки с датой завершения до *<n>* дней от текущей даты. `__operator_due__:__predicate_overdue__ список всех просроченных карточек.", + "globalSearch-instructions-operator-created": "`__operator_created__:<n>` - карточки, которые были созданы до *<n>* дней назад", + "globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - карточки, который изменены до *<n>* дней назад", + "globalSearch-instructions-operator-status": "`__operator_status__:<status>` - где *<status>* что-то из следующего:", "globalSearch-instructions-status-archived": "`__predicate_archived__` - архивированные карточки", "globalSearch-instructions-status-all": "`__predicate_all__` - все архивированные и не архивированные карточки", "globalSearch-instructions-status-ended": "`__predicate_ended__` - карточки с датой завершения", "globalSearch-instructions-status-public": "`__predicate_public__` - карточки только на публичных досках", "globalSearch-instructions-status-private": "`__predicate_private__` - карточки только на личных досках", - "globalSearch-instructions-operator-has": "`__operator_has__:<field>` - where *<field>* is one of `__predicate_attachment__`, `__predicate_checklist__`, `__predicate_description__`, `__predicate_start__`, `__predicate_due__`, `__predicate_end__`, `__predicate_assignee__` or `__predicate_member__`. Placing a `-` in front of *<field>* searches for the absence of a value in that field (e.g. `has:-due` searches for cards without a due date).", - "globalSearch-instructions-operator-sort": "`__operator_sort__:<sort-name>` - where *<sort-name>* is one of `__predicate_due__`, `__predicate_created__` or `__predicate_modified__`. For a descending sort, place a `-` in front of the sort name.", - "globalSearch-instructions-operator-limit": "`__operator_limit__:<n>` - where *<n>* is a positive integer expressing the number of cards to be displayed per page.", + "globalSearch-instructions-operator-has": "`__operator_has__:<field>` - где *<field>* что-либо из `__predicate_attachment__`, `__predicate_checklist__`, `__predicate_description__`, `__predicate_start__`, `__predicate_due__`, `__predicate_end__`, `__predicate_assignee__` или `__predicate_member__`. Указание `-` перед *<field>* производит поиск по отсутствию значения в указанном поле. (напр. `has:-due` поиск карточек без даты завершения).", + "globalSearch-instructions-operator-sort": "`__operator_sort__:<sort-name>` - где*<sort-name>* что-либо из `__predicate_due__`, `__predicate_created__` или `__predicate_modified__`. Для сортировки по убыванию, укажите `-` перед названием сортировки.", + "globalSearch-instructions-operator-limit": "`__operator_limit__:<n>` - где *<n>* положительное целое определяющее количество карточек на одной странице.", "globalSearch-instructions-notes-1": "Может быть задано несколько операторов.", "globalSearch-instructions-notes-2": "Одинаковые операторы объединяются логическим \"ИЛИ\", например:\n`__operator_list__:Available __operator_list__:Blocked` вернет карточки, которые содержатся в списке *Blocked* или *Available*.", "globalSearch-instructions-notes-3": "Разные операторы объединяются логическим \"И\". Возвращаются только объекты удовлетворяющие всем заданным условиям.`__operator_list__:Available __operator_label__:red` вернет карточки, которые содержатся в списке *Available* и имеют метку *red*.", - "globalSearch-instructions-notes-3-2": "Days can be specified as a positive or negative integer or using `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` or `__predicate_year__` for the current period.", + "globalSearch-instructions-notes-3-2": "Количество дней может быть задано положительным или отрицательным целым или используя `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` или `__predicate_year__` для текущего периода.", "globalSearch-instructions-notes-4": "Текстовый поиск нечувствителен к регистру символов.", "globalSearch-instructions-notes-5": "По умолчанию, поиск в архивированных карточках не производится.", "link-to-search": "Ссылка на этот поиск", @@ -980,5 +980,8 @@ "due-date": "Назначенная дата", "title-alphabetically": "Название (по алфавиту)", "created-at-newest-first": "Дата создания (сначала новые)", - "created-at-oldest-first": "Дата создания (сначала старые)" + "created-at-oldest-first": "Дата создания (сначала старые)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/sk.i18n.json b/i18n/sk.i18n.json index c9c78c86f..2e86d90a3 100644 --- a/i18n/sk.i18n.json +++ b/i18n/sk.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/sl.i18n.json b/i18n/sl.i18n.json index 4fa089df8..e200272f3 100644 --- a/i18n/sl.i18n.json +++ b/i18n/sl.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/sr.i18n.json b/i18n/sr.i18n.json index 864c7c955..b6927040a 100644 --- a/i18n/sr.i18n.json +++ b/i18n/sr.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/sv.i18n.json b/i18n/sv.i18n.json index 23b40f45f..9ba61d4c1 100644 --- a/i18n/sv.i18n.json +++ b/i18n/sv.i18n.json @@ -980,5 +980,8 @@ "due-date": "Förfallodatum", "title-alphabetically": "Titel (Alfabetisk)", "created-at-newest-first": "Skapad den (Nyast först)", - "created-at-oldest-first": "Skapad den (äldst först)" + "created-at-oldest-first": "Skapad den (äldst först)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/sw.i18n.json b/i18n/sw.i18n.json index 06cf38ed1..b5002bc8c 100644 --- a/i18n/sw.i18n.json +++ b/i18n/sw.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/ta.i18n.json b/i18n/ta.i18n.json index f7764e4d6..182625d62 100644 --- a/i18n/ta.i18n.json +++ b/i18n/ta.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/th.i18n.json b/i18n/th.i18n.json index 2cabf10ea..42536b6bd 100644 --- a/i18n/th.i18n.json +++ b/i18n/th.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/tr.i18n.json b/i18n/tr.i18n.json index 65a363a91..e3bdb3a6a 100644 --- a/i18n/tr.i18n.json +++ b/i18n/tr.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/uk.i18n.json b/i18n/uk.i18n.json index 58be767fb..e9ed67e2e 100644 --- a/i18n/uk.i18n.json +++ b/i18n/uk.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/vi.i18n.json b/i18n/vi.i18n.json index 26c1dffa5..9749dfc59 100644 --- a/i18n/vi.i18n.json +++ b/i18n/vi.i18n.json @@ -1,52 +1,52 @@ { "accept": "Chấp nhận", "act-activity-notify": "Thông báo hoạt động", - "act-addAttachment": "thêm tập tin đính kèm __attachment__ vào thẻ __list__ tại danh sách __list__ tại đường bơi __swimlane__ tại bảng __board__", - "act-deleteAttachment": "xóa tập tin đính kèm __attachment__ tại thẻ __card__ tại danh sách __list__ tại đường bơi __swimlane__ tại bảng __board__ ", - "act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", - "act-addLabel": "Đã thêm nhãn __label__ vào thẻ __card__ tại danh sách __list__ tại luồng __swimlane__ tại bảng __board__", - "act-addedLabel": "Đã thêm nhãn __label__ vào thẻ __card__ tại danh sách __list__ tại luồng __swimlane__ tại bảng __board__", - "act-removeLabel": "Đã xóa nhãn __label__ từ thẻ __card__ tại danh sách __list__ tại luồng __swimlane__ tại bảng __board__", - "act-removedLabel": "Đã xóa nhãn __label__ từ thẻ __card__ tại danh sách __list__ tại luồng __swimlane__ tại bảng __board__", - "act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__", - "act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", - "act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__", - "act-removeChecklistItem": "removed checklist item __checklistItem__ from checklist __checkList__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", - "act-checkedItem": "checked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", - "act-uncheckedItem": "unchecked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", - "act-completeChecklist": "đã hoàn thành checklist __checklist__ tại thẻ __card__ tại danh sách __list__ tại luồng __swimlane__ tại bảng __board__", - "act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__", - "act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__", - "act-editComment": "edited comment on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__", - "act-deleteComment": "deleted comment on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__", - "act-createBoard": "created board __board__", - "act-createSwimlane": "created swimlane __swimlane__ to board __board__", - "act-createCard": "created card __card__ to list __list__ at swimlane __swimlane__ at board __board__", + "act-addAttachment": "thêm tập tin đính kèm __attachment__ vào thẻ __list__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__", + "act-deleteAttachment": "xóa tập tin đính kèm __attachment__ tại thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__ ", + "act-addSubtask": "đã thêm nhiệm vụ con __subtask__ vào thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ at board __board__", + "act-addLabel": "Đã thêm nhãn __label__ vào thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__", + "act-addedLabel": "Đã thêm nhãn __label__ vào thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__", + "act-removeLabel": "Đã xóa nhãn __label__ từ thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__", + "act-removedLabel": "Đã xóa nhãn __label__ từ thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__", + "act-addChecklist": "đã thêm checklist __checklist__ vào thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__", + "act-addChecklistItem": "đã thêm mục checklist __checklistItem__ vào checklist __checklist__ tại thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__", + "act-removeChecklist": "đã xóa checklist __checklist__ từ thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__", + "act-removeChecklistItem": "đã xóa mục checklist __checklistItem__ từ checklist __checkList__ tại thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__", + "act-checkedItem": "đã đánh dấu hoàn thành mục __checklistItem__ của checklist __checklist__ tại thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__", + "act-uncheckedItem": "đã bỏ đánh dấu hoàn thành mục __checklistItem__ của checklist __checklist__ tại thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__", + "act-completeChecklist": "đã hoàn thành checklist __checklist__ tại thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__", + "act-uncompleteChecklist": "đã bỏ đánh dấu hoàn thành checklist __checklist__ tại thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__", + "act-addComment": "đã bình luận trên thẻ __card__: __comment__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__", + "act-editComment": "đã sửa bình luận trên thẻ __card__: __comment__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__", + "act-deleteComment": "đã xóa bình luận trên thẻ __card__: __comment__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__", + "act-createBoard": "đã tạo bảng __board__", + "act-createSwimlane": "đã tạo làn ngang __swimlane__ tới bảng __board__", + "act-createCard": "đã tạo thẻ __card__ vào danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__", "act-createCustomField": "đã tạo trường __customField__ tại bảng __board__", "act-deleteCustomField": "đã xóa trường tùy chỉnh __customField__ tại bảng __board__", - "act-setCustomField": "trường tùy chỉnh đã chỉnh sửa __customField__: __customFieldValue__ Tại thẻ __card__ tại danh sách __list__ tại luồng __swimlane__ tại bảng __board__", - "act-createList": "added list __list__ to board __board__", + "act-setCustomField": "trường tùy chỉnh đã chỉnh sửa __customField__: __customFieldValue__ Tại thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__", + "act-createList": "đã thêm danh sách __list__ vàng bảng __board__", "act-addBoardMember": "đã thêm thành viên __member__ vào bảng __board__", - "act-archivedBoard": "Board __board__ moved to Archive", - "act-archivedCard": "Card __card__ at list __list__ at swimlane __swimlane__ at board __board__ moved to Archive", - "act-archivedList": "List __list__ at swimlane __swimlane__ at board __board__ moved to Archive", - "act-archivedSwimlane": "Swimlane __swimlane__ at board __board__ moved to Archive", + "act-archivedBoard": "Bảng __board__ đã được chuyển đến Lưu trữ", + "act-archivedCard": "Thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__ được chuyển vào Lưu trữ", + "act-archivedList": "Danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__ đã chuyển đến Lưu trữ", + "act-archivedSwimlane": "Làn ngang __swimlane__ tại bảng __board__ được chuyển đến Lưu trữ", "act-importBoard": "đã nhập bảng __board__", - "act-importCard": "imported card __card__ to list __list__ at swimlane __swimlane__ at board __board__", - "act-importList": "imported list __list__ to swimlane __swimlane__ at board __board__", - "act-joinMember": "đã thêm thành viên __member__ vào thẻ __card__ tại danh sách __list__ tại luồng __swimlane__ at board __board__", - "act-moveCard": "moved card __card__ at board __board__ from list __oldList__ at swimlane __oldSwimlane__ to list __list__ at swimlane __swimlane__", - "act-moveCardToOtherBoard": "moved card __card__ from list __oldList__ at swimlane __oldSwimlane__ at board __oldBoard__ to list __list__ at swimlane __swimlane__ at board __board__", - "act-removeBoardMember": "removed member __member__ from board __board__", - "act-restoredCard": "restored card __card__ to list __list__ at swimlane __swimlane__ at board __board__", - "act-unjoinMember": "removed member __member__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__", + "act-importCard": "đã nhập thẻ __card__ vào danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__", + "act-importList": "đã nhập danh sách __list__ vào làn ngang __swimlane__ tại bảng __board__", + "act-joinMember": "đã thêm thành viên __member__ vào thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ at board __board__", + "act-moveCard": "đã di chuyển thẻ __card__ tại bảng __board__ từ danh sách __oldList__ tại làn ngang __oldSwimlane__ tới danh sách __list__ tại làn ngang __swimlane__", + "act-moveCardToOtherBoard": "đã di chuyển thẻ __card__ từ danh sách __oldList__ tại làn ngang __oldSwimlane__ tại bảng __oldBoard__ tới danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__", + "act-removeBoardMember": "đã xóa thành viên __member__ khỏi bảng __board__", + "act-restoredCard": "đã khôi phục thẻ __card__ vào danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__", + "act-unjoinMember": "đã xóa thành viên __member__ từ thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__", "act-withBoardTitle": "__board__", "act-withCardTitle": "[__board__] __card__", "actions": "Hành Động", "activities": "Hoạt Động", "activity": "Hoạt Động", "activity-added": "đã thêm %s vào %s", - "activity-archived": "%s đã chuyển đến Lưu trữ", + "activity-archived": "đã chuyển %s đến Lưu trữ", "activity-attached": "đã đính kèm %s vào %s", "activity-created": "đã tạo %s", "activity-customfield-created": "đã tạo trường tuỳ chỉnh %s", @@ -71,7 +71,7 @@ "add": "Thêm", "activity-checked-item-card": "đã hoàn thành %s trong checklist %s", "activity-unchecked-item-card": "đã bỏ đánh dấu hoàn thành %s trong checklist %s", - "activity-checklist-completed-card": "đã hoàn thành checklist __checklist__ tại thẻ __card__ tại danh sách __list__ tại luồng __swimlane__ tại bảng __board__", + "activity-checklist-completed-card": "đã hoàn thành checklist __checklist__ tại thẻ __card__ tại danh sách __list__ tại làn ngang __swimlane__ tại bảng __board__", "activity-checklist-uncompleted-card": "chưa hoàn thành checklist", "activity-editComment": "lời bình đã sửa", "activity-deleteComment": "đã xoá lời bình %s", @@ -82,7 +82,7 @@ "add-attachment": "Thêm Bản Đính Kèm", "add-board": "Thêm Bảng", "add-card": "Thêm Thẻ", - "add-swimlane": "Add Swimlane", + "add-swimlane": "Thêm làn ngang", "add-subtask": "Thêm Nhiệm vụ phụ", "add-checklist": "Thêm Danh Sách Kiểm Tra", "add-checklist-item": "Thêm Một Mục Vào Danh Sách Kiểm Tra", @@ -100,14 +100,14 @@ "all-boards": "Tất cả các bảng", "and-n-other-card": "Và __count__ thẻ khác", "and-n-other-card_plural": "Và __count__ thẻ khác", - "apply": "Ứng Dụng", + "apply": "Áp Dụng", "app-is-offline": "Đang tải, vui lòng đợi. Làm mới trang sẽ làm mất dữ liệu. Nếu quá trình tải không hoạt động, vui lòng kiểm tra lại máy chủ.", "archive": "Di chuyển đến Lưu trữ", "archive-all": "Di chuyển tất cả vào Lưu trữ", "archive-board": "Di chuyển Bảng sang Lưu trữ", "archive-card": "Di chuyển Thẻ vào Lưu trữ", "archive-list": "Di chuyển Danh sách vào Lưu trữ", - "archive-swimlane": "Move Swimlane to Archive", + "archive-swimlane": "Di chuyển Làn ngang vào Lưu trữ", "archive-selection": "Di chuyển lựa chọn vào Lưu trữ", "archiveBoardPopup-title": "Chuyển Bảng sang Lưu trữ?", "archived-items": "Lưu Trữ", @@ -129,8 +129,8 @@ "board-change-color": "Đổi màu", "board-nb-stars": "%s sao", "board-not-found": "Không tìm được bảng", - "board-private-info": "Bảng này sẽ chuyển sang <strong> chế độ private</strong>.", - "board-public-info": "Bảng này sẽ chuyển sang <strong> chế độ public</strong>.", + "board-private-info": "Bảng này sẽ chuyển sang chế độ <strong>riêng tư</strong>.", + "board-public-info": "Bảng này sẽ chuyển sang chế độ <strong>công khai</strong>.", "boardChangeColorPopup-title": "Thay hình nền của bảng", "boardChangeTitlePopup-title": "Đổi tên bảng", "boardChangeVisibilityPopup-title": "Đổi cách hiển thị", @@ -140,11 +140,11 @@ "boards": "Bảng", "board-view": "Kiểu xem Bảng", "board-view-cal": "Lịch", - "board-view-swimlanes": "Thu gọn", + "board-view-swimlanes": "Làn ngang", "board-view-collapse": "Thu gọn", - "board-view-gantt": "Gantt", + "board-view-gantt": "Biểu đồ Gantt", "board-view-lists": "Danh sách", - "bucket-example": "Like “Bucket List” for example", + "bucket-example": "Ví dụ như \"Danh sách nhóm\"", "cancel": "Hủy", "card-archived": "Thẻ này đã được chuyển đến Lưu trữ.", "board-archived": "Bảng này đã được chuyển đến Lưu trữ.", @@ -184,12 +184,12 @@ "cardMembersPopup-title": "Thành Viên", "cardMorePopup-title": "Thêm nữa", "cardTemplatePopup-title": "Tạo mẫu", - "cards": "Cards", - "cards-count": "Cards", + "cards": "Thẻ", + "cards-count": "Thẻ", "casSignIn": "Đăng nhập bằng CAS", "cardType-card": "Thẻ", - "cardType-linkedCard": "Linked Card", - "cardType-linkedBoard": "Linked Board", + "cardType-linkedCard": "Thẻ đã liên kết", + "cardType-linkedBoard": "Bảng đã liên kết", "change": "Thay đổi", "change-avatar": "Thay đổi hình đại diện", "change-password": "Đổi mật khẩu", @@ -201,7 +201,7 @@ "changePermissionsPopup-title": "Thay đổi quyền", "changeSettingsPopup-title": "Thay đổi Cài đặt", "subtasks": "Nhiệm vụ phụ", - "checklists": "Checklists", + "checklists": "Danh sách việc cần hoàn thành", "click-to-star": "Bấm để gắn dấu sao bảng này.", "click-to-unstar": "Bấm để bỏ gắn bảng này.", "clipboard": "Clipboard hoặc kéo và thả", @@ -233,7 +233,7 @@ "color-slateblue": "slateblue", "color-white": "white", "color-yellow": "yellow", - "unset-color": "Unset", + "unset-color": "Không đặt", "comment": "Bình luận", "comment-placeholder": "Viết Bình Luận", "comment-only": "Chỉ bình luận", @@ -260,7 +260,7 @@ "createCustomFieldPopup-title": "Tạo Trường", "current": "hiện tại", "custom-field-delete-pop": "Không thể hoàn tác. Thao tác này sẽ xóa trường tùy chỉnh này khỏi tất cả các thẻ và hủy lịch sử của nó.", - "custom-field-checkbox": "Checkbox", + "custom-field-checkbox": "Hộp kiểm", "custom-field-currency": "Tiền tệ", "custom-field-currency-option": "Mã tiền tệ", "custom-field-date": "Ngày", @@ -315,8 +315,8 @@ "error-board-notAdmin": "Bạn cần phải là quản trị viên của bảng này để làm điều đó", "error-board-notAMember": "Bạn cần phải là thành viên của bảng này để làm điều đó", "error-json-malformed": "Văn bản của bạn không phải là JSON hợp lệ", - "error-json-schema": "Your JSON data does not include the proper information in the correct format", - "error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format", + "error-json-schema": "Dữ liệu JSON của bạn không bao gồm thông tin thích hợp ở định dạng chính xác", + "error-csv-schema": "CSV (Giá trị được phân tách bằng dấu phẩy)/TSV (Giá trị được phân cách bằng tab) của bạn không bao gồm thông tin thích hợp ở định dạng chính xác", "error-list-doesNotExist": "Danh sách này không tồn tại", "error-user-doesNotExist": "Người dùng này không tồn tại", "error-user-notAllowSelf": "Bạn không thể mời chính mình", @@ -382,8 +382,8 @@ "import-board-instruction-csv": "Dán Giá trị được phân tách bằng dấu phẩy(CSV)/ Giá trị được phân cách bằng tab (TSV) của bạn.", "import-board-instruction-wekan": "Trong bảng của bạn, hãy chuyển đến \"Menu\", sau đó \"Xuất bảng\" và sao chép văn bản trong tệp đã tải xuống.", "import-board-instruction-about-errors": "Nếu bạn gặp lỗi khi nhập bảng, đôi khi quá trình nhập vẫn hoạt động và bảng ở trang Tất cả bảng.", - "import-json-placeholder": "Paste your valid JSON data here", - "import-csv-placeholder": "Paste your valid CSV/TSV data here", + "import-json-placeholder": "Dán dữ liệu JSON hợp lệ của bạn vào đây", + "import-csv-placeholder": "Dán dữ liệu CSV/TSV hợp lệ của bạn vào đây", "import-map-members": "Bản đồ thành viên", "import-members-map": "Bảng nhập khẩu của bạn có một số thành viên. Vui lòng ánh xạ các thành viên bạn muốn nhập với người dùng của mình", "import-members-map-note": "Lưu ý: Các thành viên chưa được ánh xạ sẽ được chỉ định cho người dùng hiện tại.", @@ -415,8 +415,8 @@ "set-color-list": "Đặt Màu", "listActionPopup-title": "Liệt kê các hành động", "settingsUserPopup-title": "Cài đặt người dùng", - "swimlaneActionPopup-title": "Swimlane Actions", - "swimlaneAddPopup-title": "Add a Swimlane below", + "swimlaneActionPopup-title": "Hành động trên Làn ngang", + "swimlaneAddPopup-title": "Thêm một Làn ngang bên dưới", "listImportCardPopup-title": "Nhập thẻ Trello", "listImportCardsTsvPopup-title": "Nhập Excel CSV/TSV", "listMorePopup-title": "Thêm nữa", @@ -424,7 +424,7 @@ "list-delete-pop": "Tất cả các hành động sẽ bị xóa khỏi nguồn cấp dữ liệu hoạt động và bạn sẽ không thể khôi phục danh sách. Không có hoàn tác.", "list-delete-suggest-archive": "Bạn có thể di chuyển danh sách vào Lưu trữ để xóa danh sách đó khỏi Bảng và duy trì hoạt động.", "lists": "Danh sách", - "swimlanes": "Thu gọn", + "swimlanes": "Làn ngang", "log-out": "Đăng Xuất", "log-in": "Đăng nhập", "loginPopup-title": "Đăng nhập", @@ -446,7 +446,7 @@ "name": "Tên", "no-archived-cards": "Không có thẻ nào trong Lưu trữ.", "no-archived-lists": "Không có danh sách nào trong Lưu trữ.", - "no-archived-swimlanes": "No swimlanes in Archive.", + "no-archived-swimlanes": "Không có Làn ngang nào trong Lưu trữ.", "no-results": "Không có kết quả", "normal": "Bình thường", "normal-desc": "Có thể xem và chỉnh sửa thẻ. Không thể thay đổi cài đặt.", @@ -467,7 +467,7 @@ "private-desc": "Bảng này là riêng tư. Chỉ những người được thêm vào bảng mới có thể xem và chỉnh sửa nó.", "profile": "Hồ sơ", "public": "Công khai", - "public-desc": "Bảng này là công khai. Nó hiển thị với bất kỳ ai có liên kết và sẽ hiển thị trong các công cụ tìm kiếm như Google. Chỉ những người được thêm vào diễn đàn mới có thể chỉnh sửa.", + "public-desc": "Bảng này là công khai. Nó hiển thị với bất kỳ ai có liên kết và sẽ hiển thị trong các công cụ tìm kiếm như Google. Chỉ những người được thêm vào Bảng mới có thể chỉnh sửa.", "quick-access-description": "Gắn dấu sao bảng để thêm lối tắt trong thanh này.", "remove-cover": "Remove Cover", "remove-from-board": "Xóa khỏi Bảng", @@ -519,10 +519,10 @@ "title": "Tiêu đề", "tracking": "Đang theo dõi", "tracking-info": "Bạn sẽ được thông báo về bất kỳ thay đổi nào đối với những thẻ mà bạn tham gia với tư cách là người sáng tạo hoặc thành viên.", - "type": "Type", + "type": "Kiểu", "unassign-member": "Bỏ chỉ định thành viên", "unsaved-description": "Bạn có một mô tả chưa được lưu.", - "unwatch": "Unwatch", + "unwatch": "Bỏ theo dõi", "upload": "Tải lên", "upload-avatar": "Tải lên hình đại diện", "uploaded-avatar": "Đã tải lên hình đại diện", @@ -533,16 +533,16 @@ "custom-login-logo-link-url": "Đăng nhập tùy chỉnh - Url liên kết Logo", "text-below-custom-login-logo": "Đăng nhập tùy chỉnh - Văn bản bên dưới Logo", "automatic-linked-url-schemes": "Lược đồ URL tùy chỉnh sẽ tự động có thể nhấp được. Một Lược đồ URL trên mỗi dòng", - "username": "Username", - "import-usernames": "Import Usernames", + "username": "Tài khoản", + "import-usernames": "Nhập khẩu Usernames", "view-it": "Xem", "warn-list-archived": "cảnh báo: thẻ này nằm trong một danh sách tại Lưu trữ", - "watch": "Watch", + "watch": "Theo dõi", "watching": "Đang xem", "watching-info": "Bạn sẽ được thông báo về bất kỳ thay đổi nào trong bảng này", "welcome-board": "Welcome Board", "welcome-swimlane": "Milestone 1", - "welcome-list1": "Basics", + "welcome-list1": "Cơ bản", "welcome-list2": "Nâng cao", "card-templates-swimlane": "Mẫu Thẻ", "list-templates-swimlane": "Mẫu Danh sách", @@ -558,17 +558,17 @@ "disable-self-registration": "Vô hiệu hoá tự đăng ký", "invite": "Mời", "invite-people": "Mời mọi người", - "to-boards": "To board(s)", + "to-boards": "Đến bảng(s)", "email-addresses": "Địa chỉ Email", "smtp-host-description": "Địa chỉ của máy chủ SMTP xử lý email của bạn.", "smtp-port-description": "Cổng mà máy chủ SMTP của bạn sử dụng cho các email gửi đi.", "smtp-tls-description": "Bật hỗ trợ TLS cho máy chủ SMTP", "smtp-host": "SMTP Host", "smtp-port": "SMTP Port", - "smtp-username": "Username", + "smtp-username": "Tài khoản", "smtp-password": "Mật khẩu", "smtp-tls": "Hỗ trợ TLS", - "send-from": "From", + "send-from": "Từ", "send-smtp-test": "Gửi một email thử nghiệm cho chính bạn", "invitation-code": "Mã lời mời", "email-invite-register-subject": "__inviter__ đã gửi cho bạn lời mời", @@ -577,15 +577,15 @@ "email-smtp-test-text": "Bạn đã gửi thành công một email", "error-invitation-code-not-exist": "Mã lời mời không tồn tại", "error-notAuthorized": "Bạn không được phép xem trang này.", - "webhook-title": "Webhook Name", + "webhook-title": "Tên Webhook", "webhook-token": "Mã thông báo (Tùy chọn để xác thực)", - "outgoing-webhooks": "Outgoing Webhooks", - "bidirectional-webhooks": "Two-Way Webhooks", - "outgoingWebhooksPopup-title": "Outgoing Webhooks", + "outgoing-webhooks": "Webhooks gửi đi", + "bidirectional-webhooks": "Webhooks hai chiều", + "outgoingWebhooksPopup-title": "Webhook gửi đi", "boardCardTitlePopup-title": "Lọc tiêu đề thẻ", "disable-webhook": "Vô hiệu hóa Webhook này", - "global-webhook": "Global Webhooks", - "new-outgoing-webhook": "New Outgoing Webhook", + "global-webhook": "Webhook toàn cầu", + "new-outgoing-webhook": "Webhook gửi đi mới", "no-name": "(Không xác định)", "Node_version": "Phiên bản Node", "Meteor_version": "Phiên bản Meteor", @@ -593,14 +593,14 @@ "MongoDB_storage_engine": "MongoDB storage engine", "MongoDB_Oplog_enabled": "MongoDB Oplog enabled", "OS_Arch": "OS Arch", - "OS_Cpus": "OS CPU Count", - "OS_Freemem": "OS Free Memory", - "OS_Loadavg": "OS Load Average", - "OS_Platform": "OS Platform", - "OS_Release": "OS Release", - "OS_Totalmem": "OS Total Memory", - "OS_Type": "OS Type", - "OS_Uptime": "OS Uptime", + "OS_Cpus": "Số CPU", + "OS_Freemem": "Bộ nhớ trống", + "OS_Loadavg": "Tải trung bình", + "OS_Platform": "Nền tảng", + "OS_Release": "Phiên bản", + "OS_Totalmem": "Tổng bộ nhớ hệ điều hành", + "OS_Type": "Kiểu hệ điều hành", + "OS_Uptime": "Thời gian chạy", "days": "ngày", "hours": "giờ", "minutes": "phút", @@ -643,14 +643,14 @@ "boardCardSettingsPopup-title": "Cài đặt thẻ", "deposit-subtasks-board": "Gửi các nhiệm vụ phụ vào bảng này:", "deposit-subtasks-list": "Danh sách đích cho các nhiệm vụ phụ được gửi tại đây:", - "show-parent-in-minicard": "Show parent in minicard:", + "show-parent-in-minicard": "Hiện cha mẹ trong minicard:", "prefix-with-full-path": "Tiền tố với đường dẫn đầy đủ", "prefix-with-parent": "Tiền tố với cha mẹ", "subtext-with-full-path": "Văn bản phụ với đường dẫn đầy đủ", - "subtext-with-parent": "Subtext with parent", + "subtext-with-parent": "Văn bản phụ với cha mẹ", "change-card-parent": "Thay đổi phụ huynh của thẻ", - "parent-card": "Parent card", - "source-board": "Source board", + "parent-card": "Thẻ cha", + "source-board": "Bảng nguồn", "no-parent": "Không hiển thị cho cha mẹ", "activity-added-label": "đã thêm nhãn '%s' vào %s", "activity-removed-label": "đã xóa nhãn '%s' khỏi %s", @@ -672,41 +672,41 @@ "r-trigger": "Kích hoạt", "r-action": "Hoạt động", "r-when-a-card": "Khi một thẻ", - "r-is": "is", + "r-is": "là", "r-is-moved": "được chuyển đi", - "r-added-to": "Added to", + "r-added-to": "Đã thêm vào", "r-removed-from": "Bị loại khỏi", - "r-the-board": "the board", + "r-the-board": "bảng", "r-list": "danh sách", - "list": "List", + "list": "Danh sách", "set-filter": "Đặt bộ lọc", "r-moved-to": "Chuyển đến", - "r-moved-from": "Moved from", - "r-archived": "Moved to Archive", - "r-unarchived": "Restored from Archive", - "r-a-card": "a card", + "r-moved-from": "Đã di chuyển từ", + "r-archived": "Đã chuyển đến Lưu trữ", + "r-unarchived": "Đã khôi phục từ lưu trữ", + "r-a-card": "thẻ", "r-when-a-label-is": "Khi một nhãn là", "r-when-the-label": "Khi nhãn", - "r-list-name": "list name", + "r-list-name": "tên danh sách", "r-when-a-member": "Khi một thành viên là", "r-when-the-member": "Khi thành viên", - "r-name": "name", + "r-name": "tên", "r-when-a-attach": "Khi một tệp đính kèm", "r-when-a-checklist": "Khi một checklist là", "r-when-the-checklist": "Khi checklist", - "r-completed": "Completed", - "r-made-incomplete": "Made incomplete", + "r-completed": "Đã hoàn thành", + "r-made-incomplete": "Làm chưa hoàn thành", "r-when-a-item": "Khi một mục checklist là", "r-when-the-item": "Khi mục checklist", - "r-checked": "Checked", - "r-unchecked": "Unchecked", + "r-checked": "Đã chọn", + "r-unchecked": "Đã bỏ chọn", "r-move-card-to": "Di chuyển thẻ đến", - "r-top-of": "Top of", - "r-bottom-of": "Bottom of", + "r-top-of": "Trên cùng của", + "r-bottom-of": "Dưới cùng của", "r-its-list": "danh sách của nó", "r-archive": "Di chuyển đến Lưu trữ", - "r-unarchive": "Restore from Archive", - "r-card": "card", + "r-unarchive": "Khôi phục từ Lưu trữ", + "r-card": "thẻ", "r-add": "Thêm", "r-remove": "Xóa", "r-label": "nhãn", @@ -714,17 +714,17 @@ "r-remove-all": "Xóa tất cả thành viên khỏi thẻ", "r-set-color": "Đặt màu cho", "r-checklist": "checklist", - "r-check-all": "Check all", - "r-uncheck-all": "Uncheck all", + "r-check-all": "Đánh dấu tất cả", + "r-uncheck-all": "Bỏ đánh dấu tất cả", "r-items-check": "mục của checklist", - "r-check": "Check", - "r-uncheck": "Uncheck", + "r-check": "Chọn", + "r-uncheck": "Bỏ chọn", "r-item": "mục", "r-of-checklist": "của checklist", "r-send-email": "Gửi email", "r-to": "đến", "r-of": "của", - "r-subject": "subject", + "r-subject": "Chủ đề", "r-rule-details": "Chi tiết quy tắc", "r-d-move-to-top-gen": "Di chuyển thẻ lên đầu danh sách của nó", "r-d-move-to-top-spec": "Di chuyển thẻ lên đầu của danh sách", @@ -732,15 +732,15 @@ "r-d-move-to-bottom-spec": "Di chuyển thẻ xuống cuối của danh sách", "r-d-send-email": "Gửi email", "r-d-send-email-to": "đến", - "r-d-send-email-subject": "subject", + "r-d-send-email-subject": "Chủ đề", "r-d-send-email-message": "tin nhắn", "r-d-archive": "Di chuyển thẻ vào Lưu trữ", - "r-d-unarchive": "Restore card from Archive", + "r-d-unarchive": "Khôi phục thẻ từ Lưu trữ", "r-d-add-label": "Thêm nhãn", "r-d-remove-label": "Xóa nhãn", "r-create-card": "Tạo thẻ mới", "r-in-list": "trong danh sách", - "r-in-swimlane": "in swimlane", + "r-in-swimlane": "trong làn ngang", "r-d-add-member": "Thêm thành viên", "r-d-remove-member": "Xóa thành viên", "r-d-remove-all-member": "Xóa tất cả thành viên", @@ -755,8 +755,8 @@ "r-add-checklist": "Thêm checklist", "r-with-items": "với các mục", "r-items-list": "item1,item2,item3", - "r-add-swimlane": "Add swimlane", - "r-swimlane-name": "swimlane name", + "r-add-swimlane": "Thêm làn ngang", + "r-swimlane-name": "tên làn ngang", "r-board-note": "Lưu ý: để trống một trường để khớp với mọi giá trị có thể.", "r-checklist-note": "Lưu ý: các mục của danh sách kiểm tra phải được viết dưới dạng các giá trị được phân tách bằng dấu phẩy.", "r-when-a-card-is-moved": "Khi một thẻ được chuyển sang một danh sách khác", @@ -794,18 +794,18 @@ "loading": "Đang tải, vui lòng đợi.", "previous_as": "lần trước là", "act-a-dueAt": "sửa đổi thời gian đến hạn \nKhi nào: __timeValue__\nỞ đâu: __card__\n đến hạn trước đó là __timeOldValue__", - "act-a-endAt": "modified ending time to __timeValue__ from (__timeOldValue__)", + "act-a-endAt": "đã sửa đổi thời gian kết thúc thành __timeValue__ từ (__timeOldValue__)", "act-a-startAt": "sửa đổi thời gian bắt đầu thành __timeValue__ from (__timeOldValue__)", - "act-a-receivedAt": "modified received time to __timeValue__ from (__timeOldValue__)", + "act-a-receivedAt": "đã sửa đổi thời gian nhận thành __timeValue__ từ (__timeOldValue__)", "a-dueAt": "sửa đổi thời gian đến hạn thành", - "a-endAt": "modified ending time to be", + "a-endAt": "đã sửa đổi thời gian kết thúc thành", "a-startAt": "thời gian bắt đầu được sửa đổi thành", "a-receivedAt": "đã sửa đổi thời gian nhận được", - "almostdue": "current due time %s is approaching", - "pastdue": "current due time %s is past", - "duenow": "current due time %s is today", - "act-newDue": "__list__/__card__ has 1st due reminder [__board__]", - "act-withDue": "__list__/__card__ due reminders [__board__]", + "almostdue": "thời gian đến hạn hiện tại %s đang đến gần", + "pastdue": "thời gian đến hạn hiện tại %s đã qua", + "duenow": "giờ đến hạn hiện tại %s là hôm nay", + "act-newDue": "__list__/__card__ có lời nhắc đến hạn lần 1 [__board__]", + "act-withDue": "__list__/__card__ lời nhắc đến hạn [__board__]", "act-almostdue": "đang nhắc nhở thời hạn hiện tại là (__timeValue__) của __card__ đang đến gần", "act-pastdue": "đang nhắc nhở thời hạn hiện tại (__timeValue__) của __card__ đã qua", "act-duenow": "đã được nhắc nhở hiện tại đến hạn (__timeValue__) của __card__ bây giờ là", @@ -813,7 +813,7 @@ "delete-user-confirm-popup": "Bạn có chắc chắn muốn xóa tài khoản này không? Không thể hoàn tác.", "accounts-allowUserDelete": "Cho phép người dùng tự xóa tài khoản của họ", "hide-minicard-label-text": "Ẩn nhãn minicard", - "show-desktop-drag-handles": "Show desktop drag handles", + "show-desktop-drag-handles": "Hiển thị nút kéo thả trên Desktop", "assignee": "Người được giao", "cardAssigneesPopup-title": "Người được giao", "addmore-detail": "Thêm mô tả chi tiết hơn", @@ -841,7 +841,7 @@ "saturday": "Thứ bảy", "sunday": "Chủ nhật", "status": "Trạng thái", - "swimlane": "Swimlane", + "swimlane": "Làn ngang", "owner": "Chủ sở hữu", "last-modified-at": "Sửa đổi lần cuối lúc", "last-activity": "Hoạt động cuối", @@ -858,7 +858,7 @@ "displayName": "Tên Hiển Thị", "shortName": "Tên ngắn", "website": "Website", - "person": "Person", + "person": "Cá nhân", "my-cards": "Thẻ của tôi", "card": "Thẻ", "board": "Bảng", @@ -867,7 +867,7 @@ "myCardsSortChangePopup-title": "Sắp xếp thẻ của tôi", "myCardsSortChange-choice-board": "Theo bảng", "myCardsSortChange-choice-dueat": "Theo Ngày đến hạn", - "dueCards-title": "Due Cards", + "dueCards-title": "Thẻ đến hạn", "dueCardsViewChange-title": "Xem Thẻ đến hạn", "dueCardsViewChangePopup-title": "Xem Thẻ đến hạn", "dueCardsViewChange-choice-me": "Tôi", @@ -875,7 +875,7 @@ "dueCardsViewChange-choice-all-description": "Hiển thị tất cả các thẻ chưa hoàn thành có ngày *Đến hạn* từ bảng mà người dùng có quyền.", "broken-cards": "Thẻ bị hỏng", "board-title-not-found": "Không tìm thấy bảng '%s'", - "swimlane-title-not-found": "Swimlane '%s' not found.", + "swimlane-title-not-found": "Không tìm thấy làn ngang '%s'", "list-title-not-found": "Không tìm thấy danh sách '%s'", "label-not-found": "Không tìm thấy nhãn '%s'", "label-color-not-found": "Không tìm thấy màu nhãn %s", @@ -888,13 +888,13 @@ "n-n-of-n-cards-found": "__start__-__end__ của __total__ Thẻ được Tìm thấy", "operator-board": "bảng", "operator-board-abbrev": "b", - "operator-swimlane": "swimlane", + "operator-swimlane": "làn ngang", "operator-swimlane-abbrev": "s", "operator-list": "danh sách", "operator-list-abbrev": "l", "operator-label": "nhãn", "operator-label-abbrev": "#", - "operator-user": "user", + "operator-user": "người dùng", "operator-user-abbrev": "@", "operator-member": "thành viên", "operator-member-abbrev": "m", @@ -929,12 +929,12 @@ "predicate-member": "thành viên", "predicate-public": "công khai", "predicate-private": "riêng tư", - "operator-unknown-error": "%s is not an operator", - "operator-number-expected": "operator __operator__ expected a number, got '__value__'", - "operator-sort-invalid": "sort of '%s' is invalid", - "operator-status-invalid": "'%s' is not a valid status", - "operator-has-invalid": "%s is not a valid existence check", - "operator-limit-invalid": "%s is not a valid limit. Limit should be a positive integer.", + "operator-unknown-error": "%s không phải là một toán tử", + "operator-number-expected": "toán tử __operator__ chấp nhận một số, có giá trị '__value__'", + "operator-sort-invalid": "sắp xếp của '%s' không hợp lệ", + "operator-status-invalid": "'%s' không phải là trạng thái hợp lệ", + "operator-has-invalid": "%s không phải là một kiểm tra sự tồn tại hợp lệ", + "operator-limit-invalid": "%s không phải là giới hạn hợp lệ. Giới hạn phải là một số nguyên dương.", "next-page": "Trang tiếp theo", "previous-page": "Trang trước", "heading-notes": "Ghi chú", @@ -943,30 +943,30 @@ "globalSearch-instructions-operators": "Các toán tử có sẵn:", "globalSearch-instructions-operator-board": "`__operator_board__:<title>` - thẻ trong bảng phù hợp với *<title>*", "globalSearch-instructions-operator-list": "`__operator_list__:<title>` - thẻ trong danh sách phù hợp với *<title>*", - "globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:<title>` - thẻ trong luồng phù hợp với *<title>*", - "globalSearch-instructions-operator-comment": "`__operator_comment__:<text>` - cards with a comment containing *<text>*.", + "globalSearch-instructions-operator-swimlane": "`__operator_swimlane__:<title>` - thẻ trong làn ngang phù hợp với *<title>*", + "globalSearch-instructions-operator-comment": "`__operator_comment__:<text>` - thẻ có nhận xét chứa *<text>*.", "globalSearch-instructions-operator-label": "`__operator_label__:<color>` `__operator_label__:<name>` - thẻ có nhãn phù hợp *<color>* hoặc *<name>", "globalSearch-instructions-operator-hash": "`__operator_label_abbrev__<name | color>` - viết tắt cho `__operator_label__:<color>` hoặc `__operator_label__:<name>`", "globalSearch-instructions-operator-user": "`__operator_user__:<username>` - thẻ trong đó *<username>* là *thành viên* hoặc *người được giao*", "globalSearch-instructions-operator-at": "`__operator_user_abbrev__username` - viết tắt cho `người dùng:<username>`", "globalSearch-instructions-operator-member": "`__operator_member__:<username>` - thẻ trong đó *<username>* là *thành viên*", - "globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` - cards where *<username>* is an *assignee*", + "globalSearch-instructions-operator-assignee": "`__operator_assignee__:<username>` - thẻ trong đó *<username>* là *người được giao*", "globalSearch-instructions-operator-due": "`__operator_due__:<n>` - thẻ có thời hạn lên đến *<n>* ngày kể từ bây giờ. `__operator_due__:__predicate_overdue__ liệt kê tất cả các thẻ đã quá hạn sử dụng.", - "globalSearch-instructions-operator-created": "`__operator_created__:<n>` - cards which were created *<n>* days ago or less", - "globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - cards which were modified *<n>* days ago or less", - "globalSearch-instructions-operator-status": "`__operator_status__:<status>` - where *<status>* is one of the following:", - "globalSearch-instructions-status-archived": "`__predicate_archived__` - archived cards", - "globalSearch-instructions-status-all": "`__predicate_all__` - all archived and unarchived cards", + "globalSearch-instructions-operator-created": "`__operator_created__:<n>` - thẻ đã được tạo *<n>* ngày trước hoặc ít hơn", + "globalSearch-instructions-operator-modified": "`__operator_modified__:<n>` - thẻ đã được sửa đổi *<n>* ngày trước hoặc ít hơn", + "globalSearch-instructions-operator-status": "`__operator_status__:<status>` - trong đó *<status>* là một trong các giá trị sau:", + "globalSearch-instructions-status-archived": "`__predicate_archived__` - thẻ đã lưu trữ", + "globalSearch-instructions-status-all": "`__predicate_all__` - tất cả các thẻ lưu trữ và hủy lưu trữ", "globalSearch-instructions-status-ended": "`__predicate_ended__` - thẻ với ngày kết thúc", - "globalSearch-instructions-status-public": "`__predicate_public__` - cards only in public boards", - "globalSearch-instructions-status-private": "`__predicate_private__` - cards only in private boards", + "globalSearch-instructions-status-public": "`__predicate_public__` - chỉ thẻ trong bảng công khai", + "globalSearch-instructions-status-private": "`__predicate_private__` - chỉ thẻ trong bảng riêng tư", "globalSearch-instructions-operator-has": "`__operator_has__:<field>` - trong đó *<field>* là một trong `__predicate_attachment__`, `__predicate_checklist__`, `__predicate_description__`, `__predicate_start__`, `__predicate_due__`, `__predicate_end__`, `__predicate_assignee__` hoặc `__predicate_member__`. Đặt dấu `-` trước *<field>* sẽ tìm kiếm sự không có giá trị trong trường đó (ví dụ. `has:-due` tìm kiếm các thẻ không có ngày đến hạn).", - "globalSearch-instructions-operator-sort": "`__operator_sort__:<sort-name>` - where *<sort-name>* is one of `__predicate_due__`, `__predicate_created__` or `__predicate_modified__`. For a descending sort, place a `-` in front of the sort name.", + "globalSearch-instructions-operator-sort": "`__operator_sort__:<sort-name>` - trong đó *<sort-name>* là một trong `__predicate_due__`, `__predicate_created__` hoặc `__predicate_modified__`. Đối với sắp xếp giảm dần, hãy đặt dấu `-` trước tên sắp xếp.", "globalSearch-instructions-operator-limit": "`__operator_limit__:<n>` - trong đó *<n>* là một số nguyên dương thể hiện số lượng thẻ được hiển thị trên mỗi trang.", "globalSearch-instructions-notes-1": "Nhiều toán tử có thể được chỉ định.", "globalSearch-instructions-notes-2": "Các toán tử tương tự là *OR* cùng nhau. Các thẻ phù hợp với bất kỳ điều kiện nào sẽ được trả lại.\n`__operator_list__:Available __operator_list__:Blocked` sẽ trả lại các thẻ có trong bất kỳ danh sách nào có tên *Blocked* hoặc *Available*.", "globalSearch-instructions-notes-3": "Các toán tử khác nhau là *AND* kết hợp với nhau. Chỉ những thẻ phù hợp với tất cả các toán tử khác nhau mới được trả lại. `__operator_list__:Available __operator_label__:red` chỉ trả về các thẻ trong danh sách *Có sẵn* với nhãn *red*.", - "globalSearch-instructions-notes-3-2": "Days can be specified as a positive or negative integer or using `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` or `__predicate_year__` for the current period.", + "globalSearch-instructions-notes-3-2": "Ngày có thể được chỉ định dưới dạng số nguyên dương hoặc âm hoặc sử dụng `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` hoặc `__predicate_year__` cho giai đoạn hiện tại.", "globalSearch-instructions-notes-4": "Tìm kiếm văn bản không phân biệt chữ hoa chữ thường.", "globalSearch-instructions-notes-5": "Theo mặc định, thẻ đã lưu trữ không được tìm kiếm.", "link-to-search": "Liên kết đến tìm kiếm này", @@ -980,5 +980,8 @@ "due-date": "Ngày đến hạn", "title-alphabetically": "Tiêu đề (theo thứ tự bảng chữ cái)", "created-at-newest-first": "Được tạo lúc (Mới nhất đầu tiên)", - "created-at-oldest-first": "Được tạo lúc (Cũ nhất trước)" + "created-at-oldest-first": "Được tạo lúc (Cũ nhất trước)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/zh-CN.i18n.json b/i18n/zh-CN.i18n.json index 8af525e29..4a559c8d5 100644 --- a/i18n/zh-CN.i18n.json +++ b/i18n/zh-CN.i18n.json @@ -322,8 +322,8 @@ "error-user-notAllowSelf": "无法邀请自己", "error-user-notCreated": "该用户未能成功创建", "error-username-taken": "此用户名已存在", - "error-orgname-taken": "This organization name is already taken", - "error-teamname-taken": "This team name is already taken", + "error-orgname-taken": "此组织名称已被使用", + "error-teamname-taken": "此团队名称已被使用", "error-email-taken": "此EMail已存在", "export-board": "导出看板", "export-board-json": "看板导出为JSON", @@ -399,7 +399,7 @@ "just-invited": "您刚刚被邀请加入此看板", "keyboard-shortcuts": "键盘快捷键", "label-create": "创建标签", - "label-default": "%s 标签 (默认)", + "label-default": "%s 标签(默认)", "label-delete-pop": "此操作不可逆,这将会删除该标签并清除它的历史记录。", "labels": "标签", "language": "语言", @@ -528,10 +528,10 @@ "uploaded-avatar": "头像已经上传", "custom-top-left-corner-logo-image-url": "通过图片链接设置左上角图标", "custom-top-left-corner-logo-link-url": "设置左上角图标链接地址", - "custom-top-left-corner-logo-height": "设置左上角图标高度. 默认值: 27", - "custom-login-logo-image-url": "设置登陆图标链接地址", - "custom-login-logo-link-url": "通过连接上传logo", - "text-below-custom-login-logo": "自定义登陆图标下方文字", + "custom-top-left-corner-logo-height": "设置左上角图标高度。默认值:27", + "custom-login-logo-image-url": "设置登录图标链接地址", + "custom-login-logo-link-url": "设置登录图标链接", + "text-below-custom-login-logo": "设置登录图标下方文字", "automatic-linked-url-schemes": "Custom URL Schemes which should automatically be clickable. One URL Scheme per line", "username": "用户名", "import-usernames": "导入用户名", @@ -635,7 +635,7 @@ "boardDeletePopup-title": "删除看板?", "delete-board": "删除看板", "default-subtasks-board": "__board__ 看板的子任务", - "default": "缺省", + "default": "默认", "queue": "队列", "subtask-settings": "子任务设置", "card-settings": "卡片设置", @@ -776,13 +776,13 @@ "authentication-type": "认证类型", "custom-product-name": "自定义产品名称", "layout": "布局", - "hide-logo": "隐藏LOGO", + "hide-logo": "隐藏图标", "add-custom-html-after-body-start": "添加定制的HTML在开始<body>之前", "add-custom-html-before-body-end": "添加定制的HTML在结束</body>之后", "error-undefined": "出了点问题", - "error-ldap-login": "尝试登陆时出错", + "error-ldap-login": "尝试登录时出错", "display-authentication-method": "显示认证方式", - "default-authentication-method": "缺省认证方式", + "default-authentication-method": "默认认证方式", "duplicate-board": "复制看板", "org-number": "组织数量为:", "team-number": "团队数量为:", @@ -885,7 +885,7 @@ "no-cards-found": "无法查询到卡片", "one-card-found": "查询到一个卡片", "n-cards-found": "查询到%s个卡片", - "n-n-of-n-cards-found": "__start__-__end__ of __total__ Cards Found", + "n-n-of-n-cards-found": "__start__-__end__ 共 __total__ 卡片被找到", "operator-board": "看板", "operator-board-abbrev": "b", "operator-swimlane": "泳道", @@ -968,17 +968,20 @@ "globalSearch-instructions-notes-3": "Differing operators are *AND*ed together. Only cards that match all of the differing operators are returned. `__operator_list__:Available __operator_label__:red` returns only cards in the list *Available* with a *red* label.", "globalSearch-instructions-notes-3-2": "Days can be specified as a positive or negative integer or using `__predicate_week__`, `__predicate_month__`, `__predicate_quarter__` or `__predicate_year__` for the current period.", "globalSearch-instructions-notes-4": "文本搜索大小写不敏感。", - "globalSearch-instructions-notes-5": "By default archived cards are not searched.", + "globalSearch-instructions-notes-5": "默认情况下,不搜索存档卡片。", "link-to-search": "关联至本次查询", "excel-font": "Arial", "number": "数字", "label-colors": "标签颜色", "label-names": "标签名", - "archived-at": "archived at", - "sort-cards": "Sort Cards", - "cardsSortPopup-title": "Sort Cards", - "due-date": "Due Date", - "title-alphabetically": "Title (Alphabetically)", - "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "archived-at": "归档于", + "sort-cards": "排序卡片", + "cardsSortPopup-title": "排序卡片", + "due-date": "截至日期", + "title-alphabetically": "标题(按字母顺序)", + "created-at-newest-first": "创建时间(最新)", + "created-at-oldest-first": "创建时间(最旧)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/zh-HK.i18n.json b/i18n/zh-HK.i18n.json index 0e434bfeb..e65179634 100644 --- a/i18n/zh-HK.i18n.json +++ b/i18n/zh-HK.i18n.json @@ -980,5 +980,8 @@ "due-date": "Due Date", "title-alphabetically": "Title (Alphabetically)", "created-at-newest-first": "Created At (Newest First)", - "created-at-oldest-first": "Created At (Oldest First)" + "created-at-oldest-first": "Created At (Oldest First)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/i18n/zh-TW.i18n.json b/i18n/zh-TW.i18n.json index 499c8dcdf..912fea15a 100644 --- a/i18n/zh-TW.i18n.json +++ b/i18n/zh-TW.i18n.json @@ -980,5 +980,8 @@ "due-date": "到期日", "title-alphabetically": "標題 (按字母順序)", "created-at-newest-first": "創建於(最新優先)", - "created-at-oldest-first": "創建於(最早優先)" + "created-at-oldest-first": "創建於(最早優先)", + "links-heading": "Links", + "hide-system-messages-of-all-users": "Hide system messages of all users", + "now-system-messages-of-all-users-are-hidden": "Now system messages of all users are hidden" } diff --git a/models/trelloCreator.js b/models/trelloCreator.js index 60eddde66..d9ae006f5 100644 --- a/models/trelloCreator.js +++ b/models/trelloCreator.js @@ -416,39 +416,62 @@ export class TrelloCreator { const attachments = this.attachments[card.id]; const trelloCoverId = card.idAttachmentCover; if (attachments) { + const links = []; attachments.forEach(att => { - const file = new FS.File(); - // Simulating file.attachData on the client generates multiple errors - // - HEAD returns null, which causes exception down the line - // - the template then tries to display the url to the attachment which causes other errors - // so we make it server only, and let UI catch up once it is done, forget about latency comp. - const self = this; - if (Meteor.isServer) { - file.attachData(att.url, function(error) { - file.boardId = boardId; - file.cardId = cardId; - file.userId = self._user(att.idMemberCreator); - // The field source will only be used to prevent adding - // attachments' related activities automatically - file.source = 'import'; - if (error) { - throw error; - } else { - const wekanAtt = Attachments.insert(file, () => { - // we do nothing - }); - self.attachmentIds[att.id] = wekanAtt._id; - // - if (trelloCoverId === att.id) { - Cards.direct.update(cardId, { - $set: { coverId: wekanAtt._id }, + // if the attachment `name` and `url` are the same, then the + // attachment is an attached link + if (att.name === att.url) { + links.push(att.url); + } else { + const file = new FS.File(); + // Simulating file.attachData on the client generates multiple errors + // - HEAD returns null, which causes exception down the line + // - the template then tries to display the url to the attachment which causes other errors + // so we make it server only, and let UI catch up once it is done, forget about latency comp. + const self = this; + if (Meteor.isServer) { + file.attachData(att.url, function(error) { + file.boardId = boardId; + file.cardId = cardId; + file.userId = self._user(att.idMemberCreator); + // The field source will only be used to prevent adding + // attachments' related activities automatically + file.source = 'import'; + if (error) { + throw error; + } else { + const wekanAtt = Attachments.insert(file, () => { + // we do nothing }); + self.attachmentIds[att.id] = wekanAtt._id; + // + if (trelloCoverId === att.id) { + Cards.direct.update(cardId, { + $set: { coverId: wekanAtt._id }, + }); + } } - } - }); + }); + } } // todo XXX set cover - if need be }); + + if (links.length) { + let desc = cardToCreate.description.trim(); + if (desc) { + desc += '\n\n'; + } + desc += `## ${TAPi18n.__('links-heading')}\n`; + links.forEach(link => { + desc += `* ${link}\n`; + }); + Cards.direct.update(cardId, { + $set: { + description: desc, + }, + }); + } } result.push(cardId); }); diff --git a/models/users.js b/models/users.js index c88572af0..13e623318 100644 --- a/models/users.js +++ b/models/users.js @@ -797,6 +797,25 @@ Meteor.methods({ if (Meteor.isServer) { Meteor.methods({ + setAllUsersHideSystemMessages() { + if (Meteor.user() && Meteor.user().isAdmin) { + // If setting is missing, add it + Users.update( + { 'profile.hiddenSystemMessages': { $exists: false } }, + { $set: { 'profile.hiddenSystemMessages': true } }, + { multi: true }, + ); + // If setting is false, set it to true + Users.update( + { 'profile.hiddenSystemMessages': false }, + { $set: { 'profile.hiddenSystemMessages': true } }, + { multi: true }, + ); + return true; + } else { + return false; + } + }, setCreateUser( fullname, username, diff --git a/openapi/generate_openapi.py b/openapi/generate_openapi.py index d23fba8b3..41c6fa5d8 100644 --- a/openapi/generate_openapi.py +++ b/openapi/generate_openapi.py @@ -1,6 +1,7 @@ #!/bin/env python3 import argparse +import esprima import json import logging import os @@ -14,7 +15,7 @@ err_context = 3 def get_req_body_elems(obj, elems): - if obj.type == 'FunctionExpression': + if obj.type in ['FunctionExpression', 'ArrowFunctionExpression']: get_req_body_elems(obj.body, elems) elif obj.type == 'BlockStatement': for s in obj.body: diff --git a/package-lock.json b/package-lock.json index 59d563d9c..261321908 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v5.05.0", + "version": "v5.09.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -12,55 +12,65 @@ "@babel/highlight": "^7.12.13" } }, + "@babel/compat-data": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.12.tgz", + "integrity": "sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==" + }, "@babel/core": { - "version": "7.12.16", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.16.tgz", - "integrity": "sha512-t/hHIB504wWceOeaOoONOhu+gX+hpjfeN6YRBT209X/4sibZQfSF1I0HFRRlBe97UZZosGx5XwUg1ZgNbelmNw==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz", + "integrity": "sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==", "requires": { "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.12.15", - "@babel/helper-module-transforms": "^7.12.13", - "@babel/helpers": "^7.12.13", - "@babel/parser": "^7.12.16", + "@babel/generator": "^7.13.9", + "@babel/helper-compilation-targets": "^7.13.10", + "@babel/helper-module-transforms": "^7.13.0", + "@babel/helpers": "^7.13.10", + "@babel/parser": "^7.13.10", "@babel/template": "^7.12.13", - "@babel/traverse": "^7.12.13", - "@babel/types": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", + "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", "lodash": "^4.17.19", - "semver": "^5.4.1", + "semver": "^6.3.0", "source-map": "^0.5.0" } }, "@babel/eslint-parser": { - "version": "7.12.16", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.12.16.tgz", - "integrity": "sha512-NZHtJr2pLRYcQjvo/GVU3kFxIGEHveswoWfY5Wm2tJ7pb3AoqoQ+PP17rRTDh+POFWM15VvH+23x2/9Od0CYxQ==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.13.10.tgz", + "integrity": "sha512-/I1HQ3jGPhIpeBFeI3wO9WwWOnBYpuR0pX0KlkdGcRQAVX9prB/FCS2HBpL7BiFbzhny1YCiBH8MTZD2jJa7Hg==", "requires": { "eslint-scope": "5.1.0", "eslint-visitor-keys": "^1.3.0", "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - } } }, "@babel/generator": { - "version": "7.12.15", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.15.tgz", - "integrity": "sha512-6F2xHxBiFXWNSGb7vyCUTBF8RCLY66rS0zEPcP8t/nQyXjha5EuK4z7H5o7fWG8B4M7y6mqVWq1J+1PuwRhecQ==", + "version": "7.13.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", + "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", "requires": { - "@babel/types": "^7.12.13", + "@babel/types": "^7.13.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, + "@babel/helper-compilation-targets": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.10.tgz", + "integrity": "sha512-/Xju7Qg1GQO4mHZ/Kcs6Au7gfafgZnwm+a7sy/ow/tV1sHeraRUHbjdat8/UvDor4Tez+siGKDk6zIKtCPKVJA==", + "requires": { + "@babel/compat-data": "^7.13.8", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" + } + }, "@babel/helper-function-name": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", @@ -80,35 +90,34 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.12.16", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.16.tgz", - "integrity": "sha512-zYoZC1uvebBFmj1wFAlXwt35JLEgecefATtKp20xalwEK8vHAixLBXTGxNrVGEmTT+gzOThUgr8UEdgtalc1BQ==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.13.12" } }, "@babel/helper-module-imports": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz", - "integrity": "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.13.12" } }, "@babel/helper-module-transforms": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.13.tgz", - "integrity": "sha512-acKF7EjqOR67ASIlDTupwkKM1eUisNAjaSduo5Cz+793ikfnpe7p4Q7B7EWU2PCoSTPWsQkR7hRUWEIZPiVLGA==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.12.tgz", + "integrity": "sha512-7zVQqMO3V+K4JOOj40kxiCrMf6xlQAkewBB0eu2b03OO/Q21ZutOzjpfD79A5gtE/2OWi1nv625MrDlGlkbknQ==", "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13", - "@babel/helper-simple-access": "^7.12.13", + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", "@babel/helper-split-export-declaration": "^7.12.13", "@babel/helper-validator-identifier": "^7.12.11", "@babel/template": "^7.12.13", - "@babel/traverse": "^7.12.13", - "@babel/types": "^7.12.13", - "lodash": "^4.17.19" + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" } }, "@babel/helper-optimise-call-expression": { @@ -120,22 +129,22 @@ } }, "@babel/helper-replace-supers": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.13.tgz", - "integrity": "sha512-pctAOIAMVStI2TMLhozPKbf5yTEXc0OJa0eENheb4w09SrgOWEs+P4nTOZYJQCqs8JlErGLDPDJTiGIp3ygbLg==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", "requires": { - "@babel/helper-member-expression-to-functions": "^7.12.13", + "@babel/helper-member-expression-to-functions": "^7.13.12", "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" } }, "@babel/helper-simple-access": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz", - "integrity": "sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", "requires": { - "@babel/types": "^7.12.13" + "@babel/types": "^7.13.12" } }, "@babel/helper-split-export-declaration": { @@ -151,20 +160,25 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==" }, + "@babel/helper-validator-option": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", + "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==" + }, "@babel/helpers": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.13.tgz", - "integrity": "sha512-oohVzLRZ3GQEk4Cjhfs9YkJA4TdIDTObdBEZGrd6F/T0GPSnuV6l22eMcxlvcvzVIPH3VTtxbseudM1zIE+rPQ==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", + "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", "requires": { "@babel/template": "^7.12.13", - "@babel/traverse": "^7.12.13", - "@babel/types": "^7.12.13" + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, "@babel/highlight": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.12.13.tgz", - "integrity": "sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", "requires": { "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", @@ -172,14 +186,14 @@ } }, "@babel/parser": { - "version": "7.12.16", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.16.tgz", - "integrity": "sha512-c/+u9cqV6F0+4Hpq01jnJO+GLp2DdT63ppz9Xa+6cHaajM9VFzK/iDXiKK65YtpeVwu+ctfS6iqlMqRgQRzeCw==" + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.12.tgz", + "integrity": "sha512-4T7Pb244rxH24yR116LAuJ+adxXXnHhZaLJjegJVKSdoNCe4x1eDBaud5YIcQFcqzsaD5BHvJw5BQ0AZapdCRw==" }, "@babel/runtime": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.13.tgz", - "integrity": "sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.10.tgz", + "integrity": "sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==", "requires": { "regenerator-runtime": "^0.13.4" } @@ -195,25 +209,25 @@ } }, "@babel/traverse": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.13.tgz", - "integrity": "sha512-3Zb4w7eE/OslI0fTp8c7b286/cQps3+vdLW3UcwC8VSJC6GbKn55aeVVu2QJNuCDoeKyptLOFrPq8WqZZBodyA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", + "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", "requires": { "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.12.13", + "@babel/generator": "^7.13.0", "@babel/helper-function-name": "^7.12.13", "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13", + "@babel/parser": "^7.13.0", + "@babel/types": "^7.13.0", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.19" } }, "@babel/types": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.13.tgz", - "integrity": "sha512-oKrdZTld2im1z8bDwTOQvUbxKwE+854zc16qWZQlcTqMN00pWxHQ4ZeOq0yDMnisOpRykH2/5Qqcrk/OlbAjiQ==", + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.12.tgz", + "integrity": "sha512-K4nY2xFN4QMvQwkQ+zmBDp6ANMbVNw6BbxWmYA4qNjhR9W+Lj/8ky5MEY2Me5r+B2c6/v6F53oMndG+f9s3IiA==", "requires": { "@babel/helper-validator-identifier": "^7.12.11", "lodash": "^4.17.19", @@ -221,9 +235,9 @@ } }, "@eslint/eslintrc": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", - "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", + "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -233,7 +247,6 @@ "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", - "lodash": "^4.17.20", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" }, @@ -294,6 +307,32 @@ "lodash.uniq": "^4.5.0" } }, + "@mapbox/node-pre-gyp": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.1.tgz", + "integrity": "sha512-CUBdThIZMoLEQQxACwhLsPg/puxBca0abTH3ixuvBQkhjJ80Hdp99jmVjxFCOa52/tZqN9d70IbGUf+OuKDHGA==", + "requires": { + "detect-libc": "^1.0.3", + "http-proxy-agent": "^4.0.1", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.1", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "rimraf": "^3.0.2", + "semver": "^7.3.4", + "tar": "^6.1.0" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, "@nodelib/fs.scandir": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", @@ -326,6 +365,11 @@ "any-observable": "^0.3.0" } }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==" + }, "@types/eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", @@ -345,9 +389,9 @@ "dev": true }, "@types/node": { - "version": "14.14.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.27.tgz", - "integrity": "sha512-Ecfmo4YDQPwuqTCl1yBxLV5ihKfRlkBmzUEDcfIRvDxOTGQEeikr317Ln7Gcv0tjA8dVgKI3rniqW2G1OyKDng==" + "version": "14.14.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.36.tgz", + "integrity": "sha512-kjivUwDJfIjngzbhooRnOLhGYz6oRFi+L+EpMjxroDYXwDw9lHrJJ43E+dJ6KAd3V3WxWAJ/qZE9XKYHhjPOFQ==" }, "@typescript-eslint/experimental-utils": { "version": "1.13.0", @@ -389,37 +433,37 @@ } }, "@typescript-eslint/parser": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.15.0.tgz", - "integrity": "sha512-L6Dtbq8Bc7g2aZwnIBETpmUa9XDKCMzKVwAArnGp5Mn7PRNFjf3mUzq8UeBjL3K8t311hvevnyqXAMSmxO8Gpg==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.19.0.tgz", + "integrity": "sha512-/uabZjo2ZZhm66rdAu21HA8nQebl3lAIDcybUoOxoI7VbZBYavLIwtOOmykKCJy+Xq6Vw6ugkiwn8Js7D6wieA==", "requires": { - "@typescript-eslint/scope-manager": "4.15.0", - "@typescript-eslint/types": "4.15.0", - "@typescript-eslint/typescript-estree": "4.15.0", + "@typescript-eslint/scope-manager": "4.19.0", + "@typescript-eslint/types": "4.19.0", + "@typescript-eslint/typescript-estree": "4.19.0", "debug": "^4.1.1" } }, "@typescript-eslint/scope-manager": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.15.0.tgz", - "integrity": "sha512-CSNBZnCC2jEA/a+pR9Ljh8Y+5TY5qgbPz7ICEk9WCpSEgT6Pi7H2RIjxfrrbUXvotd6ta+i27sssKEH8Azm75g==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.19.0.tgz", + "integrity": "sha512-GGy4Ba/hLXwJXygkXqMzduqOMc+Na6LrJTZXJWVhRrSuZeXmu8TAnniQVKgj8uTRKe4igO2ysYzH+Np879G75g==", "requires": { - "@typescript-eslint/types": "4.15.0", - "@typescript-eslint/visitor-keys": "4.15.0" + "@typescript-eslint/types": "4.19.0", + "@typescript-eslint/visitor-keys": "4.19.0" } }, "@typescript-eslint/types": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.15.0.tgz", - "integrity": "sha512-su4RHkJhS+iFwyqyXHcS8EGPlUVoC+XREfy5daivjLur9JP8GhvTmDipuRpcujtGC4M+GYhUOJCPDE3rC5NJrg==" + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.19.0.tgz", + "integrity": "sha512-A4iAlexVvd4IBsSTNxdvdepW0D4uR/fwxDrKUa+iEY9UWvGREu2ZyB8ylTENM1SH8F7bVC9ac9+si3LWNxcBuA==" }, "@typescript-eslint/typescript-estree": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.15.0.tgz", - "integrity": "sha512-jG6xTmcNbi6xzZq0SdWh7wQ9cMb2pqXaUp6bUZOMsIlu5aOlxGxgE/t6L/gPybybQGvdguajXGkZKSndZJpksA==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.19.0.tgz", + "integrity": "sha512-3xqArJ/A62smaQYRv2ZFyTA+XxGGWmlDYrsfZG68zJeNbeqRScnhf81rUVa6QG4UgzHnXw5VnMT5cg75dQGDkA==", "requires": { - "@typescript-eslint/types": "4.15.0", - "@typescript-eslint/visitor-keys": "4.15.0", + "@typescript-eslint/types": "4.19.0", + "@typescript-eslint/visitor-keys": "4.19.0", "debug": "^4.1.1", "globby": "^11.0.1", "is-glob": "^4.0.1", @@ -428,9 +472,9 @@ }, "dependencies": { "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "requires": { "lru-cache": "^6.0.0" } @@ -438,11 +482,11 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.15.0.tgz", - "integrity": "sha512-RnDtJwOwFucWFAMjG3ghCG/ikImFJFEg20DI7mn4pHEx3vC48lIAoyjhffvfHmErRDboUPC7p9Z2il4CLb7qxA==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.19.0.tgz", + "integrity": "sha512-aGPS6kz//j7XLSlgpzU2SeTqHPsmRYxFztj2vPuMMFJXZudpRSehE3WCV+BaxwZFvfAqMoSd86TEuM0PQ59E/A==", "requires": { - "@typescript-eslint/types": "4.15.0", + "@typescript-eslint/types": "4.19.0", "eslint-visitor-keys": "^2.0.0" }, "dependencies": { @@ -475,10 +519,18 @@ "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", "dev": true }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, "ajv": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.1.0.tgz", - "integrity": "sha512-svS9uILze/cXbH0z2myCK2Brqprx/+JJYK5pHicT/GQiBfzzhUVAIT6MwqJg8y4xV/zoGsUeuPuwtoiKSGE15g==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.3.tgz", + "integrity": "sha512-idv5WZvKVXDqKralOImQgPM9v6WOdLNa0IY3B3doOjw/YxRGT8I+allIJ6kd7Uaj+SF1xZUSU+nPM5aDNBVtnw==", "requires": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -524,17 +576,17 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "archiver": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.2.0.tgz", - "integrity": "sha512-QEAKlgQuAtUxKeZB9w5/ggKXh21bZS+dzzuQ0RPBC20qtDCbTyzqmisoeJP46MP39fg4B4IcyvR+yeyEBdblsQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz", + "integrity": "sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg==", "requires": { "archiver-utils": "^2.1.0", "async": "^3.2.0", "buffer-crc32": "^0.2.1", "readable-stream": "^3.6.0", "readdir-glob": "^1.0.0", - "tar-stream": "^2.1.4", - "zip-stream": "^4.0.4" + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" } }, "archiver-utils": { @@ -649,15 +701,15 @@ "dev": true }, "array-includes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.2.tgz", - "integrity": "sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", + "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", "dev": true, "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "get-intrinsic": "^1.0.1", + "es-abstract": "^1.18.0-next.2", + "get-intrinsic": "^1.1.1", "is-string": "^1.0.5" } }, @@ -784,12 +836,12 @@ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "bcrypt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.0.tgz", - "integrity": "sha512-jB0yCBl4W/kVHM2whjfyqnxTmOHkCX4kHEa5nYKSoGeYe8YrjTYTc87/6bwt1g8cmV0QrbhKriETg9jWtcREhg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.1.tgz", + "integrity": "sha512-9BTgmrhZM2t1bNuDtrtIMVSmmxZBrJ71n8Wg+YgdjHuIWYF7SjjmCPZFB+/5i/o/PIeRpwVJR3P+NrpIItUjqw==", "requires": { - "node-addon-api": "^3.0.0", - "node-pre-gyp": "0.15.0" + "@mapbox/node-pre-gyp": "^1.0.0", + "node-addon-api": "^3.1.0" } }, "big-integer": { @@ -866,10 +918,22 @@ "fill-range": "^7.0.1" } }, + "browserslist": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "requires": { + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" + } + }, "bson": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/bson/-/bson-4.2.2.tgz", - "integrity": "sha512-9fX257PVHAUpiRGmY3356RVWKQxLA73BgjA/x5MGuJkTEMeG7yzjuBrsiFB67EXRJnFVKrbJY9t/M+oElKYktQ==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.2.3.tgz", + "integrity": "sha512-3ztgjpKp0itFxGqzrLMHWqyZH5oMOIRWsjeY61yNVzrDGB/KxtgD6djFlz9n3vx7lLr2r6bkHagBCgyk1ZjETA==", "requires": { "buffer": "^5.6.0" } @@ -935,7 +999,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -973,6 +1036,11 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, + "caniuse-lite": { + "version": "1.0.30001204", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001204.tgz", + "integrity": "sha512-JUdjWpcxfJ9IPamy2f5JaRDCaqJOxDzOSKtbdx4rH9VivMd1vIzoPumsJa9LoMIi4Fx2BV2KZOxWhNkBjaYivQ==" + }, "chainsaw": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", @@ -998,9 +1066,9 @@ "dev": true }, "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" }, "class-utils": { "version": "0.3.6", @@ -1135,6 +1203,11 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, + "colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==" + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1153,9 +1226,9 @@ "dev": true }, "compress-commons": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.0.2.tgz", - "integrity": "sha512-qhd32a9xgzmpfoga1VQEiLEwdKZ6Plnpx5UCgIsf89FSolyJ7WnifY4Gtjgv5WR6hWAyRaHxC5MiEhU/38U70A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.0.tgz", + "integrity": "sha512-ofaaLqfraD1YRTkrRKPCrGJ1pFeDG/MVCkVVV2FNGeWquSlqw5wOrwOfPQ1xF2u+blpeWASie5EubHz+vsNIgA==", "requires": { "buffer-crc32": "^0.2.13", "crc32-stream": "^4.0.1", @@ -1238,9 +1311,9 @@ "dev": true }, "core-js": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz", - "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==" + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.9.1.tgz", + "integrity": "sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg==" }, "core-util-is": { "version": "1.0.2", @@ -1341,11 +1414,6 @@ "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", "dev": true }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -1455,6 +1523,11 @@ } } }, + "electron-to-chromium": { + "version": "1.3.700", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.700.tgz", + "integrity": "sha512-wQtaxVZzpOeCjW1CGuC5W3bYjE2jglvk076LcTautBOB9UtHztty7wNzjVsndiMcSsdUsdMy5w76w5J1U7OPTQ==" + }, "elegant-spinner": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", @@ -1499,25 +1572,27 @@ } }, "es-abstract": { - "version": "1.18.0-next.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", - "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2", + "get-intrinsic": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", "object-inspect": "^1.9.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.3", - "string.prototype.trimstart": "^1.0.3" + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" } }, "es-to-primitive": { @@ -1536,19 +1611,24 @@ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.19.0.tgz", - "integrity": "sha512-CGlMgJY56JZ9ZSYhJuhow61lMPPjUzWmChFya71Z/jilVos7mR/jPgaEfVGgMBY5DshbKdG8Ezb8FDCHcoMEMg==", + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", + "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.3.0", + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -1559,12 +1639,12 @@ "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.1", - "esquery": "^1.2.0", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^6.0.0", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", - "globals": "^12.1.0", + "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -1572,7 +1652,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -1586,6 +1666,15 @@ "v8-compile-cache": "^2.0.3" }, "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -1649,12 +1738,12 @@ "dev": true }, "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.7.0.tgz", + "integrity": "sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" } }, "has-flag": { @@ -1670,9 +1759,9 @@ "dev": true }, "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -1686,6 +1775,12 @@ "requires": { "has-flag": "^4.0.0" } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true } } }, @@ -1823,9 +1918,9 @@ } }, "eslint-plugin-meteor": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-meteor/-/eslint-plugin-meteor-7.2.2.tgz", - "integrity": "sha512-Lmmg+4WoRJfoDpfMuBO6jLU7+IksZGqIoyWrhfQGEuMRTYNWysIDVTGp+w6ygeq4hvdiZMHwuaAUR5dlxmfoLA==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-meteor/-/eslint-plugin-meteor-7.3.0.tgz", + "integrity": "sha512-z+O+tZQDo9tMw4drgcDSFLpMglJCtMYA1BGX5DA2uUldQw+FPewHerZFLIQVJvSgWpQ2RC+SKaI033RhmU0d1g==", "dev": true, "requires": { "invariant": "2.2.4" @@ -1924,9 +2019,9 @@ "dev": true }, "exceljs": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/exceljs/-/exceljs-4.2.0.tgz", - "integrity": "sha512-r0/ClXRs3cQmMGJOQY6/ymnZSBSzeJL/LjAlKjY75ev1iQgf0LcmeFfTqFTFK0fADLAWieOMXe7abPoGYWI6hA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/exceljs/-/exceljs-4.2.1.tgz", + "integrity": "sha512-EogoTdXH1X1PxqD9sV8caYd1RIfXN3PVlCV+mA/87CgdO2h4X5xAEbr7CaiP8tffz7L4aBFwsdMbjfMXi29NjA==", "requires": { "archiver": "^5.0.0", "dayjs": "^1.8.34", @@ -2250,9 +2345,9 @@ "dev": true }, "fastq": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.1.tgz", - "integrity": "sha512-AWuv6Ery3pM+dY7LYS8YIaCiQvUaos9OB1RyNgaOWnaX+Tik7Onvcsf8x8c+YtDeT0maYLniBip2hox5KtEXXA==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", + "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", "requires": { "reusify": "^1.0.4" } @@ -2276,9 +2371,9 @@ } }, "file-entry-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", - "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { "flat-cache": "^3.0.4" @@ -2348,11 +2443,11 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, "fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "requires": { - "minipass": "^2.6.0" + "minipass": "^3.0.0" } }, "fs.realpath": { @@ -2384,8 +2479,7 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "functional-red-black-tree": { "version": "1.0.1", @@ -2432,7 +2526,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -2477,9 +2570,9 @@ } }, "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "requires": { "is-glob": "^4.0.1" } @@ -2490,9 +2583,9 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "globby": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", - "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", + "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -2525,7 +2618,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -2547,16 +2639,21 @@ } } }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" }, "has-unicode": { "version": "2.0.1", @@ -2621,10 +2718,21 @@ "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", "dev": true }, + "http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -2640,14 +2748,6 @@ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, - "ignore-walk": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", - "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", - "requires": { - "minimatch": "^3.0.4" - } - }, "immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", @@ -2689,11 +2789,6 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, "inquirer": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", @@ -2794,6 +2889,21 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "is-bigint": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", + "dev": true + }, + "is-boolean-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", @@ -2888,6 +2998,12 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true + }, "is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", @@ -3133,9 +3249,9 @@ } }, "ldapjs": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/ldapjs/-/ldapjs-2.2.3.tgz", - "integrity": "sha512-143MayI+cSo1PEngge0HMVj3Fb0TneX4Qp9yl9bKs45qND3G64B75GMSxtZCfNuVsvg833aOp1UWG8peFu1LrQ==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/ldapjs/-/ldapjs-2.2.4.tgz", + "integrity": "sha512-OoeAXPNPPt4D6qva2/p6rkCIHknyYFd42Vp8JhSazBs9BbkEBmoajzj2F0ElD3vR+yAuzIVCjqh1W4uR8dfn0A==", "requires": { "abstract-logging": "^2.0.0", "asn1": "^0.2.4", @@ -3495,9 +3611,9 @@ } }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash.defaults": { "version": "4.2.0", @@ -3669,13 +3785,14 @@ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "requires": { "yallist": "^4.0.0" - }, - "dependencies": { - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" } }, "map-cache": { @@ -3734,9 +3851,9 @@ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" }, "meteor-node-stubs": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/meteor-node-stubs/-/meteor-node-stubs-1.0.1.tgz", - "integrity": "sha512-I4PE/z7eAl45XEsebHA4pcQbgjqEdK3EBGgiUoIZBi3bMQcMq6blLWZo+WdtK4Or9X4NJOiYWw4GmHiubr3egA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/meteor-node-stubs/-/meteor-node-stubs-1.0.3.tgz", + "integrity": "sha512-JQwIWPfM/Oa2x1Ycwn1Q0wVVQ8b0bOLv+qs4RR/D12b5dPktLlPCRhMzWzRPncZVJtfsnKKBgPLdFmJYUqAwHg==", "requires": { "assert": "^1.4.1", "browserify-zlib": "^0.2.0", @@ -3745,6 +3862,7 @@ "constants-browserify": "^1.0.0", "crypto-browserify": "^3.12.0", "domain-browser": "^1.2.0", + "elliptic": "^6.5.4", "events": "^3.0.0", "https-browserify": "^1.0.0", "os-browserify": "^0.3.0", @@ -3764,18 +3882,26 @@ }, "dependencies": { "asn1.js": { - "version": "4.10.1", + "version": "5.4.1", "bundled": true, "requires": { "bn.js": "^4.0.0", "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "bundled": true + } } }, "assert": { - "version": "1.4.1", + "version": "1.5.0", "bundled": true, "requires": { + "object-assign": "^4.1.1", "util": "0.10.3" }, "dependencies": { @@ -3789,11 +3915,11 @@ } }, "base64-js": { - "version": "1.3.0", + "version": "1.5.1", "bundled": true }, "bn.js": { - "version": "4.11.8", + "version": "5.2.0", "bundled": true }, "brorand": { @@ -3832,24 +3958,32 @@ } }, "browserify-rsa": { - "version": "4.0.1", + "version": "4.1.0", "bundled": true, "requires": { - "bn.js": "^4.1.0", + "bn.js": "^5.0.0", "randombytes": "^2.0.1" } }, "browserify-sign": { - "version": "4.0.4", + "version": "4.2.1", "bundled": true, "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "bundled": true + } } }, "browserify-zlib": { @@ -3860,11 +3994,11 @@ } }, "buffer": { - "version": "5.2.1", + "version": "5.7.1", "bundled": true, "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, "buffer-xor": { @@ -3884,11 +4018,8 @@ } }, "console-browserify": { - "version": "1.1.0", - "bundled": true, - "requires": { - "date-now": "^0.1.4" - } + "version": "1.2.0", + "bundled": true }, "constants-browserify": { "version": "1.0.0", @@ -3899,11 +4030,17 @@ "bundled": true }, "create-ecdh": { - "version": "4.0.3", + "version": "4.0.4", "bundled": true, "requires": { "bn.js": "^4.1.0", - "elliptic": "^6.0.0" + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "bundled": true + } } }, "create-hash": { @@ -3946,12 +4083,8 @@ "randomfill": "^1.0.3" } }, - "date-now": { - "version": "0.1.4", - "bundled": true - }, "des.js": { - "version": "1.0.0", + "version": "1.0.1", "bundled": true, "requires": { "inherits": "^2.0.1", @@ -3965,6 +4098,12 @@ "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "bundled": true + } } }, "domain-browser": { @@ -3972,20 +4111,30 @@ "bundled": true }, "elliptic": { - "version": "6.5.3", + "version": "6.5.4", "bundled": true, "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "bundled": true + }, + "inherits": { + "version": "2.0.4", + "bundled": true + } } }, "events": { - "version": "3.0.0", + "version": "3.3.0", "bundled": true }, "evp_bytestokey": { @@ -3997,11 +4146,18 @@ } }, "hash-base": { - "version": "3.0.4", + "version": "3.1.0", "bundled": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "bundled": true + } } }, "hash.js": { @@ -4013,7 +4169,7 @@ }, "dependencies": { "inherits": { - "version": "2.0.3", + "version": "2.0.4", "bundled": true } } @@ -4032,7 +4188,7 @@ "bundled": true }, "ieee754": { - "version": "1.1.13", + "version": "1.2.1", "bundled": true }, "inherits": { @@ -4058,6 +4214,12 @@ "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "bundled": true + } } }, "minimalistic-assert": { @@ -4068,32 +4230,35 @@ "version": "1.0.1", "bundled": true }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, "os-browserify": { "version": "0.3.0", "bundled": true }, "pako": { - "version": "1.0.10", + "version": "1.0.11", "bundled": true }, "parse-asn1": { - "version": "5.1.4", + "version": "5.1.6", "bundled": true, "requires": { - "asn1.js": "^4.0.0", + "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", "pbkdf2": "^3.0.3", "safe-buffer": "^5.1.1" } }, "path-browserify": { - "version": "1.0.0", + "version": "1.0.1", "bundled": true }, "pbkdf2": { - "version": "3.0.17", + "version": "3.1.1", "bundled": true, "requires": { "create-hash": "^1.1.2", @@ -4108,7 +4273,7 @@ "bundled": true }, "process-nextick-args": { - "version": "2.0.0", + "version": "2.0.1", "bundled": true }, "public-encrypt": { @@ -4121,6 +4286,12 @@ "parse-asn1": "^5.0.0", "randombytes": "^2.0.1", "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "bundled": true + } } }, "punycode": { @@ -4151,7 +4322,7 @@ } }, "readable-stream": { - "version": "3.3.0", + "version": "3.6.0", "bundled": true, "requires": { "inherits": "^2.0.3", @@ -4160,7 +4331,7 @@ }, "dependencies": { "inherits": { - "version": "2.0.3", + "version": "2.0.4", "bundled": true } } @@ -4174,7 +4345,11 @@ } }, "safe-buffer": { - "version": "5.1.2", + "version": "5.2.1", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", "bundled": true }, "setimmediate": { @@ -4198,7 +4373,7 @@ }, "dependencies": { "readable-stream": { - "version": "2.3.6", + "version": "2.3.7", "bundled": true, "requires": { "core-util-is": "~1.0.0", @@ -4211,11 +4386,15 @@ }, "dependencies": { "inherits": { - "version": "2.0.3", + "version": "2.0.4", "bundled": true } } }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true + }, "string_decoder": { "version": "1.1.1", "bundled": true, @@ -4226,24 +4405,30 @@ } }, "stream-http": { - "version": "3.0.0", + "version": "3.1.1", "bundled": true, "requires": { "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^3.0.6", - "xtend": "^4.0.0" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "bundled": true + } } }, "string_decoder": { - "version": "1.2.0", + "version": "1.3.0", "bundled": true, "requires": { - "safe-buffer": "~5.1.0" + "safe-buffer": "~5.2.0" } }, "timers-browserify": { - "version": "2.0.10", + "version": "2.0.12", "bundled": true, "requires": { "setimmediate": "^1.0.4" @@ -4285,11 +4470,11 @@ "bundled": true }, "vm-browserify": { - "version": "1.1.0", + "version": "1.1.2", "bundled": true }, "xtend": { - "version": "4.0.1", + "version": "4.0.2", "bundled": true } } @@ -4323,20 +4508,20 @@ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" + "yallist": "^4.0.0" } }, "minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "requires": { - "minipass": "^2.9.0" + "minipass": "^3.0.0", + "yallist": "^4.0.0" } }, "mixin-deep": { @@ -4364,9 +4549,9 @@ "optional": true }, "mongodb": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.4.tgz", - "integrity": "sha512-Y+Ki9iXE9jI+n9bVtbTOOdK0B95d6wVGSucwtBkvQ+HIvVdTCfpVRp01FDC24uhC/Q2WXQ8Lpq3/zwtB5Op9Qw==", + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.5.tgz", + "integrity": "sha512-mQlYKw1iGbvJJejcPuyTaytq0xxlYbIoVDm2FODR+OHxyEiMR021vc32bTvamgBjCswsD54XIRwhg3yBaWqJjg==", "requires": { "bl": "^2.2.1", "bson": "^1.1.4", @@ -4377,9 +4562,9 @@ }, "dependencies": { "bson": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.5.tgz", - "integrity": "sha512-kDuEzldR21lHciPQAIulLs1LZlCXdLziXI6Mb/TDkwXhb//UORJNPXgcRs2CuO4H0DcMkpfT3/ySsP3unoZjBg==" + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz", + "integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==" } } }, @@ -4466,26 +4651,6 @@ "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", "optional": true }, - "needle": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz", - "integrity": "sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==", - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - } - } - }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -4497,40 +4662,22 @@ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz", "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw==" }, - "node-pre-gyp": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.15.0.tgz", - "integrity": "sha512-7QcZa8/fpaU/BKenjcaeFF9hLz2+7S9AqyXFhlH/rilsQ/hPZKK32RtR5EQHJElgu+q5RfbJ34KriI79UWaorA==", - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.3", - "needle": "^2.5.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4.4.2" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - } - } + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + }, + "node-releases": { + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==" }, "nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "abbrev": "1" } }, "normalize-package-data": { @@ -4543,6 +4690,14 @@ "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "normalize-path": { @@ -4550,29 +4705,6 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, - "npm-bundled": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", - "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" - }, - "npm-packlist": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", - "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, "npm-path": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz", @@ -4724,8 +4856,7 @@ "object-inspect": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", - "dev": true + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==" }, "object-keys": { "version": "1.1.1", @@ -4764,14 +4895,14 @@ } }, "object.values": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz", - "integrity": "sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", + "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", "dev": true, "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", + "es-abstract": "^1.18.0-next.2", "has": "^1.0.3" } }, @@ -4811,11 +4942,6 @@ "resolved": "https://registry.npmjs.org/os/-/os-0.1.1.tgz", "integrity": "sha1-IIhF6J4ZOtTZcUdLk5R3NqVtE/M=" }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" - }, "os-shim": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", @@ -4825,16 +4951,8 @@ "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true }, "p-finally": { "version": "1.0.0", @@ -5114,14 +5232,6 @@ "requires": { "lodash.unescape": "4.0.1", "semver": "5.5.0" - }, - "dependencies": { - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "dev": true - } } }, "acorn": { @@ -5197,6 +5307,14 @@ "strip-json-comments": "^2.0.1", "table": "^5.2.3", "text-table": "^0.2.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "eslint-scope": { @@ -5324,6 +5442,12 @@ "glob": "^7.1.3" } }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "dev": true + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -5478,32 +5602,17 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==" + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "requires": { + "side-channel": "^1.0.4" + } }, "queue-microtask": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz", - "integrity": "sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==" - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - } - } + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, "read-pkg": { "version": "2.0.0", @@ -5618,6 +5727,11 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" } } }, @@ -5687,9 +5801,9 @@ } }, "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "version": "6.6.6", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz", + "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -5729,11 +5843,6 @@ "sparse-bitfield": "^3.0.3" } }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, "saxes": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", @@ -5743,9 +5852,9 @@ } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, "semver-compare": { "version": "1.0.0", @@ -5812,6 +5921,16 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", @@ -6215,22 +6334,22 @@ } }, "string.prototype.trimend": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", - "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", "dev": true, "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3" } }, "string.prototype.trimstart": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", - "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", "dev": true, "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3" } }, @@ -6375,9 +6494,9 @@ } }, "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { "emoji-regex": "^8.0.0", @@ -6388,17 +6507,23 @@ } }, "tar": { - "version": "4.4.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", - "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", + "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + } } }, "tar-stream": { @@ -6524,9 +6649,9 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "tsutils": { - "version": "3.20.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.20.0.tgz", - "integrity": "sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "requires": { "tslib": "^1.8.1" } @@ -6553,15 +6678,27 @@ "dev": true }, "typescript": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.5.tgz", - "integrity": "sha512-6OSu9PTIzmn9TCDiovULTnET6BgXtDYL4Gg4szY+cGsc3JP1dQL8qvE8kShTRx1NIw4Q9IBHlwODjkjWEtMUyA==" + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz", + "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==" }, "uc.micro": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, "union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", @@ -6705,9 +6842,9 @@ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, "v8-compile-cache": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", - "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, "validate-npm-package-license": { @@ -6815,6 +6952,19 @@ "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", @@ -6895,17 +7045,17 @@ } }, "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "zip-stream": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.0.4.tgz", - "integrity": "sha512-a65wQ3h5gcQ/nQGWV1mSZCEzCML6EK/vyVPcrPNynySP1j3VBbQKh3nhC8CbORb+jfl2vXvh56Ul5odP1bAHqw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", + "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", "requires": { "archiver-utils": "^2.1.0", - "compress-commons": "^4.0.2", + "compress-commons": "^4.1.0", "readable-stream": "^3.6.0" } } diff --git a/package.json b/package.json index f7afc19ad..96bd7a58d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wekan", - "version": "v5.05.0", + "version": "v5.09.0", "description": "Open-Source kanban", "private": true, "scripts": { @@ -72,7 +72,7 @@ "ldapjs": "^2.2.3", "markdown-it": "^12.0.4", "markdown-it-emoji": "^2.0.0", - "meteor-node-stubs": "^1.0.1", + "meteor-node-stubs": "^1.0.2", "mongodb": "^3.6.4", "os": "^0.1.1", "page": "^1.11.5", diff --git a/public/api/wekan.html b/public/api/wekan.html index 75e2b4411..b0cba2195 100644 --- a/public/api/wekan.html +++ b/public/api/wekan.html @@ -7,7 +7,7 @@ <meta charset="utf-8"> <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> - <title>Wekan REST API v5.05 + Wekan REST API v5.09 @@ -1467,6 +1467,26 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc + + + + + + + + + + + + + + + + + + + + @@ -1529,7 +1549,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc + + +
  • + Boards + + + +
  • + +
  • + Checklists + + + +
  • + +
  • + ChecklistItems + + + +
  • + +
  • + CardComments + + + +
  • + +
  • + Cards + + + +
  • + +
  • + CustomFields + + + +
  • + +
  • + Integrations + + + +
  • + +
  • + Lists + + + +
  • + +
  • + Users + + + +
  • + +
  • + Swimlanes + + + +
  • + +
  • + Schemas + + +
  • @@ -1573,7 +2092,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
    -

    Wekan REST API v5.05

    +

    Wekan REST API v5.09

    Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.

    @@ -1683,7 +2202,7 @@ headers = { r = requests.post('/users/login', headers = headers) -print(r.json()) +print(r.json())
    URL obj = new URL("/users/login");
    @@ -1985,7 +2504,7 @@ headers = {
     
     r = requests.post('/users/register', headers = headers)
     
    -print(r.json())
    +print(r.json())
     
     
    URL obj = new URL("/users/register");
    @@ -2212,8 +2731,18152 @@ System.out.println(response.toString());
     
    +

    Boards

    +

    get_public_boards

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/boards \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/boards HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/boards',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/boards', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/boards", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/boards', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/boards

    +

    Get all public boards

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    [
    +  {
    +    "_id": "string",
    +    "title": "string"
    +  }
    +]
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    » titlestringfalsenonenone
    + +

    new_board

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X POST /api/boards \
    +  -H 'Content-Type: multipart/form-data' \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    POST /api/boards HTTP/1.1
    +
    +Content-Type: multipart/form-data
    +Accept: application/json
    +
    +
    +
    const inputBody = '{
    +  "title": "string",
    +  "owner": "string",
    +  "isAdmin": true,
    +  "isActive": true,
    +  "isNoComments": true,
    +  "isCommentOnly": true,
    +  "isWorker": true,
    +  "permission": "string",
    +  "color": "string"
    +}';
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards',
    +{
    +  method: 'POST',
    +  body: inputBody,
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +const inputBody = {
    +  "title": "string",
    +  "owner": "string",
    +  "isAdmin": true,
    +  "isActive": true,
    +  "isNoComments": true,
    +  "isCommentOnly": true,
    +  "isWorker": true,
    +  "permission": "string",
    +  "color": "string"
    +};
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards',
    +{
    +  method: 'POST',
    +  body: JSON.stringify(inputBody),
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Content-Type' => 'multipart/form-data',
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.post '/api/boards',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Content-Type': 'multipart/form-data',
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.post('/api/boards', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("POST");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Content-Type": []string{"multipart/form-data"},
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("POST", "/api/boards", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'multipart/form-data',
    +    'Accept' => 'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('POST','/api/boards', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    POST /api/boards

    +

    Create a board

    +

    This allows to create a board.

    +

    The color has to be chosen between belize, nephritis, pomegranate, +pumpkin, wisteria, moderatepink, strongcyan, +limegreen, midnight, dark, relax, corteza:

    + Wekan logo +
    +

    Body parameter

    +
    +
    title: string
    +owner: string
    +isAdmin: true
    +isActive: true
    +isNoComments: true
    +isCommentOnly: true
    +isWorker: true
    +permission: string
    +color: string
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    bodybodyobjecttruenone
    » titlebodystringtruethe new title of the board
    » ownerbodystringtrue"ABCDE12345" <= User ID in Wekan.
    » isAdminbodybooleanfalseis the owner an admin of the board (default true)
    » isActivebodybooleanfalseis the board active (default true)
    » isNoCommentsbodybooleanfalsedisable comments (default false)
    » isCommentOnlybodybooleanfalseonly enable comments (default false)
    » isWorkerbodybooleanfalseonly move cards, assign himself to card and comment (default false)
    » permissionbodystringfalse"private" board <== Set to "public" if you
    » colorbodystringfalsethe color of the board
    +

    Detailed descriptions

    +

    » owner: "ABCDE12345" <= User ID in Wekan. +(Not username or email)

    +

    » permission: "private" board <== Set to "public" if you +want public Wekan board

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string",
    +  "defaultSwimlaneId": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    » defaultSwimlaneIdstringfalsenonenone
    + +

    get_board

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/boards/{board} \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/boards/{board} HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/boards/{board}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/boards/{board}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/boards/{board}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/boards/{board}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/boards/{board}

    +

    Get the board with that particular ID

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe ID of the board to retrieve the data
    +

    Detailed descriptions

    +

    board: the ID of the board to retrieve the data

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "title": "string",
    +  "slug": "string",
    +  "archived": true,
    +  "archivedAt": "string",
    +  "createdAt": "string",
    +  "modifiedAt": "string",
    +  "stars": 0,
    +  "labels": [
    +    {
    +      "_id": "string",
    +      "name": "string",
    +      "color": "green"
    +    }
    +  ],
    +  "members": [
    +    {
    +      "userId": "string",
    +      "isAdmin": true,
    +      "isActive": true,
    +      "isNoComments": true,
    +      "isCommentOnly": true,
    +      "isWorker": true
    +    }
    +  ],
    +  "permission": "public",
    +  "color": "belize",
    +  "description": "string",
    +  "subtasksDefaultBoardId": "string",
    +  "subtasksDefaultListId": "string",
    +  "dateSettingsDefaultBoardId": "string",
    +  "dateSettingsDefaultListId": "string",
    +  "allowsSubtasks": true,
    +  "allowsAttachments": true,
    +  "allowsChecklists": true,
    +  "allowsComments": true,
    +  "allowsDescriptionTitle": true,
    +  "allowsDescriptionText": true,
    +  "allowsActivities": true,
    +  "allowsLabels": true,
    +  "allowsAssignee": true,
    +  "allowsMembers": true,
    +  "allowsRequestedBy": true,
    +  "allowsAssignedBy": true,
    +  "allowsReceivedDate": true,
    +  "allowsStartDate": true,
    +  "allowsEndDate": true,
    +  "allowsDueDate": true,
    +  "presentParentTask": "prefix-with-full-path",
    +  "startAt": "string",
    +  "dueAt": "string",
    +  "endAt": "string",
    +  "spentTime": 0,
    +  "isOvertime": true,
    +  "type": "string",
    +  "sort": 0
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseBoards
    + +

    delete_board

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X DELETE /api/boards/{board} \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    DELETE /api/boards/{board} HTTP/1.1
    +
    +
    +
    
    +const headers = {
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.delete '/api/boards/{board}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.delete('/api/boards/{board}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("DELETE");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("DELETE", "/api/boards/{board}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('DELETE','/api/boards/{board}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    DELETE /api/boards/{board}

    +

    Delete a board

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe ID of the board
    +

    Detailed descriptions

    +

    board: the ID of the board

    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseNone
    + +

    get_board_attachments

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/boards/{board}/attachments \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/boards/{board}/attachments HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/attachments',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/attachments',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/boards/{board}/attachments',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/boards/{board}/attachments', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/attachments");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/boards/{board}/attachments", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/boards/{board}/attachments', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/boards/{board}/attachments

    +

    Get the list of attachments of a board

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    +

    Detailed descriptions

    +

    board: the board ID

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    [
    +  {
    +    "attachmentId": "string",
    +    "attachmentName": "string",
    +    "attachmentType": "string",
    +    "cardId": "string",
    +    "listId": "string",
    +    "swimlaneId": "string"
    +  }
    +]
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » attachmentIdstringfalsenonenone
    » attachmentNamestringfalsenonenone
    » attachmentTypestringfalsenonenone
    » cardIdstringfalsenonenone
    » listIdstringfalsenonenone
    » swimlaneIdstringfalsenonenone
    + +

    exportJson

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/boards/{board}/export \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/boards/{board}/export HTTP/1.1
    +
    +
    +
    
    +const headers = {
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/export',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/export',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/boards/{board}/export',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/boards/{board}/export', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/export");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/boards/{board}/export", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/boards/{board}/export', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/boards/{board}/export

    +

    This route is used to export the board to a json file format.

    +

    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

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe ID of the board we are exporting
    +

    Detailed descriptions

    +

    board: the ID of the board we are exporting

    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseNone
    + +

    add_board_label

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X PUT /api/boards/{board}/labels \
    +  -H 'Content-Type: multipart/form-data' \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    PUT /api/boards/{board}/labels HTTP/1.1
    +
    +Content-Type: multipart/form-data
    +Accept: application/json
    +
    +
    +
    const inputBody = '{
    +  "label": "string"
    +}';
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/labels',
    +{
    +  method: 'PUT',
    +  body: inputBody,
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +const inputBody = {
    +  "label": "string"
    +};
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/labels',
    +{
    +  method: 'PUT',
    +  body: JSON.stringify(inputBody),
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Content-Type' => 'multipart/form-data',
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.put '/api/boards/{board}/labels',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Content-Type': 'multipart/form-data',
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.put('/api/boards/{board}/labels', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/labels");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("PUT");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Content-Type": []string{"multipart/form-data"},
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("PUT", "/api/boards/{board}/labels", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'multipart/form-data',
    +    'Accept' => 'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('PUT','/api/boards/{board}/labels', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    PUT /api/boards/{board}/labels

    +

    Add a label to a board

    +

    If the board doesn't have the name/color label, this function +adds the label to the board.

    +
    +

    Body parameter

    +
    +
    label: string
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board
    bodybodyobjecttruenone
    » labelbodystringtruethe label value
    +

    Detailed descriptions

    +

    board: the board

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    "string"
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responsestring
    + +

    set_board_member_permission

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X POST /api/boards/{board}/members/{member} \
    +  -H 'Content-Type: multipart/form-data' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    POST /api/boards/{board}/members/{member} HTTP/1.1
    +
    +Content-Type: multipart/form-data
    +
    +
    +
    const inputBody = '{
    +  "isAdmin": true,
    +  "isNoComments": true,
    +  "isCommentOnly": true,
    +  "isWorker": true
    +}';
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/members/{member}',
    +{
    +  method: 'POST',
    +  body: inputBody,
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +const inputBody = {
    +  "isAdmin": true,
    +  "isNoComments": true,
    +  "isCommentOnly": true,
    +  "isWorker": true
    +};
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/members/{member}',
    +{
    +  method: 'POST',
    +  body: JSON.stringify(inputBody),
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Content-Type' => 'multipart/form-data',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.post '/api/boards/{board}/members/{member}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Content-Type': 'multipart/form-data',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.post('/api/boards/{board}/members/{member}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/members/{member}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("POST");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Content-Type": []string{"multipart/form-data"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("POST", "/api/boards/{board}/members/{member}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'multipart/form-data',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('POST','/api/boards/{board}/members/{member}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    POST /api/boards/{board}/members/{member}

    +

    Change the permission of a member of a board

    +
    +

    Body parameter

    +
    +
    isAdmin: true
    +isNoComments: true
    +isCommentOnly: true
    +isWorker: true
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe ID of the board that we are changing
    memberpathstringtruethe ID of the user to change permissions
    bodybodyobjecttruenone
    » isAdminbodybooleantrueadmin capability
    » isNoCommentsbodybooleantrueNoComments capability
    » isCommentOnlybodybooleantrueCommentsOnly capability
    » isWorkerbodybooleantrueWorker capability
    +

    Detailed descriptions

    +

    board: the ID of the board that we are changing

    +

    member: the ID of the user to change permissions

    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseNone
    + +

    get_boards_count

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/boards_count \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/boards_count HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards_count',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards_count',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/boards_count',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/boards_count', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards_count");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/boards_count", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/boards_count', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/boards_count

    +

    Get public and private boards count

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "private": 0,
    +  "public": 0
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » privateintegerfalsenonenone
    » publicintegerfalsenonenone
    + +

    get_boards_from_user

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/users/{user}/boards \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/users/{user}/boards HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/users/{user}/boards',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/users/{user}/boards',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/users/{user}/boards',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/users/{user}/boards', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/users/{user}/boards");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/users/{user}/boards", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/users/{user}/boards', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/users/{user}/boards

    +

    Get all boards attached to a user

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    userpathstringtruethe ID of the user to retrieve the data
    +

    Detailed descriptions

    +

    user: the ID of the user to retrieve the data

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    [
    +  {
    +    "_id": "string",
    +    "title": "string"
    +  }
    +]
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    » titlestringfalsenonenone
    + +

    Checklists

    +

    get_all_checklists

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/boards/{board}/cards/{card}/checklists \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/boards/{board}/cards/{card}/checklists HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cards/{card}/checklists',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cards/{card}/checklists',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/boards/{board}/cards/{card}/checklists',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/boards/{board}/cards/{card}/checklists', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/cards/{card}/checklists");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/boards/{board}/cards/{card}/checklists", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/boards/{board}/cards/{card}/checklists', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/boards/{board}/cards/{card}/checklists

    +

    Get the list of checklists attached to a card

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    cardpathstringtruethe card ID
    +

    Detailed descriptions

    +

    board: the board ID

    +

    card: the card ID

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    [
    +  {
    +    "_id": "string",
    +    "title": "string"
    +  }
    +]
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    » titlestringfalsenonenone
    + +

    new_checklist

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X POST /api/boards/{board}/cards/{card}/checklists \
    +  -H 'Content-Type: multipart/form-data' \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    POST /api/boards/{board}/cards/{card}/checklists HTTP/1.1
    +
    +Content-Type: multipart/form-data
    +Accept: application/json
    +
    +
    +
    const inputBody = '{
    +  "title": "string",
    +  "items": "string"
    +}';
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cards/{card}/checklists',
    +{
    +  method: 'POST',
    +  body: inputBody,
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +const inputBody = {
    +  "title": "string",
    +  "items": "string"
    +};
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cards/{card}/checklists',
    +{
    +  method: 'POST',
    +  body: JSON.stringify(inputBody),
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Content-Type' => 'multipart/form-data',
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.post '/api/boards/{board}/cards/{card}/checklists',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Content-Type': 'multipart/form-data',
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.post('/api/boards/{board}/cards/{card}/checklists', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/cards/{card}/checklists");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("POST");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Content-Type": []string{"multipart/form-data"},
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("POST", "/api/boards/{board}/cards/{card}/checklists", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'multipart/form-data',
    +    'Accept' => 'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('POST','/api/boards/{board}/cards/{card}/checklists', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    POST /api/boards/{board}/cards/{card}/checklists

    +

    create a new checklist

    +
    +

    Body parameter

    +
    +
    title: string
    +items: string
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    cardpathstringtruethe card ID
    bodybodyobjecttruenone
    » titlebodystringtruethe title of the new checklist
    » itemsbodystringfalsethe list of items on the new checklist
    +

    Detailed descriptions

    +

    board: the board ID

    +

    card: the card ID

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    get_checklist

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/boards/{board}/cards/{card}/checklists/{checklist} \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/boards/{board}/cards/{card}/checklists/{checklist} HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cards/{card}/checklists/{checklist}',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cards/{card}/checklists/{checklist}',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/boards/{board}/cards/{card}/checklists/{checklist}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/boards/{board}/cards/{card}/checklists/{checklist}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/cards/{card}/checklists/{checklist}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/boards/{board}/cards/{card}/checklists/{checklist}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/boards/{board}/cards/{card}/checklists/{checklist}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/boards/{board}/cards/{card}/checklists/{checklist}

    +

    Get a checklist

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    cardpathstringtruethe card ID
    checklistpathstringtruethe ID of the checklist
    +

    Detailed descriptions

    +

    board: the board ID

    +

    card: the card ID

    +

    checklist: the ID of the checklist

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "cardId": "string",
    +  "title": "string",
    +  "finishedAt": "string",
    +  "createdAt": "string",
    +  "sort": 0,
    +  "items": [
    +    {
    +      "_id": "string",
    +      "title": "string",
    +      "isFinished": true
    +    }
    +  ]
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » cardIdstringfalsenonenone
    » titlestringfalsenonenone
    » finishedAtstringfalsenonenone
    » createdAtstringfalsenonenone
    » sortnumberfalsenonenone
    » items[object]falsenonenone
    »» _idstringfalsenonenone
    »» titlestringfalsenonenone
    »» isFinishedbooleanfalsenonenone
    + +

    delete_checklist

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X DELETE /api/boards/{board}/cards/{card}/checklists/{checklist} \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    DELETE /api/boards/{board}/cards/{card}/checklists/{checklist} HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cards/{card}/checklists/{checklist}',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cards/{card}/checklists/{checklist}',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.delete '/api/boards/{board}/cards/{card}/checklists/{checklist}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.delete('/api/boards/{board}/cards/{card}/checklists/{checklist}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/cards/{card}/checklists/{checklist}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("DELETE");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("DELETE", "/api/boards/{board}/cards/{card}/checklists/{checklist}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('DELETE','/api/boards/{board}/cards/{card}/checklists/{checklist}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    DELETE /api/boards/{board}/cards/{card}/checklists/{checklist}

    +

    Delete a checklist

    +

    The checklist will be removed, not put in the recycle bin.

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    cardpathstringtruethe card ID
    checklistpathstringtruethe ID of the checklist to remove
    +

    Detailed descriptions

    +

    board: the board ID

    +

    card: the card ID

    +

    checklist: the ID of the checklist to remove

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    ChecklistItems

    +

    get_checklist_item

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item} \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item} HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}

    +

    Get a checklist item

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    cardpathstringtruethe card ID
    checklistpathstringtruethe checklist ID
    itempathstringtruethe ID of the item
    +

    Detailed descriptions

    +

    board: the board ID

    +

    card: the card ID

    +

    checklist: the checklist ID

    +

    item: the ID of the item

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "title": "string",
    +  "sort": 0,
    +  "isFinished": true,
    +  "checklistId": "string",
    +  "cardId": "string",
    +  "createdAt": "string",
    +  "modifiedAt": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseChecklistItems
    + +

    edit_checklist_item

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X PUT /api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item} \
    +  -H 'Content-Type: multipart/form-data' \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    PUT /api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item} HTTP/1.1
    +
    +Content-Type: multipart/form-data
    +Accept: application/json
    +
    +
    +
    const inputBody = '{
    +  "isFinished": "string",
    +  "title": "string"
    +}';
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}',
    +{
    +  method: 'PUT',
    +  body: inputBody,
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +const inputBody = {
    +  "isFinished": "string",
    +  "title": "string"
    +};
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}',
    +{
    +  method: 'PUT',
    +  body: JSON.stringify(inputBody),
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Content-Type' => 'multipart/form-data',
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.put '/api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Content-Type': 'multipart/form-data',
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.put('/api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("PUT");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Content-Type": []string{"multipart/form-data"},
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("PUT", "/api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'multipart/form-data',
    +    'Accept' => 'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('PUT','/api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    PUT /api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}

    +

    Edit a checklist item

    +
    +

    Body parameter

    +
    +
    isFinished: string
    +title: string
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    cardpathstringtruethe card ID
    checklistpathstringtruethe checklist ID
    itempathstringtruethe ID of the item
    bodybodyobjectfalsenone
    » isFinishedbodystringfalseis the item checked?
    » titlebodystringfalsethe new text of the item
    +

    Detailed descriptions

    +

    board: the board ID

    +

    card: the card ID

    +

    checklist: the checklist ID

    +

    item: the ID of the item

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    delete_checklist_item

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X DELETE /api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item} \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    DELETE /api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item} HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.delete '/api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.delete('/api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("DELETE");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("DELETE", "/api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('DELETE','/api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    DELETE /api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}

    +

    Delete a checklist item

    +

    Note: this operation can't be reverted.

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    cardpathstringtruethe card ID
    checklistpathstringtruethe checklist ID
    itempathstringtruethe ID of the item to be removed
    +

    Detailed descriptions

    +

    board: the board ID

    +

    card: the card ID

    +

    checklist: the checklist ID

    +

    item: the ID of the item to be removed

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    CardComments

    +

    get_all_comments

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/boards/{board}/cards/{card}/comments \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/boards/{board}/cards/{card}/comments HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cards/{card}/comments',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cards/{card}/comments',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/boards/{board}/cards/{card}/comments',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/boards/{board}/cards/{card}/comments', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/cards/{card}/comments");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/boards/{board}/cards/{card}/comments", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/boards/{board}/cards/{card}/comments', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/boards/{board}/cards/{card}/comments

    +

    Get all comments attached to a card

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID of the card
    cardpathstringtruethe ID of the card
    +

    Detailed descriptions

    +

    board: the board ID of the card

    +

    card: the ID of the card

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    [
    +  {
    +    "_id": "string",
    +    "comment": "string",
    +    "authorId": "string"
    +  }
    +]
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    » commentstringfalsenonenone
    » authorIdstringfalsenonenone
    + +

    new_comment

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X POST /api/boards/{board}/cards/{card}/comments \
    +  -H 'Content-Type: multipart/form-data' \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    POST /api/boards/{board}/cards/{card}/comments HTTP/1.1
    +
    +Content-Type: multipart/form-data
    +Accept: application/json
    +
    +
    +
    const inputBody = '{
    +  "authorId": "string",
    +  "comment": "string"
    +}';
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cards/{card}/comments',
    +{
    +  method: 'POST',
    +  body: inputBody,
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +const inputBody = {
    +  "authorId": "string",
    +  "comment": "string"
    +};
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cards/{card}/comments',
    +{
    +  method: 'POST',
    +  body: JSON.stringify(inputBody),
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Content-Type' => 'multipart/form-data',
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.post '/api/boards/{board}/cards/{card}/comments',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Content-Type': 'multipart/form-data',
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.post('/api/boards/{board}/cards/{card}/comments', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/cards/{card}/comments");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("POST");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Content-Type": []string{"multipart/form-data"},
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("POST", "/api/boards/{board}/cards/{card}/comments", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'multipart/form-data',
    +    'Accept' => 'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('POST','/api/boards/{board}/cards/{card}/comments', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    POST /api/boards/{board}/cards/{card}/comments

    +

    Add a comment on a card

    +
    +

    Body parameter

    +
    +
    authorId: string
    +comment: string
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID of the card
    cardpathstringtruethe ID of the card
    bodybodyobjecttruenone
    » authorIdbodystringtruethe user who 'posted' the comment
    » commentbodystringtruethe comment value
    +

    Detailed descriptions

    +

    board: the board ID of the card

    +

    card: the ID of the card

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    get_comment

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/boards/{board}/cards/{card}/comments/{comment} \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/boards/{board}/cards/{card}/comments/{comment} HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cards/{card}/comments/{comment}',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cards/{card}/comments/{comment}',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/boards/{board}/cards/{card}/comments/{comment}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/boards/{board}/cards/{card}/comments/{comment}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/cards/{card}/comments/{comment}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/boards/{board}/cards/{card}/comments/{comment}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/boards/{board}/cards/{card}/comments/{comment}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/boards/{board}/cards/{card}/comments/{comment}

    +

    Get a comment on a card

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID of the card
    cardpathstringtruethe ID of the card
    commentpathstringtruethe ID of the comment to retrieve
    +

    Detailed descriptions

    +

    board: the board ID of the card

    +

    card: the ID of the card

    +

    comment: the ID of the comment to retrieve

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "boardId": "string",
    +  "cardId": "string",
    +  "text": "string",
    +  "createdAt": "string",
    +  "modifiedAt": "string",
    +  "userId": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseCardComments
    + +

    delete_comment

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X DELETE /api/boards/{board}/cards/{card}/comments/{comment} \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    DELETE /api/boards/{board}/cards/{card}/comments/{comment} HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cards/{card}/comments/{comment}',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cards/{card}/comments/{comment}',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.delete '/api/boards/{board}/cards/{card}/comments/{comment}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.delete('/api/boards/{board}/cards/{card}/comments/{comment}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/cards/{card}/comments/{comment}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("DELETE");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("DELETE", "/api/boards/{board}/cards/{card}/comments/{comment}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('DELETE','/api/boards/{board}/cards/{card}/comments/{comment}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    DELETE /api/boards/{board}/cards/{card}/comments/{comment}

    +

    Delete a comment on a card

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID of the card
    cardpathstringtruethe ID of the card
    commentpathstringtruethe ID of the comment to delete
    +

    Detailed descriptions

    +

    board: the board ID of the card

    +

    card: the ID of the card

    +

    comment: the ID of the comment to delete

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    Cards

    +

    get_cards_by_custom_field

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/boards/{board}/cardsByCustomField/{customField}/{customFieldValue} \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/boards/{board}/cardsByCustomField/{customField}/{customFieldValue} HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cardsByCustomField/{customField}/{customFieldValue}',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/cardsByCustomField/{customField}/{customFieldValue}',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/boards/{board}/cardsByCustomField/{customField}/{customFieldValue}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/boards/{board}/cardsByCustomField/{customField}/{customFieldValue}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/cardsByCustomField/{customField}/{customFieldValue}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/boards/{board}/cardsByCustomField/{customField}/{customFieldValue}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/boards/{board}/cardsByCustomField/{customField}/{customFieldValue}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/boards/{board}/cardsByCustomField/{customField}/{customFieldValue}

    +

    Get all Cards that matchs a value of a specific custom field

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    customFieldpathstringtruethe list ID
    customFieldValuepathstringtruethe value to look for
    +

    Detailed descriptions

    +

    board: the board ID

    +

    customField: the list ID

    +

    customFieldValue: the value to look for

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    [
    +  {
    +    "_id": "string",
    +    "title": "string",
    +    "description": "string",
    +    "listId": "string",
    +    "swinlaneId": "string"
    +  }
    +]
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    » titlestringfalsenonenone
    » descriptionstringfalsenonenone
    » listIdstringfalsenonenone
    » swinlaneIdstringfalsenonenone
    + +

    get_all_cards

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/boards/{board}/lists/{list}/cards \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/boards/{board}/lists/{list}/cards HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/lists/{list}/cards',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/lists/{list}/cards',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/boards/{board}/lists/{list}/cards',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/boards/{board}/lists/{list}/cards', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/lists/{list}/cards");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/boards/{board}/lists/{list}/cards", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/boards/{board}/lists/{list}/cards', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/boards/{board}/lists/{list}/cards

    +

    Get all Cards attached to a List

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    listpathstringtruethe list ID
    +

    Detailed descriptions

    +

    board: the board ID

    +

    list: the list ID

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    [
    +  {
    +    "_id": "string",
    +    "title": "string",
    +    "description": "string"
    +  }
    +]
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    » titlestringfalsenonenone
    » descriptionstringfalsenonenone
    + +

    new_card

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X POST /api/boards/{board}/lists/{list}/cards \
    +  -H 'Content-Type: multipart/form-data' \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    POST /api/boards/{board}/lists/{list}/cards HTTP/1.1
    +
    +Content-Type: multipart/form-data
    +Accept: application/json
    +
    +
    +
    const inputBody = '{
    +  "authorId": "string",
    +  "members": "string",
    +  "assignees": "string",
    +  "title": "string",
    +  "description": "string",
    +  "swimlaneId": "string"
    +}';
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/lists/{list}/cards',
    +{
    +  method: 'POST',
    +  body: inputBody,
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +const inputBody = {
    +  "authorId": "string",
    +  "members": "string",
    +  "assignees": "string",
    +  "title": "string",
    +  "description": "string",
    +  "swimlaneId": "string"
    +};
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/lists/{list}/cards',
    +{
    +  method: 'POST',
    +  body: JSON.stringify(inputBody),
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Content-Type' => 'multipart/form-data',
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.post '/api/boards/{board}/lists/{list}/cards',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Content-Type': 'multipart/form-data',
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.post('/api/boards/{board}/lists/{list}/cards', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/lists/{list}/cards");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("POST");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Content-Type": []string{"multipart/form-data"},
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("POST", "/api/boards/{board}/lists/{list}/cards", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'multipart/form-data',
    +    'Accept' => 'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('POST','/api/boards/{board}/lists/{list}/cards', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    POST /api/boards/{board}/lists/{list}/cards

    +

    Create a new Card

    +
    +

    Body parameter

    +
    +
    authorId: string
    +members: string
    +assignees: string
    +title: string
    +description: string
    +swimlaneId: string
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID of the new card
    listpathstringtruethe list ID of the new card
    bodybodyobjecttruenone
    » authorIdbodystringtruethe authorId value
    » membersbodystringfalsethe member IDs list of the new card
    » assigneesbodystringfalsethe array of maximum one ID of assignee of the new card
    » titlebodystringtruethe title of the new card
    » descriptionbodystringtruethe description of the new card
    » swimlaneIdbodystringtruethe swimlane ID of the new card
    +

    Detailed descriptions

    +

    board: the board ID of the new card

    +

    list: the list ID of the new card

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    get_card

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/boards/{board}/lists/{list}/cards/{card} \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/boards/{board}/lists/{list}/cards/{card} HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/lists/{list}/cards/{card}',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/lists/{list}/cards/{card}',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/boards/{board}/lists/{list}/cards/{card}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/boards/{board}/lists/{list}/cards/{card}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/lists/{list}/cards/{card}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/boards/{board}/lists/{list}/cards/{card}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/boards/{board}/lists/{list}/cards/{card}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/boards/{board}/lists/{list}/cards/{card}

    +

    Get a Card

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    listpathstringtruethe list ID of the card
    cardpathstringtruethe card ID
    +

    Detailed descriptions

    +

    board: the board ID

    +

    list: the list ID of the card

    +

    card: the card ID

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "title": "string",
    +  "archived": true,
    +  "archivedAt": "string",
    +  "parentId": "string",
    +  "listId": "string",
    +  "swimlaneId": "string",
    +  "boardId": "string",
    +  "coverId": "string",
    +  "color": "white",
    +  "createdAt": "string",
    +  "modifiedAt": "string",
    +  "customFields": [
    +    {}
    +  ],
    +  "dateLastActivity": "string",
    +  "description": "string",
    +  "requestedBy": "string",
    +  "assignedBy": "string",
    +  "labelIds": [
    +    "string"
    +  ],
    +  "members": [
    +    "string"
    +  ],
    +  "assignees": [
    +    "string"
    +  ],
    +  "receivedAt": "string",
    +  "startAt": "string",
    +  "dueAt": "string",
    +  "endAt": "string",
    +  "spentTime": 0,
    +  "isOvertime": true,
    +  "userId": "string",
    +  "sort": 0,
    +  "subtaskSort": 0,
    +  "type": "string",
    +  "linkedId": "string",
    +  "vote": {
    +    "question": "string",
    +    "positive": [
    +      "string"
    +    ],
    +    "negative": [
    +      "string"
    +    ],
    +    "end": "string",
    +    "public": true,
    +    "allowNonBoardMembers": true
    +  }
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseCards
    + +

    edit_card

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X PUT /api/boards/{board}/lists/{list}/cards/{card} \
    +  -H 'Content-Type: multipart/form-data' \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    PUT /api/boards/{board}/lists/{list}/cards/{card} HTTP/1.1
    +
    +Content-Type: multipart/form-data
    +Accept: application/json
    +
    +
    +
    const inputBody = '{
    +  "title": "string",
    +  "sort": "string",
    +  "parentId": "string",
    +  "description": "string",
    +  "color": "string",
    +  "vote": {},
    +  "labelIds": "string",
    +  "requestedBy": "string",
    +  "assignedBy": "string",
    +  "receivedAt": "string",
    +  "startAt": "string",
    +  "dueAt": "string",
    +  "endAt": "string",
    +  "spentTime": "string",
    +  "isOverTime": true,
    +  "customFields": "string",
    +  "members": "string",
    +  "assignees": "string",
    +  "swimlaneId": "string",
    +  "listId": "string",
    +  "authorId": "string"
    +}';
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/lists/{list}/cards/{card}',
    +{
    +  method: 'PUT',
    +  body: inputBody,
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +const inputBody = {
    +  "title": "string",
    +  "sort": "string",
    +  "parentId": "string",
    +  "description": "string",
    +  "color": "string",
    +  "vote": {},
    +  "labelIds": "string",
    +  "requestedBy": "string",
    +  "assignedBy": "string",
    +  "receivedAt": "string",
    +  "startAt": "string",
    +  "dueAt": "string",
    +  "endAt": "string",
    +  "spentTime": "string",
    +  "isOverTime": true,
    +  "customFields": "string",
    +  "members": "string",
    +  "assignees": "string",
    +  "swimlaneId": "string",
    +  "listId": "string",
    +  "authorId": "string"
    +};
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/lists/{list}/cards/{card}',
    +{
    +  method: 'PUT',
    +  body: JSON.stringify(inputBody),
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Content-Type' => 'multipart/form-data',
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.put '/api/boards/{board}/lists/{list}/cards/{card}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Content-Type': 'multipart/form-data',
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.put('/api/boards/{board}/lists/{list}/cards/{card}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/lists/{list}/cards/{card}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("PUT");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Content-Type": []string{"multipart/form-data"},
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("PUT", "/api/boards/{board}/lists/{list}/cards/{card}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'multipart/form-data',
    +    'Accept' => 'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('PUT','/api/boards/{board}/lists/{list}/cards/{card}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    PUT /api/boards/{board}/lists/{list}/cards/{card}

    +

    Edit Fields in a Card

    +

    Edit a card

    +

    The color has to be chosen between white, green, yellow, orange, +red, purple, blue, sky, lime, pink, black, silver, +peachpuff, crimson, plum, darkgreen, slateblue, magenta, +gold, navy, gray, saddlebrown, paleturquoise, mistyrose, +indigo:

    + Wekan card colors +

    Note: setting the color to white has the same effect than removing it.

    +
    +

    Body parameter

    +
    +
    title: string
    +sort: string
    +parentId: string
    +description: string
    +color: string
    +vote: {}
    +labelIds: string
    +requestedBy: string
    +assignedBy: string
    +receivedAt: string
    +startAt: string
    +dueAt: string
    +endAt: string
    +spentTime: string
    +isOverTime: true
    +customFields: string
    +members: string
    +assignees: string
    +swimlaneId: string
    +listId: string
    +authorId: string
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID of the card
    listpathstringtruethe list ID of the card
    cardpathstringtruethe ID of the card
    bodybodyobjectfalsenone
    » titlebodystringfalsethe new title of the card
    » sortbodystringfalsethe new sort value of the card
    » parentIdbodystringfalsechange the parent of the card
    » descriptionbodystringfalsethe new description of the card
    » colorbodystringfalsethe new color of the card
    » votebodyobjectfalsethe vote object
    » labelIdsbodystringfalsethe new list of label IDs attached to the card
    » requestedBybodystringfalsethe new requestedBy field of the card
    » assignedBybodystringfalsethe new assignedBy field of the card
    » receivedAtbodystringfalsethe new receivedAt field of the card
    » startAtbodystringfalsethe new startAt field of the card
    » dueAtbodystringfalsethe new dueAt field of the card
    » endAtbodystringfalsethe new endAt field of the card
    » spentTimebodystringfalsethe new spentTime field of the card
    » isOverTimebodybooleanfalsethe new isOverTime field of the card
    » customFieldsbodystringfalsethe new customFields value of the card
    » membersbodystringfalsethe new list of member IDs attached to the card
    » assigneesbodystringfalsethe array of maximum one ID of assignee attached to the card
    » swimlaneIdbodystringfalsethe new swimlane ID of the card
    » listIdbodystringfalsethe new list ID of the card (move operation)
    » authorIdbodystringfalsechange the owner of the card
    +

    Detailed descriptions

    +

    board: the board ID of the card

    +

    list: the list ID of the card

    +

    card: the ID of the card

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    delete_card

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X DELETE /api/boards/{board}/lists/{list}/cards/{card} \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    DELETE /api/boards/{board}/lists/{list}/cards/{card} HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/lists/{list}/cards/{card}',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/lists/{list}/cards/{card}',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.delete '/api/boards/{board}/lists/{list}/cards/{card}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.delete('/api/boards/{board}/lists/{list}/cards/{card}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/lists/{list}/cards/{card}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("DELETE");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("DELETE", "/api/boards/{board}/lists/{list}/cards/{card}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('DELETE','/api/boards/{board}/lists/{list}/cards/{card}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    DELETE /api/boards/{board}/lists/{list}/cards/{card}

    +

    Delete a card from a board

    +

    This operation deletes a card, and therefore the card +is not put in the recycle bin.

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID of the card
    listpathstringtruethe list ID of the card
    cardpathstringtruethe ID of the card
    +

    Detailed descriptions

    +

    board: the board ID of the card

    +

    list: the list ID of the card

    +

    card: the ID of the card

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    get_swimlane_cards

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/boards/{board}/swimlanes/{swimlane}/cards \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/boards/{board}/swimlanes/{swimlane}/cards HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/swimlanes/{swimlane}/cards',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/swimlanes/{swimlane}/cards',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/boards/{board}/swimlanes/{swimlane}/cards',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/boards/{board}/swimlanes/{swimlane}/cards', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/swimlanes/{swimlane}/cards");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/boards/{board}/swimlanes/{swimlane}/cards", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/boards/{board}/swimlanes/{swimlane}/cards', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/boards/{board}/swimlanes/{swimlane}/cards

    +

    get all cards attached to a swimlane

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    swimlanepathstringtruethe swimlane ID
    +

    Detailed descriptions

    +

    board: the board ID

    +

    swimlane: the swimlane ID

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    [
    +  {
    +    "_id": "string",
    +    "title": "string",
    +    "description": "string",
    +    "listId": "string"
    +  }
    +]
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    » titlestringfalsenonenone
    » descriptionstringfalsenonenone
    » listIdstringfalsenonenone
    + +

    CustomFields

    +

    get_all_custom_fields

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/boards/{board}/custom-fields \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/boards/{board}/custom-fields HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/custom-fields',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/custom-fields',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/boards/{board}/custom-fields',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/boards/{board}/custom-fields', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/custom-fields");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/boards/{board}/custom-fields", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/boards/{board}/custom-fields', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/boards/{board}/custom-fields

    +

    Get the list of Custom Fields attached to a board

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board value
    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    [
    +  {
    +    "_id": "string",
    +    "name": "string",
    +    "type": "string"
    +  }
    +]
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    » namestringfalsenonenone
    » typestringfalsenonenone
    + +

    new_custom_field

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X POST /api/boards/{board}/custom-fields \
    +  -H 'Content-Type: multipart/form-data' \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    POST /api/boards/{board}/custom-fields HTTP/1.1
    +
    +Content-Type: multipart/form-data
    +Accept: application/json
    +
    +
    +
    const inputBody = '{
    +  "name": "string",
    +  "type": "string",
    +  "settings": "string",
    +  "showOnCard": true,
    +  "automaticallyOnCard": true,
    +  "showLabelOnMiniCard": true,
    +  "authorId": "string"
    +}';
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/custom-fields',
    +{
    +  method: 'POST',
    +  body: inputBody,
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +const inputBody = {
    +  "name": "string",
    +  "type": "string",
    +  "settings": "string",
    +  "showOnCard": true,
    +  "automaticallyOnCard": true,
    +  "showLabelOnMiniCard": true,
    +  "authorId": "string"
    +};
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/custom-fields',
    +{
    +  method: 'POST',
    +  body: JSON.stringify(inputBody),
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Content-Type' => 'multipart/form-data',
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.post '/api/boards/{board}/custom-fields',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Content-Type': 'multipart/form-data',
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.post('/api/boards/{board}/custom-fields', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/custom-fields");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("POST");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Content-Type": []string{"multipart/form-data"},
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("POST", "/api/boards/{board}/custom-fields", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'multipart/form-data',
    +    'Accept' => 'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('POST','/api/boards/{board}/custom-fields', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    POST /api/boards/{board}/custom-fields

    +

    Create a Custom Field

    +
    +

    Body parameter

    +
    +
    name: string
    +type: string
    +settings: string
    +showOnCard: true
    +automaticallyOnCard: true
    +showLabelOnMiniCard: true
    +authorId: string
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board value
    bodybodyobjecttruenone
    » namebodystringtruethe name of the custom field
    » typebodystringtruethe type of the custom field
    » settingsbodystringtruethe settings object of the custom field
    » showOnCardbodybooleantrueshould we show the custom field on cards?
    » automaticallyOnCardbodybooleantrueshould the custom fields automatically be added on cards?
    » showLabelOnMiniCardbodybooleantrueshould the label of the custom field be shown on minicards?
    » authorIdbodystringtruethe authorId value
    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    get_custom_field

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/boards/{board}/custom-fields/{customField} \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/boards/{board}/custom-fields/{customField} HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/custom-fields/{customField}',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/custom-fields/{customField}',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/boards/{board}/custom-fields/{customField}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/boards/{board}/custom-fields/{customField}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/custom-fields/{customField}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/boards/{board}/custom-fields/{customField}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/boards/{board}/custom-fields/{customField}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/boards/{board}/custom-fields/{customField}

    +

    Get a Custom Fields attached to a board

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board value
    customFieldpathstringtruethe ID of the custom field
    +

    Detailed descriptions

    +

    customField: the ID of the custom field

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    [
    +  {
    +    "_id": "string",
    +    "boardIds": "string"
    +  }
    +]
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    » boardIdsstringfalsenonenone
    + +

    edit_custom_field

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X PUT /api/boards/{board}/custom-fields/{customField} \
    +  -H 'Content-Type: multipart/form-data' \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    PUT /api/boards/{board}/custom-fields/{customField} HTTP/1.1
    +
    +Content-Type: multipart/form-data
    +Accept: application/json
    +
    +
    +
    const inputBody = '{
    +  "name": "string",
    +  "type": "string",
    +  "settings": "string",
    +  "showOnCard": true,
    +  "automaticallyOnCard": true,
    +  "alwaysOnCard": "string",
    +  "showLabelOnMiniCard": true
    +}';
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/custom-fields/{customField}',
    +{
    +  method: 'PUT',
    +  body: inputBody,
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +const inputBody = {
    +  "name": "string",
    +  "type": "string",
    +  "settings": "string",
    +  "showOnCard": true,
    +  "automaticallyOnCard": true,
    +  "alwaysOnCard": "string",
    +  "showLabelOnMiniCard": true
    +};
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/custom-fields/{customField}',
    +{
    +  method: 'PUT',
    +  body: JSON.stringify(inputBody),
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Content-Type' => 'multipart/form-data',
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.put '/api/boards/{board}/custom-fields/{customField}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Content-Type': 'multipart/form-data',
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.put('/api/boards/{board}/custom-fields/{customField}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/custom-fields/{customField}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("PUT");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Content-Type": []string{"multipart/form-data"},
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("PUT", "/api/boards/{board}/custom-fields/{customField}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'multipart/form-data',
    +    'Accept' => 'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('PUT','/api/boards/{board}/custom-fields/{customField}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    PUT /api/boards/{board}/custom-fields/{customField}

    +

    Update a Custom Field

    +
    +

    Body parameter

    +
    +
    name: string
    +type: string
    +settings: string
    +showOnCard: true
    +automaticallyOnCard: true
    +alwaysOnCard: string
    +showLabelOnMiniCard: true
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board value
    customFieldpathstringtruethe customField value
    bodybodyobjecttruenone
    » namebodystringtruethe name of the custom field
    » typebodystringtruethe type of the custom field
    » settingsbodystringtruethe settings object of the custom field
    » showOnCardbodybooleantrueshould we show the custom field on cards
    » automaticallyOnCardbodybooleantrueshould the custom fields automatically be added on cards
    » alwaysOnCardbodystringtruethe alwaysOnCard value
    » showLabelOnMiniCardbodybooleantrueshould the label of the custom field be shown on minicards
    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    delete_custom_field

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X DELETE /api/boards/{board}/custom-fields/{customField} \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    DELETE /api/boards/{board}/custom-fields/{customField} HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/custom-fields/{customField}',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/custom-fields/{customField}',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.delete '/api/boards/{board}/custom-fields/{customField}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.delete('/api/boards/{board}/custom-fields/{customField}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/custom-fields/{customField}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("DELETE");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("DELETE", "/api/boards/{board}/custom-fields/{customField}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('DELETE','/api/boards/{board}/custom-fields/{customField}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    DELETE /api/boards/{board}/custom-fields/{customField}

    +

    Delete a Custom Fields attached to a board

    +

    The Custom Field can't be retrieved after this operation

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board value
    customFieldpathstringtruethe ID of the custom field
    +

    Detailed descriptions

    +

    customField: the ID of the custom field

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    add_custom_field_dropdown_items

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X POST /api/boards/{board}/custom-fields/{customField}/dropdown-items \
    +  -H 'Content-Type: multipart/form-data' \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    POST /api/boards/{board}/custom-fields/{customField}/dropdown-items HTTP/1.1
    +
    +Content-Type: multipart/form-data
    +Accept: application/json
    +
    +
    +
    const inputBody = '{
    +  "items": "string"
    +}';
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/custom-fields/{customField}/dropdown-items',
    +{
    +  method: 'POST',
    +  body: inputBody,
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +const inputBody = {
    +  "items": "string"
    +};
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/custom-fields/{customField}/dropdown-items',
    +{
    +  method: 'POST',
    +  body: JSON.stringify(inputBody),
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Content-Type' => 'multipart/form-data',
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.post '/api/boards/{board}/custom-fields/{customField}/dropdown-items',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Content-Type': 'multipart/form-data',
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.post('/api/boards/{board}/custom-fields/{customField}/dropdown-items', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/custom-fields/{customField}/dropdown-items");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("POST");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Content-Type": []string{"multipart/form-data"},
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("POST", "/api/boards/{board}/custom-fields/{customField}/dropdown-items", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'multipart/form-data',
    +    'Accept' => 'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('POST','/api/boards/{board}/custom-fields/{customField}/dropdown-items', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    POST /api/boards/{board}/custom-fields/{customField}/dropdown-items

    +

    Update a Custom Field's dropdown items

    +
    +

    Body parameter

    +
    +
    items: string
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board value
    customFieldpathstringtruethe customField value
    bodybodyobjectfalsenone
    » itemsbodystringfalsenames of the custom field
    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    edit_custom_field_dropdown_item

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X PUT /api/boards/{board}/custom-fields/{customField}/dropdown-items/{dropdownItem} \
    +  -H 'Content-Type: multipart/form-data' \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    PUT /api/boards/{board}/custom-fields/{customField}/dropdown-items/{dropdownItem} HTTP/1.1
    +
    +Content-Type: multipart/form-data
    +Accept: application/json
    +
    +
    +
    const inputBody = '{
    +  "name": "string"
    +}';
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/custom-fields/{customField}/dropdown-items/{dropdownItem}',
    +{
    +  method: 'PUT',
    +  body: inputBody,
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +const inputBody = {
    +  "name": "string"
    +};
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/custom-fields/{customField}/dropdown-items/{dropdownItem}',
    +{
    +  method: 'PUT',
    +  body: JSON.stringify(inputBody),
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Content-Type' => 'multipart/form-data',
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.put '/api/boards/{board}/custom-fields/{customField}/dropdown-items/{dropdownItem}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Content-Type': 'multipart/form-data',
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.put('/api/boards/{board}/custom-fields/{customField}/dropdown-items/{dropdownItem}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/custom-fields/{customField}/dropdown-items/{dropdownItem}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("PUT");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Content-Type": []string{"multipart/form-data"},
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("PUT", "/api/boards/{board}/custom-fields/{customField}/dropdown-items/{dropdownItem}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'multipart/form-data',
    +    'Accept' => 'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('PUT','/api/boards/{board}/custom-fields/{customField}/dropdown-items/{dropdownItem}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    PUT /api/boards/{board}/custom-fields/{customField}/dropdown-items/{dropdownItem}

    +

    Update a Custom Field's dropdown item

    +
    +

    Body parameter

    +
    +
    name: string
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board value
    customFieldpathstringtruethe customField value
    dropdownItempathstringtruethe dropdownItem value
    bodybodyobjecttruenone
    » namebodystringtruenames of the custom field
    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    delete_custom_field_dropdown_item

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X DELETE /api/boards/{board}/custom-fields/{customField}/dropdown-items/{dropdownItem} \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    DELETE /api/boards/{board}/custom-fields/{customField}/dropdown-items/{dropdownItem} HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/custom-fields/{customField}/dropdown-items/{dropdownItem}',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/custom-fields/{customField}/dropdown-items/{dropdownItem}',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.delete '/api/boards/{board}/custom-fields/{customField}/dropdown-items/{dropdownItem}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.delete('/api/boards/{board}/custom-fields/{customField}/dropdown-items/{dropdownItem}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/custom-fields/{customField}/dropdown-items/{dropdownItem}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("DELETE");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("DELETE", "/api/boards/{board}/custom-fields/{customField}/dropdown-items/{dropdownItem}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('DELETE','/api/boards/{board}/custom-fields/{customField}/dropdown-items/{dropdownItem}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    DELETE /api/boards/{board}/custom-fields/{customField}/dropdown-items/{dropdownItem}

    +

    Update a Custom Field's dropdown items

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board value
    customFieldpathstringtruethe customField value
    dropdownItempathstringtruethe dropdownItem value
    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    Integrations

    +

    get_all_integrations

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/boards/{board}/integrations \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/boards/{board}/integrations HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/integrations',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/integrations',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/boards/{board}/integrations',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/boards/{board}/integrations', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/integrations");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/boards/{board}/integrations", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/boards/{board}/integrations', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/boards/{board}/integrations

    +

    Get all integrations in board

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    +

    Detailed descriptions

    +

    board: the board ID

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    [
    +  {
    +    "enabled": true,
    +    "title": "string",
    +    "type": "string",
    +    "activities": [
    +      "string"
    +    ],
    +    "url": "string",
    +    "token": "string",
    +    "boardId": "string",
    +    "createdAt": "string",
    +    "modifiedAt": "string",
    +    "userId": "string"
    +  }
    +]
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    anonymous[Integrations]falsenone[Integration with third-party applications]
    » enabledbooleantruenoneis the integration enabled?
    » titlestring¦nullfalsenonename of the integration
    » typestringtruenonetype of the integratation (Default to 'outgoing-webhooks')
    » activities[string]truenoneactivities the integration gets triggered (list)
    » urlstringtruenonenone
    » tokenstring¦nullfalsenonetoken of the integration
    » boardIdstringtruenoneBoard ID of the integration
    » createdAtstringtruenoneCreation date of the integration
    » modifiedAtstringtruenonenone
    » userIdstringtruenoneuser ID who created the interation
    + +

    new_integration

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X POST /api/boards/{board}/integrations \
    +  -H 'Content-Type: multipart/form-data' \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    POST /api/boards/{board}/integrations HTTP/1.1
    +
    +Content-Type: multipart/form-data
    +Accept: application/json
    +
    +
    +
    const inputBody = '{
    +  "url": "string"
    +}';
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/integrations',
    +{
    +  method: 'POST',
    +  body: inputBody,
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +const inputBody = {
    +  "url": "string"
    +};
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/integrations',
    +{
    +  method: 'POST',
    +  body: JSON.stringify(inputBody),
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Content-Type' => 'multipart/form-data',
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.post '/api/boards/{board}/integrations',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Content-Type': 'multipart/form-data',
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.post('/api/boards/{board}/integrations', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/integrations");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("POST");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Content-Type": []string{"multipart/form-data"},
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("POST", "/api/boards/{board}/integrations", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'multipart/form-data',
    +    'Accept' => 'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('POST','/api/boards/{board}/integrations', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    POST /api/boards/{board}/integrations

    +

    Create a new integration

    +
    +

    Body parameter

    +
    +
    url: string
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    bodybodyobjecttruenone
    » urlbodystringtruethe URL of the integration
    +

    Detailed descriptions

    +

    board: the board ID

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    get_integration

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/boards/{board}/integrations/{int} \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/boards/{board}/integrations/{int} HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/integrations/{int}',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/integrations/{int}',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/boards/{board}/integrations/{int}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/boards/{board}/integrations/{int}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/integrations/{int}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/boards/{board}/integrations/{int}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/boards/{board}/integrations/{int}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/boards/{board}/integrations/{int}

    +

    Get a single integration in board

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    intpathstringtruethe integration ID
    +

    Detailed descriptions

    +

    board: the board ID

    +

    int: the integration ID

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "enabled": true,
    +  "title": "string",
    +  "type": "string",
    +  "activities": [
    +    "string"
    +  ],
    +  "url": "string",
    +  "token": "string",
    +  "boardId": "string",
    +  "createdAt": "string",
    +  "modifiedAt": "string",
    +  "userId": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseIntegrations
    + +

    edit_integration

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X PUT /api/boards/{board}/integrations/{int} \
    +  -H 'Content-Type: multipart/form-data' \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    PUT /api/boards/{board}/integrations/{int} HTTP/1.1
    +
    +Content-Type: multipart/form-data
    +Accept: application/json
    +
    +
    +
    const inputBody = '{
    +  "enabled": "string",
    +  "title": "string",
    +  "url": "string",
    +  "token": "string",
    +  "activities": "string"
    +}';
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/integrations/{int}',
    +{
    +  method: 'PUT',
    +  body: inputBody,
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +const inputBody = {
    +  "enabled": "string",
    +  "title": "string",
    +  "url": "string",
    +  "token": "string",
    +  "activities": "string"
    +};
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/integrations/{int}',
    +{
    +  method: 'PUT',
    +  body: JSON.stringify(inputBody),
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Content-Type' => 'multipart/form-data',
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.put '/api/boards/{board}/integrations/{int}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Content-Type': 'multipart/form-data',
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.put('/api/boards/{board}/integrations/{int}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/integrations/{int}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("PUT");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Content-Type": []string{"multipart/form-data"},
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("PUT", "/api/boards/{board}/integrations/{int}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'multipart/form-data',
    +    'Accept' => 'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('PUT','/api/boards/{board}/integrations/{int}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    PUT /api/boards/{board}/integrations/{int}

    +

    Edit integration data

    +
    +

    Body parameter

    +
    +
    enabled: string
    +title: string
    +url: string
    +token: string
    +activities: string
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    intpathstringtruethe integration ID
    bodybodyobjectfalsenone
    » enabledbodystringfalseis the integration enabled?
    » titlebodystringfalsenew name of the integration
    » urlbodystringfalsenew URL of the integration
    » tokenbodystringfalsenew token of the integration
    » activitiesbodystringfalsenew list of activities of the integration
    +

    Detailed descriptions

    +

    board: the board ID

    +

    int: the integration ID

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    delete_integration

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X DELETE /api/boards/{board}/integrations/{int} \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    DELETE /api/boards/{board}/integrations/{int} HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/integrations/{int}',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/integrations/{int}',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.delete '/api/boards/{board}/integrations/{int}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.delete('/api/boards/{board}/integrations/{int}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/integrations/{int}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("DELETE");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("DELETE", "/api/boards/{board}/integrations/{int}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('DELETE','/api/boards/{board}/integrations/{int}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    DELETE /api/boards/{board}/integrations/{int}

    +

    Delete integration

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    intpathstringtruethe integration ID
    +

    Detailed descriptions

    +

    board: the board ID

    +

    int: the integration ID

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    delete_integration_activities

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X DELETE /api/boards/{board}/integrations/{int}/activities \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    DELETE /api/boards/{board}/integrations/{int}/activities HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/integrations/{int}/activities',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/integrations/{int}/activities',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.delete '/api/boards/{board}/integrations/{int}/activities',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.delete('/api/boards/{board}/integrations/{int}/activities', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/integrations/{int}/activities");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("DELETE");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("DELETE", "/api/boards/{board}/integrations/{int}/activities", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('DELETE','/api/boards/{board}/integrations/{int}/activities', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    DELETE /api/boards/{board}/integrations/{int}/activities

    +

    Delete subscribed activities

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    intpathstringtruethe integration ID
    +

    Detailed descriptions

    +

    board: the board ID

    +

    int: the integration ID

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "enabled": true,
    +  "title": "string",
    +  "type": "string",
    +  "activities": [
    +    "string"
    +  ],
    +  "url": "string",
    +  "token": "string",
    +  "boardId": "string",
    +  "createdAt": "string",
    +  "modifiedAt": "string",
    +  "userId": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseIntegrations
    + +

    new_integration_activities

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X POST /api/boards/{board}/integrations/{int}/activities \
    +  -H 'Content-Type: multipart/form-data' \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    POST /api/boards/{board}/integrations/{int}/activities HTTP/1.1
    +
    +Content-Type: multipart/form-data
    +Accept: application/json
    +
    +
    +
    const inputBody = '{
    +  "activities": "string"
    +}';
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/integrations/{int}/activities',
    +{
    +  method: 'POST',
    +  body: inputBody,
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +const inputBody = {
    +  "activities": "string"
    +};
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/integrations/{int}/activities',
    +{
    +  method: 'POST',
    +  body: JSON.stringify(inputBody),
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Content-Type' => 'multipart/form-data',
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.post '/api/boards/{board}/integrations/{int}/activities',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Content-Type': 'multipart/form-data',
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.post('/api/boards/{board}/integrations/{int}/activities', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/integrations/{int}/activities");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("POST");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Content-Type": []string{"multipart/form-data"},
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("POST", "/api/boards/{board}/integrations/{int}/activities", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'multipart/form-data',
    +    'Accept' => 'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('POST','/api/boards/{board}/integrations/{int}/activities', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    POST /api/boards/{board}/integrations/{int}/activities

    +

    Add subscribed activities

    +
    +

    Body parameter

    +
    +
    activities: string
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    intpathstringtruethe integration ID
    bodybodyobjecttruenone
    » activitiesbodystringtruethe activities value
    +

    Detailed descriptions

    +

    board: the board ID

    +

    int: the integration ID

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "enabled": true,
    +  "title": "string",
    +  "type": "string",
    +  "activities": [
    +    "string"
    +  ],
    +  "url": "string",
    +  "token": "string",
    +  "boardId": "string",
    +  "createdAt": "string",
    +  "modifiedAt": "string",
    +  "userId": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseIntegrations
    + +

    Lists

    +

    get_all_lists

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/boards/{board}/lists \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/boards/{board}/lists HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/lists',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/lists',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/boards/{board}/lists',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/boards/{board}/lists', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/lists");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/boards/{board}/lists", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/boards/{board}/lists', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/boards/{board}/lists

    +

    Get the list of Lists attached to a board

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    +

    Detailed descriptions

    +

    board: the board ID

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    [
    +  {
    +    "_id": "string",
    +    "title": "string"
    +  }
    +]
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    » titlestringfalsenonenone
    + +

    new_list

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X POST /api/boards/{board}/lists \
    +  -H 'Content-Type: multipart/form-data' \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    POST /api/boards/{board}/lists HTTP/1.1
    +
    +Content-Type: multipart/form-data
    +Accept: application/json
    +
    +
    +
    const inputBody = '{
    +  "title": "string"
    +}';
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/lists',
    +{
    +  method: 'POST',
    +  body: inputBody,
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +const inputBody = {
    +  "title": "string"
    +};
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/lists',
    +{
    +  method: 'POST',
    +  body: JSON.stringify(inputBody),
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Content-Type' => 'multipart/form-data',
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.post '/api/boards/{board}/lists',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Content-Type': 'multipart/form-data',
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.post('/api/boards/{board}/lists', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/lists");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("POST");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Content-Type": []string{"multipart/form-data"},
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("POST", "/api/boards/{board}/lists", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'multipart/form-data',
    +    'Accept' => 'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('POST','/api/boards/{board}/lists', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    POST /api/boards/{board}/lists

    +

    Add a List to a board

    +
    +

    Body parameter

    +
    +
    title: string
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    bodybodyobjecttruenone
    » titlebodystringtruethe title of the List
    +

    Detailed descriptions

    +

    board: the board ID

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    get_list

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/boards/{board}/lists/{list} \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/boards/{board}/lists/{list} HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/lists/{list}',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/lists/{list}',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/boards/{board}/lists/{list}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/boards/{board}/lists/{list}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/lists/{list}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/boards/{board}/lists/{list}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/boards/{board}/lists/{list}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/boards/{board}/lists/{list}

    +

    Get a List attached to a board

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    listpathstringtruethe List ID
    +

    Detailed descriptions

    +

    board: the board ID

    +

    list: the List ID

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "title": "string",
    +  "starred": true,
    +  "archived": true,
    +  "archivedAt": "string",
    +  "boardId": "string",
    +  "swimlaneId": "string",
    +  "createdAt": "string",
    +  "sort": 0,
    +  "updatedAt": "string",
    +  "modifiedAt": "string",
    +  "wipLimit": {
    +    "value": 0,
    +    "enabled": true,
    +    "soft": true
    +  },
    +  "color": "white",
    +  "type": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseLists
    + +

    delete_list

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X DELETE /api/boards/{board}/lists/{list} \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    DELETE /api/boards/{board}/lists/{list} HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/lists/{list}',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/lists/{list}',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.delete '/api/boards/{board}/lists/{list}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.delete('/api/boards/{board}/lists/{list}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/lists/{list}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("DELETE");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("DELETE", "/api/boards/{board}/lists/{list}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('DELETE','/api/boards/{board}/lists/{list}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    DELETE /api/boards/{board}/lists/{list}

    +

    Delete a List

    +

    This deletes a list from a board. +The list is not put in the recycle bin.

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    listpathstringtruethe ID of the list to remove
    +

    Detailed descriptions

    +

    board: the board ID

    +

    list: the ID of the list to remove

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    Users

    +

    add_board_member

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X POST /api/boards/{board}/members/{user}/add \
    +  -H 'Content-Type: multipart/form-data' \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    POST /api/boards/{board}/members/{user}/add HTTP/1.1
    +
    +Content-Type: multipart/form-data
    +Accept: application/json
    +
    +
    +
    const inputBody = '{
    +  "action": "string",
    +  "isAdmin": true,
    +  "isNoComments": true,
    +  "isCommentOnly": true
    +}';
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/members/{user}/add',
    +{
    +  method: 'POST',
    +  body: inputBody,
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +const inputBody = {
    +  "action": "string",
    +  "isAdmin": true,
    +  "isNoComments": true,
    +  "isCommentOnly": true
    +};
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/members/{user}/add',
    +{
    +  method: 'POST',
    +  body: JSON.stringify(inputBody),
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Content-Type' => 'multipart/form-data',
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.post '/api/boards/{board}/members/{user}/add',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Content-Type': 'multipart/form-data',
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.post('/api/boards/{board}/members/{user}/add', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/members/{user}/add");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("POST");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Content-Type": []string{"multipart/form-data"},
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("POST", "/api/boards/{board}/members/{user}/add", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'multipart/form-data',
    +    'Accept' => 'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('POST','/api/boards/{board}/members/{user}/add', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    POST /api/boards/{board}/members/{user}/add

    +

    Add New Board Member with Role

    +

    Only the admin user (the first user) can call the REST API.

    +

    Note: see Boards.set_board_member_permission +to later change the permissions.

    +
    +

    Body parameter

    +
    +
    action: string
    +isAdmin: true
    +isNoComments: true
    +isCommentOnly: true
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    userpathstringtruethe user ID
    bodybodyobjecttruenone
    » actionbodystringtruethe action value
    » isAdminbodybooleantrueis the user an admin of the board
    » isNoCommentsbodybooleantruedisable comments
    » isCommentOnlybodybooleantrueonly enable comments
    +

    Detailed descriptions

    +

    board: the board ID

    +

    user: the user ID

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string",
    +  "title": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    » titlestringfalsenonenone
    + +

    remove_board_member

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X POST /api/boards/{board}/members/{user}/remove \
    +  -H 'Content-Type: multipart/form-data' \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    POST /api/boards/{board}/members/{user}/remove HTTP/1.1
    +
    +Content-Type: multipart/form-data
    +Accept: application/json
    +
    +
    +
    const inputBody = '{
    +  "action": "string"
    +}';
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/members/{user}/remove',
    +{
    +  method: 'POST',
    +  body: inputBody,
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +const inputBody = {
    +  "action": "string"
    +};
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/members/{user}/remove',
    +{
    +  method: 'POST',
    +  body: JSON.stringify(inputBody),
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Content-Type' => 'multipart/form-data',
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.post '/api/boards/{board}/members/{user}/remove',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Content-Type': 'multipart/form-data',
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.post('/api/boards/{board}/members/{user}/remove', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/members/{user}/remove");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("POST");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Content-Type": []string{"multipart/form-data"},
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("POST", "/api/boards/{board}/members/{user}/remove", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'multipart/form-data',
    +    'Accept' => 'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('POST','/api/boards/{board}/members/{user}/remove', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    POST /api/boards/{board}/members/{user}/remove

    +

    Remove Member from Board

    +

    Only the admin user (the first user) can call the REST API.

    +
    +

    Body parameter

    +
    +
    action: string
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe board ID
    userpathstringtruethe user ID
    bodybodyobjecttruenone
    » actionbodystringtruethe action (needs to be remove)
    +

    Detailed descriptions

    +

    board: the board ID

    +

    user: the user ID

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string",
    +  "title": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    » titlestringfalsenonenone
    + +

    create_user_token

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X POST /api/createtoken/{user} \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    POST /api/createtoken/{user} HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/createtoken/{user}',
    +{
    +  method: 'POST',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/createtoken/{user}',
    +{
    +  method: 'POST',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.post '/api/createtoken/{user}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.post('/api/createtoken/{user}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/createtoken/{user}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("POST");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("POST", "/api/createtoken/{user}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('POST','/api/createtoken/{user}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    POST /api/createtoken/{user}

    +

    Create a user token

    +

    Only the admin user (the first user) can call the REST API.

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    userpathstringtruethe ID of the user to create token for.
    +

    Detailed descriptions

    +

    user: the ID of the user to create token for.

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    get_current_user

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/user \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/user HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/user',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/user',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/user',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/user', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/user");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/user", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/user', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/user

    +

    returns the current user

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "username": "string",
    +  "emails": [
    +    {
    +      "address": "string",
    +      "verified": true
    +    }
    +  ],
    +  "createdAt": "string",
    +  "modifiedAt": "string",
    +  "profile": {
    +    "avatarUrl": "string",
    +    "emailBuffer": [
    +      "string"
    +    ],
    +    "fullname": "string",
    +    "showDesktopDragHandles": true,
    +    "hideCheckedItems": true,
    +    "hiddenSystemMessages": true,
    +    "hiddenMinicardLabelText": true,
    +    "initials": "string",
    +    "invitedBoards": [
    +      "string"
    +    ],
    +    "language": "string",
    +    "notifications": [],
    +    "activity": "string",
    +    "read": "string",
    +    "showCardsCountAt": 0,
    +    "startDayOfWeek": 0,
    +    "starredBoards": [
    +      "string"
    +    ],
    +    "icode": "string",
    +    "boardView": "board-view-swimlanes",
    +    "listSortBy": "-modifiedat",
    +    "templatesBoardId": "string",
    +    "cardTemplatesSwimlaneId": "string",
    +    "listTemplatesSwimlaneId": "string",
    +    "boardTemplatesSwimlaneId": "string"
    +  },
    +  "services": {},
    +  "heartbeat": "string",
    +  "isAdmin": true,
    +  "createdThroughApi": true,
    +  "loginDisabled": true,
    +  "authenticationMethod": "string",
    +  "sessionData": {
    +    "totalHits": 0,
    +    "lastHit": 0
    +  },
    +  "importUsernames": [
    +    "string"
    +  ]
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseUsers
    + +

    get_all_users

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/users \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/users HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/users',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/users',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/users',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/users', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/users");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/users", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/users', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/users

    +

    return all the users

    +

    Only the admin user (the first user) can call the REST API.

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    [
    +  {
    +    "_id": "string",
    +    "username": "string"
    +  }
    +]
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    » usernamestringfalsenonenone
    + +

    new_user

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X POST /api/users \
    +  -H 'Content-Type: multipart/form-data' \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    POST /api/users HTTP/1.1
    +
    +Content-Type: multipart/form-data
    +Accept: application/json
    +
    +
    +
    const inputBody = '{
    +  "username": "string",
    +  "email": "string",
    +  "password": "string"
    +}';
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/users',
    +{
    +  method: 'POST',
    +  body: inputBody,
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +const inputBody = {
    +  "username": "string",
    +  "email": "string",
    +  "password": "string"
    +};
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/users',
    +{
    +  method: 'POST',
    +  body: JSON.stringify(inputBody),
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Content-Type' => 'multipart/form-data',
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.post '/api/users',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Content-Type': 'multipart/form-data',
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.post('/api/users', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/users");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("POST");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Content-Type": []string{"multipart/form-data"},
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("POST", "/api/users", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'multipart/form-data',
    +    'Accept' => 'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('POST','/api/users', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    POST /api/users

    +

    Create a new user

    +

    Only the admin user (the first user) can call the REST API.

    +
    +

    Body parameter

    +
    +
    username: string
    +email: string
    +password: string
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    bodybodyobjecttruenone
    » usernamebodystringtruethe new username
    » emailbodystringtruethe email of the new user
    » passwordbodystringtruethe password of the new user
    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    get_user

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/users/{user} \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/users/{user} HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/users/{user}',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/users/{user}',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/users/{user}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/users/{user}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/users/{user}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/users/{user}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/users/{user}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/users/{user}

    +

    get a given user

    +

    Only the admin user (the first user) can call the REST API.

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    userpathstringtruethe user ID or username
    +

    Detailed descriptions

    +

    user: the user ID or username

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "username": "string",
    +  "emails": [
    +    {
    +      "address": "string",
    +      "verified": true
    +    }
    +  ],
    +  "createdAt": "string",
    +  "modifiedAt": "string",
    +  "profile": {
    +    "avatarUrl": "string",
    +    "emailBuffer": [
    +      "string"
    +    ],
    +    "fullname": "string",
    +    "showDesktopDragHandles": true,
    +    "hideCheckedItems": true,
    +    "hiddenSystemMessages": true,
    +    "hiddenMinicardLabelText": true,
    +    "initials": "string",
    +    "invitedBoards": [
    +      "string"
    +    ],
    +    "language": "string",
    +    "notifications": [],
    +    "activity": "string",
    +    "read": "string",
    +    "showCardsCountAt": 0,
    +    "startDayOfWeek": 0,
    +    "starredBoards": [
    +      "string"
    +    ],
    +    "icode": "string",
    +    "boardView": "board-view-swimlanes",
    +    "listSortBy": "-modifiedat",
    +    "templatesBoardId": "string",
    +    "cardTemplatesSwimlaneId": "string",
    +    "listTemplatesSwimlaneId": "string",
    +    "boardTemplatesSwimlaneId": "string"
    +  },
    +  "services": {},
    +  "heartbeat": "string",
    +  "isAdmin": true,
    +  "createdThroughApi": true,
    +  "loginDisabled": true,
    +  "authenticationMethod": "string",
    +  "sessionData": {
    +    "totalHits": 0,
    +    "lastHit": 0
    +  },
    +  "importUsernames": [
    +    "string"
    +  ]
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseUsers
    + +

    edit_user

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X PUT /api/users/{user} \
    +  -H 'Content-Type: multipart/form-data' \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    PUT /api/users/{user} HTTP/1.1
    +
    +Content-Type: multipart/form-data
    +Accept: application/json
    +
    +
    +
    const inputBody = '{
    +  "action": "string"
    +}';
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/users/{user}',
    +{
    +  method: 'PUT',
    +  body: inputBody,
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +const inputBody = {
    +  "action": "string"
    +};
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/users/{user}',
    +{
    +  method: 'PUT',
    +  body: JSON.stringify(inputBody),
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Content-Type' => 'multipart/form-data',
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.put '/api/users/{user}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Content-Type': 'multipart/form-data',
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.put('/api/users/{user}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/users/{user}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("PUT");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Content-Type": []string{"multipart/form-data"},
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("PUT", "/api/users/{user}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'multipart/form-data',
    +    'Accept' => 'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('PUT','/api/users/{user}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    PUT /api/users/{user}

    +

    edit a given user

    +

    Only the admin user (the first user) can call the REST API.

    +

    Possible values for action:

    +
      +
    • takeOwnership: The admin takes the ownership of ALL boards of the user (archived and not archived) where the user is admin on.
    • +
    • disableLogin: Disable a user (the user is not allowed to login and his login tokens are purged)
    • +
    • enableLogin: Enable a user
    • +
    +
    +

    Body parameter

    +
    +
    action: string
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    userpathstringtruethe user ID
    bodybodyobjecttruenone
    » actionbodystringtruethe action
    +

    Detailed descriptions

    +

    user: the user ID

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string",
    +  "title": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    » titlestringfalsenonenone
    + +

    delete_user

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X DELETE /api/users/{user} \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    DELETE /api/users/{user} HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/users/{user}',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/users/{user}',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.delete '/api/users/{user}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.delete('/api/users/{user}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/users/{user}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("DELETE");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("DELETE", "/api/users/{user}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('DELETE','/api/users/{user}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    DELETE /api/users/{user}

    +

    Delete a user

    +

    Only the admin user (the first user) can call the REST API.

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    userpathstringtruethe ID of the user to delete
    +

    Detailed descriptions

    +

    user: the ID of the user to delete

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    Swimlanes

    +

    get_all_swimlanes

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/boards/{board}/swimlanes \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/boards/{board}/swimlanes HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/swimlanes',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/swimlanes',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/boards/{board}/swimlanes',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/boards/{board}/swimlanes', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/swimlanes");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/boards/{board}/swimlanes", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/boards/{board}/swimlanes', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/boards/{board}/swimlanes

    +

    Get the list of swimlanes attached to a board

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe ID of the board
    +

    Detailed descriptions

    +

    board: the ID of the board

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    [
    +  {
    +    "_id": "string",
    +    "title": "string"
    +  }
    +]
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    » titlestringfalsenonenone
    + +

    new_swimlane

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X POST /api/boards/{board}/swimlanes \
    +  -H 'Content-Type: multipart/form-data' \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    POST /api/boards/{board}/swimlanes HTTP/1.1
    +
    +Content-Type: multipart/form-data
    +Accept: application/json
    +
    +
    +
    const inputBody = '{
    +  "title": "string"
    +}';
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/swimlanes',
    +{
    +  method: 'POST',
    +  body: inputBody,
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +const inputBody = {
    +  "title": "string"
    +};
    +const headers = {
    +  'Content-Type':'multipart/form-data',
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/swimlanes',
    +{
    +  method: 'POST',
    +  body: JSON.stringify(inputBody),
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Content-Type' => 'multipart/form-data',
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.post '/api/boards/{board}/swimlanes',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Content-Type': 'multipart/form-data',
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.post('/api/boards/{board}/swimlanes', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/swimlanes");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("POST");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Content-Type": []string{"multipart/form-data"},
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("POST", "/api/boards/{board}/swimlanes", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'multipart/form-data',
    +    'Accept' => 'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('POST','/api/boards/{board}/swimlanes', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    POST /api/boards/{board}/swimlanes

    +

    Add a swimlane to a board

    +
    +

    Body parameter

    +
    +
    title: string
    +
    +
    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe ID of the board
    bodybodyobjecttruenone
    » titlebodystringtruethe new title of the swimlane
    +

    Detailed descriptions

    +

    board: the ID of the board

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    get_swimlane

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X GET /api/boards/{board}/swimlanes/{swimlane} \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    GET /api/boards/{board}/swimlanes/{swimlane} HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/swimlanes/{swimlane}',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/swimlanes/{swimlane}',
    +{
    +  method: 'GET',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.get '/api/boards/{board}/swimlanes/{swimlane}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.get('/api/boards/{board}/swimlanes/{swimlane}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/swimlanes/{swimlane}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("GET");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("GET", "/api/boards/{board}/swimlanes/{swimlane}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('GET','/api/boards/{board}/swimlanes/{swimlane}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    GET /api/boards/{board}/swimlanes/{swimlane}

    +

    Get a swimlane

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe ID of the board
    swimlanepathstringtruethe ID of the swimlane
    +

    Detailed descriptions

    +

    board: the ID of the board

    +

    swimlane: the ID of the swimlane

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "title": "string",
    +  "archived": true,
    +  "archivedAt": "string",
    +  "boardId": "string",
    +  "createdAt": "string",
    +  "sort": 0,
    +  "color": "white",
    +  "updatedAt": "string",
    +  "modifiedAt": "string",
    +  "type": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseSwimlanes
    + +

    delete_swimlane

    +

    +
    +

    Code samples

    +
    +
    # You can also use wget
    +curl -X DELETE /api/boards/{board}/swimlanes/{swimlane} \
    +  -H 'Accept: application/json' \
    +  -H 'Authorization: API_KEY'
    +
    +
    +
    DELETE /api/boards/{board}/swimlanes/{swimlane} HTTP/1.1
    +
    +Accept: application/json
    +
    +
    +
    
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/swimlanes/{swimlane}',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    const fetch = require('node-fetch');
    +
    +const headers = {
    +  'Accept':'application/json',
    +  'Authorization':'API_KEY'
    +};
    +
    +fetch('/api/boards/{board}/swimlanes/{swimlane}',
    +{
    +  method: 'DELETE',
    +
    +  headers: headers
    +})
    +.then(function(res) {
    +    return res.json();
    +}).then(function(body) {
    +    console.log(body);
    +});
    +
    +
    +
    require 'rest-client'
    +require 'json'
    +
    +headers = {
    +  'Accept' => 'application/json',
    +  'Authorization' => 'API_KEY'
    +}
    +
    +result = RestClient.delete '/api/boards/{board}/swimlanes/{swimlane}',
    +  params: {
    +  }, headers: headers
    +
    +p JSON.parse(result)
    +
    +
    +
    import requests
    +headers = {
    +  'Accept': 'application/json',
    +  'Authorization': 'API_KEY'
    +}
    +
    +r = requests.delete('/api/boards/{board}/swimlanes/{swimlane}', headers = headers)
    +
    +print(r.json())
    +
    +
    +
    URL obj = new URL("/api/boards/{board}/swimlanes/{swimlane}");
    +HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    +con.setRequestMethod("DELETE");
    +int responseCode = con.getResponseCode();
    +BufferedReader in = new BufferedReader(
    +    new InputStreamReader(con.getInputStream()));
    +String inputLine;
    +StringBuffer response = new StringBuffer();
    +while ((inputLine = in.readLine()) != null) {
    +    response.append(inputLine);
    +}
    +in.close();
    +System.out.println(response.toString());
    +
    +
    +
    package main
    +
    +import (
    +       "bytes"
    +       "net/http"
    +)
    +
    +func main() {
    +
    +    headers := map[string][]string{
    +        "Accept": []string{"application/json"},
    +        "Authorization": []string{"API_KEY"},
    +    }
    +
    +    data := bytes.NewBuffer([]byte{jsonReq})
    +    req, err := http.NewRequest("DELETE", "/api/boards/{board}/swimlanes/{swimlane}", data)
    +    req.Header = headers
    +
    +    client := &http.Client{}
    +    resp, err := client.Do(req)
    +    // ...
    +}
    +
    +
    +
     'application/json',
    +    'Authorization' => 'API_KEY',
    +);
    +
    +$client = new \GuzzleHttp\Client();
    +
    +// Define array of request body.
    +$request_body = array();
    +
    +try {
    +    $response = $client->request('DELETE','/api/boards/{board}/swimlanes/{swimlane}', array(
    +        'headers' => $headers,
    +        'json' => $request_body,
    +       )
    +    );
    +    print_r($response->getBody()->getContents());
    + }
    + catch (\GuzzleHttp\Exception\BadResponseException $e) {
    +    // handle exception or api errors.
    +    print_r($e->getMessage());
    + }
    +
    + // ...
    +
    +
    +

    DELETE /api/boards/{board}/swimlanes/{swimlane}

    +

    Delete a swimlane

    +

    The swimlane will be deleted, not moved to the recycle bin

    +

    Parameters

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameInTypeRequiredDescription
    boardpathstringtruethe ID of the board
    swimlanepathstringtruethe ID of the swimlane
    +

    Detailed descriptions

    +

    board: the ID of the board

    +

    swimlane: the ID of the swimlane

    +
    +

    Example responses

    +
    +
    +

    200 Response

    +
    +
    {
    +  "_id": "string"
    +}
    +
    +

    Responses

    + + + + + + + + + + + + + + + + + +
    StatusMeaningDescriptionSchema
    200OK200 responseInline
    +

    Response Schema

    +

    Status Code 200

    + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    » _idstringfalsenonenone
    + +

    Schemas

    +

    Boards

    +

    + + +

    +
    {
    +  "title": "string",
    +  "slug": "string",
    +  "archived": true,
    +  "archivedAt": "string",
    +  "createdAt": "string",
    +  "modifiedAt": "string",
    +  "stars": 0,
    +  "labels": [
    +    {
    +      "_id": "string",
    +      "name": "string",
    +      "color": "green"
    +    }
    +  ],
    +  "members": [
    +    {
    +      "userId": "string",
    +      "isAdmin": true,
    +      "isActive": true,
    +      "isNoComments": true,
    +      "isCommentOnly": true,
    +      "isWorker": true
    +    }
    +  ],
    +  "permission": "public",
    +  "color": "belize",
    +  "description": "string",
    +  "subtasksDefaultBoardId": "string",
    +  "subtasksDefaultListId": "string",
    +  "dateSettingsDefaultBoardId": "string",
    +  "dateSettingsDefaultListId": "string",
    +  "allowsSubtasks": true,
    +  "allowsAttachments": true,
    +  "allowsChecklists": true,
    +  "allowsComments": true,
    +  "allowsDescriptionTitle": true,
    +  "allowsDescriptionText": true,
    +  "allowsActivities": true,
    +  "allowsLabels": true,
    +  "allowsAssignee": true,
    +  "allowsMembers": true,
    +  "allowsRequestedBy": true,
    +  "allowsAssignedBy": true,
    +  "allowsReceivedDate": true,
    +  "allowsStartDate": true,
    +  "allowsEndDate": true,
    +  "allowsDueDate": true,
    +  "presentParentTask": "prefix-with-full-path",
    +  "startAt": "string",
    +  "dueAt": "string",
    +  "endAt": "string",
    +  "spentTime": 0,
    +  "isOvertime": true,
    +  "type": "string",
    +  "sort": 0
    +}
    +
    +
    +

    This is a Board.

    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    titlestringtruenoneThe title of the board
    slugstringtruenoneThe title slugified.
    archivedbooleantruenoneIs the board archived?
    archivedAtstring¦nullfalsenoneLatest archiving time of the board
    createdAtstringtruenoneCreation time of the board
    modifiedAtstring¦nullfalsenoneLast modification time of the board
    starsnumbertruenoneHow many stars the board has
    labels[BoardsLabels]truenoneList of labels attached to a board
    members[BoardsMembers]truenoneList of members of a board
    permissionstringtruenonevisibility of the board
    colorstringtruenoneThe color of the board.
    descriptionstring¦nullfalsenoneThe description of the board
    subtasksDefaultBoardIdstring¦nullfalsenoneThe default board ID assigned to subtasks.
    subtasksDefaultListIdstring¦nullfalsenoneThe default List ID assigned to subtasks.
    dateSettingsDefaultBoardIdstring¦nullfalsenonenone
    dateSettingsDefaultListIdstring¦nullfalsenonenone
    allowsSubtasksbooleantruenoneDoes the board allows subtasks?
    allowsAttachmentsbooleantruenoneDoes the board allows attachments?
    allowsChecklistsbooleantruenoneDoes the board allows checklists?
    allowsCommentsbooleantruenoneDoes the board allows comments?
    allowsDescriptionTitlebooleantruenoneDoes the board allows description title?
    allowsDescriptionTextbooleantruenoneDoes the board allows description text?
    allowsActivitiesbooleantruenoneDoes the board allows comments?
    allowsLabelsbooleantruenoneDoes the board allows labels?
    allowsAssigneebooleantruenoneDoes the board allows assignee?
    allowsMembersbooleantruenoneDoes the board allows members?
    allowsRequestedBybooleantruenoneDoes the board allows requested by?
    allowsAssignedBybooleantruenoneDoes the board allows requested by?
    allowsReceivedDatebooleantruenoneDoes the board allows received date?
    allowsStartDatebooleantruenoneDoes the board allows start date?
    allowsEndDatebooleantruenoneDoes the board allows end date?
    allowsDueDatebooleantruenoneDoes the board allows due date?
    presentParentTaskstring¦nullfalsenoneControls 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
    startAtstring¦nullfalsenoneStarting date of the board.
    dueAtstring¦nullfalsenoneDue date of the board.
    endAtstring¦nullfalsenoneEnd date of the board.
    spentTimenumber¦nullfalsenoneTime spent in the board.
    isOvertimeboolean¦nullfalsenoneIs the board overtimed?
    typestringtruenoneThe type of board
    sortnumbertruenoneSort value
    +

    Enumerated Values

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    PropertyValue
    permissionpublic
    permissionprivate
    colorbelize
    colornephritis
    colorpomegranate
    colorpumpkin
    colorwisteria
    colormoderatepink
    colorstrongcyan
    colorlimegreen
    colormidnight
    colordark
    colorrelax
    colorcorteza
    colorclearblue
    colornatural
    colormodern
    colormoderndark
    presentParentTaskprefix-with-full-path
    presentParentTaskprefix-with-parent
    presentParentTasksubtext-with-full-path
    presentParentTasksubtext-with-parent
    presentParentTaskno-parent
    +

    BoardsLabels

    +

    + + +

    +
    {
    +  "_id": "string",
    +  "name": "string",
    +  "color": "green"
    +}
    +
    +
    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    _idstringtruenoneUnique id of a label
    namestringfalsenoneName of a label
    colorstringtruenonecolor 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
    +

    Enumerated Values

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    PropertyValue
    colorgreen
    coloryellow
    colororange
    colorred
    colorpurple
    colorblue
    colorsky
    colorlime
    colorpink
    colorblack
    colorsilver
    colorpeachpuff
    colorcrimson
    colorplum
    colordarkgreen
    colorslateblue
    colormagenta
    colorgold
    colornavy
    colorgray
    colorsaddlebrown
    colorpaleturquoise
    colormistyrose
    colorindigo
    +

    BoardsMembers

    +

    + + +

    +
    {
    +  "userId": "string",
    +  "isAdmin": true,
    +  "isActive": true,
    +  "isNoComments": true,
    +  "isCommentOnly": true,
    +  "isWorker": true
    +}
    +
    +
    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    userIdstringtruenoneThe uniq ID of the member
    isAdminbooleantruenoneIs the member an admin of the board?
    isActivebooleantruenoneIs the member active?
    isNoCommentsbooleanfalsenoneIs the member not allowed to make comments
    isCommentOnlybooleanfalsenoneIs the member only allowed to comment on the board
    isWorkerbooleanfalsenoneIs the member only allowed to move card, assign himself to card and comment
    +

    CardComments

    +

    + + +

    +
    {
    +  "boardId": "string",
    +  "cardId": "string",
    +  "text": "string",
    +  "createdAt": "string",
    +  "modifiedAt": "string",
    +  "userId": "string"
    +}
    +
    +
    +

    A comment on a card

    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    boardIdstringtruenonethe board ID
    cardIdstringtruenonethe card ID
    textstringtruenonethe text of the comment
    createdAtstringtruenonewhen was the comment created
    modifiedAtstringtruenonenone
    userIdstringtruenonethe author ID of the comment
    +

    Cards

    +

    + + +

    +
    {
    +  "title": "string",
    +  "archived": true,
    +  "archivedAt": "string",
    +  "parentId": "string",
    +  "listId": "string",
    +  "swimlaneId": "string",
    +  "boardId": "string",
    +  "coverId": "string",
    +  "color": "white",
    +  "createdAt": "string",
    +  "modifiedAt": "string",
    +  "customFields": [
    +    {}
    +  ],
    +  "dateLastActivity": "string",
    +  "description": "string",
    +  "requestedBy": "string",
    +  "assignedBy": "string",
    +  "labelIds": [
    +    "string"
    +  ],
    +  "members": [
    +    "string"
    +  ],
    +  "assignees": [
    +    "string"
    +  ],
    +  "receivedAt": "string",
    +  "startAt": "string",
    +  "dueAt": "string",
    +  "endAt": "string",
    +  "spentTime": 0,
    +  "isOvertime": true,
    +  "userId": "string",
    +  "sort": 0,
    +  "subtaskSort": 0,
    +  "type": "string",
    +  "linkedId": "string",
    +  "vote": {
    +    "question": "string",
    +    "positive": [
    +      "string"
    +    ],
    +    "negative": [
    +      "string"
    +    ],
    +    "end": "string",
    +    "public": true,
    +    "allowNonBoardMembers": true
    +  }
    +}
    +
    +
    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    titlestring¦nullfalsenonethe title of the card
    archivedbooleantruenoneis the card archived
    archivedAtstring¦nullfalsenonelatest archiving date
    parentIdstring¦nullfalsenoneID of the parent card
    listIdstring¦nullfalsenoneList ID where the card is
    swimlaneIdstringtruenoneSwimlane ID where the card is
    boardIdstring¦nullfalsenoneBoard ID of the card
    coverIdstring¦nullfalsenoneCover ID of the card
    colorstring¦nullfalsenonenone
    createdAtstringtruenonecreation date
    modifiedAtstringtruenonenone
    customFields[CardsCustomfields]¦nullfalsenonelist of custom fields
    dateLastActivitystringtruenoneDate of last activity
    descriptionstring¦nullfalsenonedescription of the card
    requestedBystring¦nullfalsenonewho requested the card (ID of the user)
    assignedBystring¦nullfalsenonewho assigned the card (ID of the user)
    labelIds[string]¦nullfalsenonelist of labels ID the card has
    members[string]¦nullfalsenonelist of members (user IDs)
    assignees[string]¦nullfalsenonewho is assignee of the card (user ID),
    maximum one ID of assignee in array.
    receivedAtstring¦nullfalsenoneDate the card was received
    startAtstring¦nullfalsenoneDate the card was started to be worked on
    dueAtstring¦nullfalsenoneDate the card is due
    endAtstring¦nullfalsenoneDate the card ended
    spentTimenumber¦nullfalsenoneHow much time has been spent on this
    isOvertimeboolean¦nullfalsenoneis the card over time?
    userIdstringtruenoneuser ID of the author of the card
    sortnumbertruenoneSort value
    subtaskSortnumber¦nullfalsenonesubtask sort value
    typestringtruenonetype of the card
    linkedIdstring¦nullfalsenoneID of the linked card
    voteCardsVotefalsenonenone
    +

    Enumerated Values

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    PropertyValue
    colorwhite
    colorgreen
    coloryellow
    colororange
    colorred
    colorpurple
    colorblue
    colorsky
    colorlime
    colorpink
    colorblack
    colorsilver
    colorpeachpuff
    colorcrimson
    colorplum
    colordarkgreen
    colorslateblue
    colormagenta
    colorgold
    colornavy
    colorgray
    colorsaddlebrown
    colorpaleturquoise
    colormistyrose
    colorindigo
    +

    CardsVote

    +

    + + +

    +
    {
    +  "question": "string",
    +  "positive": [
    +    "string"
    +  ],
    +  "negative": [
    +    "string"
    +  ],
    +  "end": "string",
    +  "public": true,
    +  "allowNonBoardMembers": true
    +}
    +
    +
    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    questionstringtruenonenone
    positive[string]falsenonelist of members (user IDs)
    negative[string]falsenonelist of members (user IDs)
    endstringfalsenonenone
    publicbooleantruenonenone
    allowNonBoardMembersbooleantruenonenone
    +

    CardsCustomfields

    +

    + + +

    +
    {}
    +
    +
    +

    Properties

    +

    None

    +

    ChecklistItems

    +

    + + +

    +
    {
    +  "title": "string",
    +  "sort": 0,
    +  "isFinished": true,
    +  "checklistId": "string",
    +  "cardId": "string",
    +  "createdAt": "string",
    +  "modifiedAt": "string"
    +}
    +
    +
    +

    An item in a checklist

    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    titlestringtruenonethe text of the item
    sortnumbertruenonethe sorting field of the item
    isFinishedbooleantruenoneIs the item checked?
    checklistIdstringtruenonethe checklist ID the item is attached to
    cardIdstringtruenonethe card ID the item is attached to
    createdAtstring¦nullfalsenonenone
    modifiedAtstringtruenonenone
    +

    Checklists

    +

    + + +

    +
    {
    +  "cardId": "string",
    +  "title": "string",
    +  "finishedAt": "string",
    +  "createdAt": "string",
    +  "modifiedAt": "string",
    +  "sort": 0
    +}
    +
    +
    +

    A Checklist

    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    cardIdstringtruenoneThe ID of the card the checklist is in
    titlestringtruenonethe title of the checklist
    finishedAtstring¦nullfalsenoneWhen was the checklist finished
    createdAtstringtruenoneCreation date of the checklist
    modifiedAtstringtruenonenone
    sortnumbertruenonesorting value of the checklist
    +

    CustomFields

    +

    + + +

    +
    {
    +  "boardIds": [
    +    "string"
    +  ],
    +  "name": "string",
    +  "type": "text",
    +  "settings": {
    +    "currencyCode": "string",
    +    "dropdownItems": [
    +      {}
    +    ]
    +  },
    +  "showOnCard": true,
    +  "automaticallyOnCard": true,
    +  "alwaysOnCard": true,
    +  "showLabelOnMiniCard": true,
    +  "createdAt": "string",
    +  "modifiedAt": "string"
    +}
    +
    +
    +

    A custom field on a card in the board

    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    boardIds[string]truenonethe ID of the board
    namestringtruenonename of the custom field
    typestringtruenonetype of the custom field
    settingsCustomFieldsSettingstruenonenone
    showOnCardbooleantruenoneshould we show on the cards this custom field
    automaticallyOnCardbooleantruenoneshould the custom fields automatically be added on cards?
    alwaysOnCardbooleantruenoneshould the custom field be automatically added to all cards?
    showLabelOnMiniCardbooleantruenoneshould the label of the custom field be shown on minicards?
    createdAtstring¦nullfalsenonenone
    modifiedAtstringtruenonenone
    +

    Enumerated Values

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    PropertyValue
    typetext
    typenumber
    typedate
    typedropdown
    typecheckbox
    typecurrency
    +

    CustomFieldsSettings

    +

    + + +

    +
    {
    +  "currencyCode": "string",
    +  "dropdownItems": [
    +    {}
    +  ]
    +}
    +
    +
    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    currencyCodestringfalsenonenone
    dropdownItems[CustomFieldsSettingsDropdownitems]falsenonelist of drop down items objects
    +

    CustomFieldsSettingsDropdownitems

    +

    + + +

    +
    {}
    +
    +
    +

    Properties

    +

    None

    +

    Integrations

    +

    + + +

    +
    {
    +  "enabled": true,
    +  "title": "string",
    +  "type": "string",
    +  "activities": [
    +    "string"
    +  ],
    +  "url": "string",
    +  "token": "string",
    +  "boardId": "string",
    +  "createdAt": "string",
    +  "modifiedAt": "string",
    +  "userId": "string"
    +}
    +
    +
    +

    Integration with third-party applications

    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    enabledbooleantruenoneis the integration enabled?
    titlestring¦nullfalsenonename of the integration
    typestringtruenonetype of the integratation (Default to 'outgoing-webhooks')
    activities[string]truenoneactivities the integration gets triggered (list)
    urlstringtruenonenone
    tokenstring¦nullfalsenonetoken of the integration
    boardIdstringtruenoneBoard ID of the integration
    createdAtstringtruenoneCreation date of the integration
    modifiedAtstringtruenonenone
    userIdstringtruenoneuser ID who created the interation
    +

    Lists

    +

    + + +

    +
    {
    +  "title": "string",
    +  "starred": true,
    +  "archived": true,
    +  "archivedAt": "string",
    +  "boardId": "string",
    +  "swimlaneId": "string",
    +  "createdAt": "string",
    +  "sort": 0,
    +  "updatedAt": "string",
    +  "modifiedAt": "string",
    +  "wipLimit": {
    +    "value": 0,
    +    "enabled": true,
    +    "soft": true
    +  },
    +  "color": "white",
    +  "type": "string"
    +}
    +
    +
    +

    A list (column) in the Wekan board.

    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    titlestringtruenonethe title of the list
    starredboolean¦nullfalsenoneif a list is stared
    then we put it on the top
    archivedbooleantruenoneis the list archived
    archivedAtstring¦nullfalsenonelatest archiving date
    boardIdstringtruenonethe board associated to this list
    swimlaneIdstringtruenonethe swimlane associated to this list. Used for templates
    createdAtstringtruenonecreation date
    sortnumber¦nullfalsenoneis the list sorted
    updatedAtstring¦nullfalsenonelast update of the list
    modifiedAtstringtruenonenone
    wipLimitListsWiplimitfalsenonenone
    colorstring¦nullfalsenonethe color of the list
    typestringtruenoneThe type of list
    +

    Enumerated Values

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    PropertyValue
    colorwhite
    colorgreen
    coloryellow
    colororange
    colorred
    colorpurple
    colorblue
    colorsky
    colorlime
    colorpink
    colorblack
    colorpeachpuff
    colorcrimson
    colorplum
    colordarkgreen
    colorslateblue
    colormagenta
    colorgold
    colornavy
    colorgray
    colorsaddlebrown
    colorpaleturquoise
    colormistyrose
    colorindigo
    +

    ListsWiplimit

    +

    + + +

    +
    {
    +  "value": 0,
    +  "enabled": true,
    +  "soft": true
    +}
    +
    +
    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    valuenumbertruenonevalue of the WIP
    enabledbooleantruenoneis the WIP enabled
    softbooleantruenoneis the WIP a soft or hard requirement
    +

    Swimlanes

    +

    + + +

    +
    {
    +  "title": "string",
    +  "archived": true,
    +  "archivedAt": "string",
    +  "boardId": "string",
    +  "createdAt": "string",
    +  "sort": 0,
    +  "color": "white",
    +  "updatedAt": "string",
    +  "modifiedAt": "string",
    +  "type": "string"
    +}
    +
    +
    +

    A swimlane is an line in the kaban board.

    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    titlestringtruenonethe title of the swimlane
    archivedbooleantruenoneis the swimlane archived?
    archivedAtstring¦nullfalsenonelatest archiving date of the swimlane
    boardIdstringtruenonethe ID of the board the swimlane is attached to
    createdAtstringtruenonecreation date of the swimlane
    sortnumber¦nullfalsenonethe sort value of the swimlane
    colorstring¦nullfalsenonethe color of the swimlane
    updatedAtstring¦nullfalsenonewhen was the swimlane last edited
    modifiedAtstringtruenonenone
    typestringtruenoneThe type of swimlane
    +

    Enumerated Values

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    PropertyValue
    colorwhite
    colorgreen
    coloryellow
    colororange
    colorred
    colorpurple
    colorblue
    colorsky
    colorlime
    colorpink
    colorblack
    colorpeachpuff
    colorcrimson
    colorplum
    colordarkgreen
    colorslateblue
    colormagenta
    colorgold
    colornavy
    colorgray
    colorsaddlebrown
    colorpaleturquoise
    colormistyrose
    colorindigo
    +

    Users

    +

    + + +

    +
    {
    +  "username": "string",
    +  "emails": [
    +    {
    +      "address": "string",
    +      "verified": true
    +    }
    +  ],
    +  "createdAt": "string",
    +  "modifiedAt": "string",
    +  "profile": {
    +    "avatarUrl": "string",
    +    "emailBuffer": [
    +      "string"
    +    ],
    +    "fullname": "string",
    +    "showDesktopDragHandles": true,
    +    "hideCheckedItems": true,
    +    "hiddenSystemMessages": true,
    +    "hiddenMinicardLabelText": true,
    +    "initials": "string",
    +    "invitedBoards": [
    +      "string"
    +    ],
    +    "language": "string",
    +    "notifications": [],
    +    "activity": "string",
    +    "read": "string",
    +    "showCardsCountAt": 0,
    +    "startDayOfWeek": 0,
    +    "starredBoards": [
    +      "string"
    +    ],
    +    "icode": "string",
    +    "boardView": "board-view-swimlanes",
    +    "listSortBy": "-modifiedat",
    +    "templatesBoardId": "string",
    +    "cardTemplatesSwimlaneId": "string",
    +    "listTemplatesSwimlaneId": "string",
    +    "boardTemplatesSwimlaneId": "string"
    +  },
    +  "services": {},
    +  "heartbeat": "string",
    +  "isAdmin": true,
    +  "createdThroughApi": true,
    +  "loginDisabled": true,
    +  "authenticationMethod": "string",
    +  "sessionData": {
    +    "totalHits": 0,
    +    "lastHit": 0
    +  },
    +  "importUsernames": [
    +    "string"
    +  ]
    +}
    +
    +
    +

    A User in wekan

    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    usernamestring¦nullfalsenonethe username of the user
    emails[UsersEmails]¦nullfalsenonethe list of emails attached to a user
    createdAtstringtruenonecreation date of the user
    modifiedAtstringtruenonenone
    profileUsersProfilefalsenonenone
    servicesobject¦nullfalsenoneservices field of the user
    heartbeatstring¦nullfalsenonelast time the user has been seen
    isAdminboolean¦nullfalsenoneis the user an admin of the board?
    createdThroughApiboolean¦nullfalsenonewas the user created through the API?
    loginDisabledboolean¦nullfalsenoneloginDisabled field of the user
    authenticationMethodstringtruenoneauthentication method of the user
    sessionDataUsersSessiondatafalsenonenone
    importUsernames[string]¦nullfalsenoneusername for imported
    +

    UsersEmails

    +

    + + +

    +
    {
    +  "address": "string",
    +  "verified": true
    +}
    +
    +
    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    addressstringtruenoneThe email address
    verifiedbooleantruenoneHas the email been verified
    +

    UsersProfile

    +

    + + +

    +
    {
    +  "avatarUrl": "string",
    +  "emailBuffer": [
    +    "string"
    +  ],
    +  "fullname": "string",
    +  "showDesktopDragHandles": true,
    +  "hideCheckedItems": true,
    +  "hiddenSystemMessages": true,
    +  "hiddenMinicardLabelText": true,
    +  "initials": "string",
    +  "invitedBoards": [
    +    "string"
    +  ],
    +  "language": "string",
    +  "notifications": [],
    +  "activity": "string",
    +  "read": "string",
    +  "showCardsCountAt": 0,
    +  "startDayOfWeek": 0,
    +  "starredBoards": [
    +    "string"
    +  ],
    +  "icode": "string",
    +  "boardView": "board-view-swimlanes",
    +  "listSortBy": "-modifiedat",
    +  "templatesBoardId": "string",
    +  "cardTemplatesSwimlaneId": "string",
    +  "listTemplatesSwimlaneId": "string",
    +  "boardTemplatesSwimlaneId": "string"
    +}
    +
    +
    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    avatarUrlstringfalsenoneURL of the avatar of the user
    emailBuffer[string]falsenonelist of email buffers of the user
    fullnamestringfalsenonefull name of the user
    showDesktopDragHandlesbooleanfalsenonedoes the user want to hide system messages?
    hideCheckedItemsbooleanfalsenonedoes the user want to hide checked checklist items?
    hiddenSystemMessagesbooleanfalsenonedoes the user want to hide system messages?
    hiddenMinicardLabelTextbooleanfalsenonedoes the user want to hide minicard label texts?
    initialsstringfalsenoneinitials of the user
    invitedBoards[string]falsenoneboard IDs the user has been invited to
    languagestringfalsenonelanguage of the user
    notifications[UsersProfileNotifications]falsenoneenabled notifications for the user
    activitystringtruenoneThe id of the activity this notification references
    readstringfalsenonethe date on which this notification was read
    showCardsCountAtnumberfalsenoneshowCardCountAt field of the user
    startDayOfWeeknumberfalsenonestartDayOfWeek field of the user
    starredBoards[string]falsenonelist of starred board IDs
    icodestringfalsenoneicode
    boardViewstringfalsenoneboardView field of the user
    listSortBystringfalsenonedefault sort list for user
    templatesBoardIdstringtruenoneReference to the templates board
    cardTemplatesSwimlaneIdstringtruenoneReference to the card templates swimlane Id
    listTemplatesSwimlaneIdstringtruenoneReference to the list templates swimlane Id
    boardTemplatesSwimlaneIdstringtruenoneReference to the board templates swimlane Id
    +

    Enumerated Values

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    PropertyValue
    boardViewboard-view-swimlanes
    boardViewboard-view-lists
    boardViewboard-view-cal
    listSortBy-modifiedat
    listSortBymodifiedat
    listSortBy-title
    listSortBytitle
    listSortBy-sort
    listSortBysort
    +

    UsersSessiondata

    +

    + + +

    +
    {
    +  "totalHits": 0,
    +  "lastHit": 0
    +}
    +
    +
    +

    Properties

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeRequiredRestrictionsDescription
    totalHitsnumberfalsenoneTotal hits from last search
    lastHitnumberfalsenonelast hit that was returned
    + + + + + + + + + + + + + + + + + + + +
    diff --git a/public/api/wekan.yml b/public/api/wekan.yml index daaf75ef0..9298b38bb 100644 --- a/public/api/wekan.yml +++ b/public/api/wekan.yml @@ -1,7 +1,7 @@ swagger: '2.0' info: title: Wekan REST API - version: v5.05 + version: v5.09 description: | The REST API allows you to control and extend Wekan with ease. @@ -134,4 +134,3650 @@ paths: description: | Error in registration + /api/boards: + get: + operationId: get_public_boards + summary: Get all public boards + tags: + - Boards + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: array + items: + type: object + properties: + _id: + type: string + title: + type: string + post: + operationId: new_board + summary: Create a board + description: | + This allows to create a board. + + The color has to be chosen between `belize`, `nephritis`, `pomegranate`, + `pumpkin`, `wisteria`, `moderatepink`, `strongcyan`, + `limegreen`, `midnight`, `dark`, `relax`, `corteza`: + + Wekan logo + tags: + - Boards + consumes: + - multipart/form-data + - application/json + parameters: + - name: title + in: formData + description: | + the new title of the board + type: string + required: true + - name: owner + in: formData + description: | + "ABCDE12345" <= User ID in Wekan. + (Not username or email) + type: string + required: true + - name: isAdmin + in: formData + description: | + is the owner an admin of the board (default true) + type: boolean + required: false + - name: isActive + in: formData + description: | + is the board active (default true) + type: boolean + required: false + - name: isNoComments + in: formData + description: | + disable comments (default false) + type: boolean + required: false + - name: isCommentOnly + in: formData + description: | + only enable comments (default false) + type: boolean + required: false + - name: isWorker + in: formData + description: | + only move cards, assign himself to card and comment (default false) + type: boolean + required: false + - name: permission + in: formData + description: | + "private" board <== Set to "public" if you + want public Wekan board + type: string + required: false + - name: color + in: formData + description: | + the color of the board + type: string + required: false + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + defaultSwimlaneId: + type: string + /api/boards/{board}: + get: + operationId: get_board + summary: Get the board with that particular ID + tags: + - Boards + parameters: + - name: board + in: path + description: | + the ID of the board to retrieve the data + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + $ref: "#/definitions/Boards" + delete: + operationId: delete_board + summary: Delete a board + tags: + - Boards + parameters: + - name: board + in: path + description: | + the ID of the board + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + /api/boards/{board}/attachments: + get: + operationId: get_board_attachments + summary: Get the list of attachments of a board + tags: + - Boards + parameters: + - name: board + in: path + description: | + the board ID + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: array + items: + type: object + properties: + attachmentId: + type: string + attachmentName: + type: string + attachmentType: + type: string + cardId: + type: string + listId: + type: string + swimlaneId: + type: string + /api/boards/{board}/cards/{card}/checklists: + get: + operationId: get_all_checklists + summary: Get the list of checklists attached to a card + tags: + - Checklists + parameters: + - name: board + in: path + description: | + the board ID + type: string + required: true + - name: card + in: path + description: | + the card ID + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: array + items: + type: object + properties: + _id: + type: string + title: + type: string + post: + operationId: new_checklist + summary: create a new checklist + tags: + - Checklists + consumes: + - multipart/form-data + - application/json + parameters: + - name: title + in: formData + description: | + the title of the new checklist + type: string + required: true + - name: items + in: formData + description: | + the list of items on the new checklist + type: string + required: false + - name: board + in: path + description: | + the board ID + type: string + required: true + - name: card + in: path + description: | + the card ID + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + /api/boards/{board}/cards/{card}/checklists/{checklist}: + get: + operationId: get_checklist + summary: Get a checklist + tags: + - Checklists + parameters: + - name: board + in: path + description: | + the board ID + type: string + required: true + - name: card + in: path + description: | + the card ID + type: string + required: true + - name: checklist + in: path + description: | + the ID of the checklist + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + cardId: + type: string + title: + type: string + finishedAt: + type: string + createdAt: + type: string + sort: + type: number + items: + type: array + items: + type: object + properties: + _id: + type: string + title: + type: string + isFinished: + type: boolean + delete: + operationId: delete_checklist + summary: Delete a checklist + description: | + The checklist will be removed, not put in the recycle bin. + tags: + - Checklists + parameters: + - name: board + in: path + description: | + the board ID + type: string + required: true + - name: card + in: path + description: | + the card ID + type: string + required: true + - name: checklist + in: path + description: | + the ID of the checklist to remove + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + /api/boards/{board}/cards/{card}/checklists/{checklist}/items/{item}: + get: + operationId: get_checklist_item + summary: Get a checklist item + tags: + - ChecklistItems + - Checklists + parameters: + - name: board + in: path + description: | + the board ID + type: string + required: true + - name: card + in: path + description: | + the card ID + type: string + required: true + - name: checklist + in: path + description: | + the checklist ID + type: string + required: true + - name: item + in: path + description: | + the ID of the item + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + $ref: "#/definitions/ChecklistItems" + put: + operationId: edit_checklist_item + summary: Edit a checklist item + tags: + - ChecklistItems + - Checklists + consumes: + - multipart/form-data + - application/json + parameters: + - name: isFinished + in: formData + description: | + is the item checked? + type: string + required: false + - name: title + in: formData + description: | + the new text of the item + type: string + required: false + - name: board + in: path + description: | + the board ID + type: string + required: true + - name: card + in: path + description: | + the card ID + type: string + required: true + - name: checklist + in: path + description: | + the checklist ID + type: string + required: true + - name: item + in: path + description: | + the ID of the item + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + delete: + operationId: delete_checklist_item + summary: Delete a checklist item + description: | + Note: this operation can't be reverted. + tags: + - ChecklistItems + - Checklists + parameters: + - name: board + in: path + description: | + the board ID + type: string + required: true + - name: card + in: path + description: | + the card ID + type: string + required: true + - name: checklist + in: path + description: | + the checklist ID + type: string + required: true + - name: item + in: path + description: | + the ID of the item to be removed + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + /api/boards/{board}/cards/{card}/comments: + get: + operationId: get_all_comments + summary: Get all comments attached to a card + tags: + - CardComments + parameters: + - name: board + in: path + description: | + the board ID of the card + type: string + required: true + - name: card + in: path + description: | + the ID of the card + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: array + items: + type: object + properties: + _id: + type: string + comment: + type: string + authorId: + type: string + post: + operationId: new_comment + summary: Add a comment on a card + tags: + - CardComments + consumes: + - multipart/form-data + - application/json + parameters: + - name: authorId + in: formData + description: | + the user who 'posted' the comment + type: string + required: true + - name: comment + in: formData + description: the comment value + type: string + required: true + - name: board + in: path + description: | + the board ID of the card + type: string + required: true + - name: card + in: path + description: | + the ID of the card + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + /api/boards/{board}/cards/{card}/comments/{comment}: + get: + operationId: get_comment + summary: Get a comment on a card + tags: + - CardComments + parameters: + - name: board + in: path + description: | + the board ID of the card + type: string + required: true + - name: card + in: path + description: | + the ID of the card + type: string + required: true + - name: comment + in: path + description: | + the ID of the comment to retrieve + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + $ref: "#/definitions/CardComments" + delete: + operationId: delete_comment + summary: Delete a comment on a card + tags: + - CardComments + parameters: + - name: board + in: path + description: | + the board ID of the card + type: string + required: true + - name: card + in: path + description: | + the ID of the card + type: string + required: true + - name: comment + in: path + description: | + the ID of the comment to delete + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + /api/boards/{board}/cardsByCustomField/{customField}/{customFieldValue}: + get: + operationId: get_cards_by_custom_field + summary: Get all Cards that matchs a value of a specific custom field + tags: + - Cards + parameters: + - name: board + in: path + description: | + the board ID + type: string + required: true + - name: customField + in: path + description: | + the list ID + type: string + required: true + - name: customFieldValue + in: path + description: | + the value to look for + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: array + items: + type: object + properties: + _id: + type: string + title: + type: string + description: + type: string + listId: + type: string + swinlaneId: + type: string + /api/boards/{board}/custom-fields: + get: + operationId: get_all_custom_fields + summary: Get the list of Custom Fields attached to a board + 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 + schema: + type: array + items: + type: object + properties: + _id: + type: string + name: + type: string + type: + type: string + post: + operationId: new_custom_field + summary: Create a Custom Field + tags: + - CustomFields + consumes: + - multipart/form-data + - application/json + parameters: + - name: name + in: formData + description: | + the name of the custom field + type: string + required: true + - name: type + in: formData + description: | + the type of the custom field + type: string + required: true + - name: settings + in: formData + description: | + the settings object of the custom field + type: string + required: true + - name: showOnCard + in: formData + description: | + should we show the custom field on cards? + type: boolean + required: true + - name: automaticallyOnCard + in: formData + description: | + should the custom fields automatically be added on cards? + type: boolean + required: true + - name: showLabelOnMiniCard + in: formData + description: | + should the label of the custom field be shown on minicards? + type: boolean + required: true + - name: authorId + in: formData + description: the authorId 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 + schema: + type: object + properties: + _id: + type: string + /api/boards/{board}/custom-fields/{customField}: + get: + operationId: get_custom_field + summary: Get a Custom Fields attached to a board + tags: + - CustomFields + parameters: + - name: board + in: path + description: the board value + type: string + required: true + - name: customField + in: path + description: | + the ID of the custom field + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: array + items: + type: object + properties: + _id: + type: string + boardIds: + type: string + put: + operationId: edit_custom_field + summary: Update a Custom Field + tags: + - CustomFields + consumes: + - multipart/form-data + - application/json + parameters: + - name: name + in: formData + description: | + the name of the custom field + type: string + required: true + - name: type + in: formData + description: | + the type of the custom field + type: string + required: true + - name: settings + in: formData + description: | + the settings object of the custom field + type: string + required: true + - name: showOnCard + in: formData + description: | + should we show the custom field on cards + type: boolean + required: true + - name: automaticallyOnCard + in: formData + description: | + should the custom fields automatically be added on cards + type: boolean + required: true + - name: alwaysOnCard + in: formData + description: the alwaysOnCard value + type: string + required: true + - name: showLabelOnMiniCard + in: formData + description: | + should the label of the custom field be shown on minicards + type: boolean + 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 + schema: + type: object + properties: + _id: + type: string + delete: + operationId: delete_custom_field + summary: Delete a Custom Fields attached to a board + description: | + The Custom Field can't be retrieved after this operation + tags: + - CustomFields + parameters: + - name: board + in: path + description: the board value + type: string + required: true + - name: customField + in: path + description: | + the ID of the custom field + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + /api/boards/{board}/custom-fields/{customField}/dropdown-items: + post: + operationId: add_custom_field_dropdown_items + summary: Update a Custom Field's dropdown items + tags: + - CustomFields + consumes: + - multipart/form-data + - application/json + parameters: + - name: items + in: formData + description: | + names of the custom field + type: string + required: false + - 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 + schema: + type: object + properties: + _id: + type: string + /api/boards/{board}/custom-fields/{customField}/dropdown-items/{dropdownItem}: + put: + operationId: edit_custom_field_dropdown_item + summary: Update a Custom Field's dropdown item + tags: + - CustomFields + consumes: + - multipart/form-data + - application/json + parameters: + - name: name + in: formData + description: | + names of the custom field + 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 + schema: + type: object + properties: + _id: + type: string + delete: + operationId: delete_custom_field_dropdown_item + summary: Update a Custom Field's dropdown items + 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 + schema: + type: object + properties: + _id: + type: string + /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}/integrations: + get: + operationId: get_all_integrations + summary: Get all integrations in board + tags: + - Integrations + parameters: + - name: board + in: path + description: | + the board ID + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: array + items: + $ref: "#/definitions/Integrations" + post: + operationId: new_integration + summary: Create a new integration + tags: + - Integrations + consumes: + - multipart/form-data + - application/json + parameters: + - name: url + in: formData + description: | + the URL of the integration + type: string + required: true + - name: board + in: path + description: | + the board ID + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + /api/boards/{board}/integrations/{int}: + get: + operationId: get_integration + summary: Get a single integration in board + tags: + - Integrations + parameters: + - name: board + in: path + description: | + the board ID + type: string + required: true + - name: int + in: path + description: | + the integration ID + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + $ref: "#/definitions/Integrations" + put: + operationId: edit_integration + summary: Edit integration data + tags: + - Integrations + consumes: + - multipart/form-data + - application/json + parameters: + - name: enabled + in: formData + description: | + is the integration enabled? + type: string + required: false + - name: title + in: formData + description: | + new name of the integration + type: string + required: false + - name: url + in: formData + description: | + new URL of the integration + type: string + required: false + - name: token + in: formData + description: | + new token of the integration + type: string + required: false + - name: activities + in: formData + description: | + new list of activities of the integration + type: string + required: false + - name: board + in: path + description: | + the board ID + type: string + required: true + - name: int + in: path + description: | + the integration ID + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + delete: + operationId: delete_integration + summary: Delete integration + tags: + - Integrations + parameters: + - name: board + in: path + description: | + the board ID + type: string + required: true + - name: int + in: path + description: | + the integration ID + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + /api/boards/{board}/integrations/{int}/activities: + delete: + operationId: delete_integration_activities + summary: Delete subscribed activities + tags: + - Integrations + parameters: + - name: board + in: path + description: | + the board ID + type: string + required: true + - name: int + in: path + description: | + the integration ID + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + $ref: "#/definitions/Integrations" + post: + operationId: new_integration_activities + summary: Add subscribed activities + tags: + - Integrations + 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 ID + type: string + required: true + - name: int + in: path + description: | + the integration ID + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + $ref: "#/definitions/Integrations" + /api/boards/{board}/labels: + put: + operationId: add_board_label + summary: Add a label to a board + description: | + If the board doesn't have the name/color label, this function + adds the label to the board. + 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 + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: string + /api/boards/{board}/lists: + get: + operationId: get_all_lists + summary: Get the list of Lists attached to a board + tags: + - Lists + parameters: + - name: board + in: path + description: | + the board ID + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: array + items: + type: object + properties: + _id: + type: string + title: + type: string + post: + operationId: new_list + summary: Add a List to a board + tags: + - Lists + consumes: + - multipart/form-data + - application/json + parameters: + - name: title + in: formData + description: | + the title of the List + type: string + required: true + - name: board + in: path + description: | + the board ID + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + /api/boards/{board}/lists/{list}: + get: + operationId: get_list + summary: Get a List attached to a board + tags: + - Lists + parameters: + - name: board + in: path + description: | + the board ID + type: string + required: true + - name: list + in: path + description: | + the List ID + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + $ref: "#/definitions/Lists" + delete: + operationId: delete_list + summary: Delete a List + description: | + This **deletes** a list from a board. + The list is not put in the recycle bin. + tags: + - Lists + parameters: + - name: board + in: path + description: | + the board ID + type: string + required: true + - name: list + in: path + description: | + the ID of the list to remove + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + /api/boards/{board}/lists/{list}/cards: + get: + operationId: get_all_cards + summary: Get all Cards attached to a List + tags: + - Cards + parameters: + - name: board + in: path + description: | + the board ID + type: string + required: true + - name: list + in: path + description: | + the list ID + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: array + items: + type: object + properties: + _id: + type: string + title: + type: string + description: + type: string + post: + operationId: new_card + summary: Create a new Card + tags: + - Cards + consumes: + - multipart/form-data + - application/json + parameters: + - name: authorId + in: formData + description: the authorId value + type: string + required: true + - name: members + in: formData + description: | + the member IDs list of the new card + type: string + required: false + - name: assignees + in: formData + description: | + the array of maximum one ID of assignee of the new card + type: string + required: false + - name: title + in: formData + description: | + the title of the new card + type: string + required: true + - name: description + in: formData + description: | + the description of the new card + type: string + required: true + - name: swimlaneId + in: formData + description: | + the swimlane ID of the new card + type: string + required: true + - name: board + in: path + description: | + the board ID of the new card + type: string + required: true + - name: list + in: path + description: | + the list ID of the new card + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + /api/boards/{board}/lists/{list}/cards/{card}: + get: + operationId: get_card + summary: Get a Card + tags: + - Cards + parameters: + - name: board + in: path + description: | + the board ID + type: string + required: true + - name: list + in: path + description: | + the list ID of the card + type: string + required: true + - name: card + in: path + description: | + the card ID + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + $ref: "#/definitions/Cards" + put: + operationId: edit_card + summary: Edit Fields in a Card + description: | + Edit a card + + The color has to be chosen between `white`, `green`, `yellow`, `orange`, + `red`, `purple`, `blue`, `sky`, `lime`, `pink`, `black`, `silver`, + `peachpuff`, `crimson`, `plum`, `darkgreen`, `slateblue`, `magenta`, + `gold`, `navy`, `gray`, `saddlebrown`, `paleturquoise`, `mistyrose`, + `indigo`: + + Wekan card colors + + Note: setting the color to white has the same effect than removing it. + tags: + - Cards + consumes: + - multipart/form-data + - application/json + parameters: + - name: title + in: formData + description: | + the new title of the card + type: string + required: false + - name: sort + in: formData + description: | + the new sort value of the card + type: string + required: false + - name: parentId + in: formData + description: | + change the parent of the card + type: string + required: false + - name: description + in: formData + description: | + the new description of the card + type: string + required: false + - name: color + in: formData + description: | + the new color of the card + type: string + required: false + - name: vote + in: formData + description: | + the vote object + type: object + required: false + - name: labelIds + in: formData + description: | + the new list of label IDs attached to the card + type: string + required: false + - name: requestedBy + in: formData + description: | + the new requestedBy field of the card + type: string + required: false + - name: assignedBy + in: formData + description: | + the new assignedBy field of the card + type: string + required: false + - name: receivedAt + in: formData + description: | + the new receivedAt field of the card + type: string + required: false + - name: startAt + in: formData + description: | + the new startAt field of the card + type: string + required: false + - name: dueAt + in: formData + description: | + the new dueAt field of the card + type: string + required: false + - name: endAt + in: formData + description: | + the new endAt field of the card + type: string + required: false + - name: spentTime + in: formData + description: | + the new spentTime field of the card + type: string + required: false + - name: isOverTime + in: formData + description: | + the new isOverTime field of the card + type: boolean + required: false + - name: customFields + in: formData + description: | + the new customFields value of the card + type: string + required: false + - name: members + in: formData + description: | + the new list of member IDs attached to the card + type: string + required: false + - name: assignees + in: formData + description: | + the array of maximum one ID of assignee attached to the card + type: string + required: false + - name: swimlaneId + in: formData + description: | + the new swimlane ID of the card + type: string + required: false + - name: listId + in: formData + description: | + the new list ID of the card (move operation) + type: string + required: false + - name: authorId + in: formData + description: | + change the owner of the card + type: string + required: false + - name: board + in: path + description: | + the board ID of the card + type: string + required: true + - name: list + in: path + description: | + the list ID of the card + type: string + required: true + - name: card + in: path + description: | + the ID of the card + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + delete: + operationId: delete_card + summary: Delete a card from a board + description: | + This operation **deletes** a card, and therefore the card + is not put in the recycle bin. + tags: + - Cards + parameters: + - name: board + in: path + description: | + the board ID of the card + type: string + required: true + - name: list + in: path + description: | + the list ID of the card + type: string + required: true + - name: card + in: path + description: | + the ID of the card + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + /api/boards/{board}/members/{member}: + post: + operationId: set_board_member_permission + summary: Change the permission of a member of a board + tags: + - Boards + - Users + consumes: + - multipart/form-data + - application/json + parameters: + - name: isAdmin + in: formData + description: | + admin capability + type: boolean + required: true + - name: isNoComments + in: formData + description: | + NoComments capability + type: boolean + required: true + - name: isCommentOnly + in: formData + description: | + CommentsOnly capability + type: boolean + required: true + - name: isWorker + in: formData + description: | + Worker capability + type: boolean + required: true + - name: board + in: path + description: | + the ID of the board that we are changing + type: string + required: true + - name: member + in: path + description: | + the ID of the user to change permissions + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + /api/boards/{board}/members/{user}/add: + post: + operationId: add_board_member + summary: Add New Board Member with Role + description: | + Only the admin user (the first user) can call the REST API. + + **Note**: see [Boards.set_board_member_permission](#set_board_member_permission) + to later change the permissions. + tags: + - Users + - Boards + consumes: + - multipart/form-data + - application/json + parameters: + - name: action + in: formData + description: the action value + type: string + required: true + - name: isAdmin + in: formData + description: | + is the user an admin of the board + type: boolean + required: true + - name: isNoComments + in: formData + description: | + disable comments + type: boolean + required: true + - name: isCommentOnly + in: formData + description: | + only enable comments + type: boolean + required: true + - name: board + in: path + description: | + the board ID + type: string + required: true + - name: user + in: path + description: | + the user ID + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + title: + type: string + /api/boards/{board}/members/{user}/remove: + post: + operationId: remove_board_member + summary: Remove Member from Board + description: | + Only the admin user (the first user) can call the REST API. + tags: + - Users + - Boards + consumes: + - multipart/form-data + - application/json + parameters: + - name: action + in: formData + description: | + the action (needs to be `remove`) + type: string + required: true + - name: board + in: path + description: | + the board ID + type: string + required: true + - name: user + in: path + description: | + the user ID + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + title: + type: string + /api/boards/{board}/swimlanes: + get: + operationId: get_all_swimlanes + summary: Get the list of swimlanes attached to a board + tags: + - Swimlanes + parameters: + - name: board + in: path + description: | + the ID of the board + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: array + items: + type: object + properties: + _id: + type: string + title: + type: string + post: + operationId: new_swimlane + summary: Add a swimlane to a board + tags: + - Swimlanes + consumes: + - multipart/form-data + - application/json + parameters: + - name: title + in: formData + description: | + the new title of the swimlane + type: string + required: true + - name: board + in: path + description: | + the ID of the board + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + /api/boards/{board}/swimlanes/{swimlane}: + get: + operationId: get_swimlane + summary: Get a swimlane + tags: + - Swimlanes + parameters: + - name: board + in: path + description: | + the ID of the board + type: string + required: true + - name: swimlane + in: path + description: | + the ID of the swimlane + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + $ref: "#/definitions/Swimlanes" + delete: + operationId: delete_swimlane + summary: Delete a swimlane + description: | + The swimlane will be deleted, not moved to the recycle bin + tags: + - Swimlanes + parameters: + - name: board + in: path + description: | + the ID of the board + type: string + required: true + - name: swimlane + in: path + description: | + the ID of the swimlane + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + /api/boards/{board}/swimlanes/{swimlane}/cards: + get: + operationId: get_swimlane_cards + summary: get all cards attached to a swimlane + tags: + - Cards + parameters: + - name: board + in: path + description: | + the board ID + type: string + required: true + - name: swimlane + in: path + description: | + the swimlane ID + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: array + items: + type: object + properties: + _id: + type: string + title: + type: string + description: + type: string + listId: + type: string + /api/boards_count: + get: + operationId: get_boards_count + summary: Get public and private boards count + tags: + - Boards + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + private: + type: integer + public: + type: integer + /api/createtoken/{user}: + post: + operationId: create_user_token + summary: Create a user token + description: | + Only the admin user (the first user) can call the REST API. + tags: + - Users + consumes: + - multipart/form-data + - application/json + parameters: + - name: user + in: path + description: | + the ID of the user to create token for. + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + /api/user: + get: + operationId: get_current_user + summary: returns the current user + tags: + - Users + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + $ref: "#/definitions/Users" + /api/users: + get: + operationId: get_all_users + summary: return all the users + description: | + Only the admin user (the first user) can call the REST API. + tags: + - Users + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: array + items: + type: object + properties: + _id: + type: string + username: + type: string + post: + operationId: new_user + summary: Create a new user + description: | + Only the admin user (the first user) can call the REST API. + tags: + - Users + consumes: + - multipart/form-data + - application/json + parameters: + - name: username + in: formData + description: | + the new username + type: string + required: true + - name: email + in: formData + description: | + the email of the new user + type: string + required: true + - name: password + in: formData + description: | + the password of the new user + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + /api/users/{user}: + get: + operationId: get_user + summary: get a given user + description: | + Only the admin user (the first user) can call the REST API. + tags: + - Users + parameters: + - name: user + in: path + description: | + the user ID or username + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + $ref: "#/definitions/Users" + put: + operationId: edit_user + summary: edit a given user + description: | + Only the admin user (the first user) can call the REST API. + + Possible values for *action*: + - `takeOwnership`: The admin takes the ownership of ALL boards of the user (archived and not archived) where the user is admin on. + - `disableLogin`: Disable a user (the user is not allowed to login and his login tokens are purged) + - `enableLogin`: Enable a user + tags: + - Users + consumes: + - multipart/form-data + - application/json + parameters: + - name: action + in: formData + description: | + the action + type: string + required: true + - name: user + in: path + description: | + the user ID + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + title: + type: string + delete: + operationId: delete_user + summary: Delete a user + description: | + Only the admin user (the first user) can call the REST API. + tags: + - Users + parameters: + - name: user + in: path + description: | + the ID of the user to delete + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: object + properties: + _id: + type: string + /api/users/{user}/boards: + get: + operationId: get_boards_from_user + summary: Get all boards attached to a user + tags: + - Boards + parameters: + - name: user + in: path + description: | + the ID of the user to retrieve the data + type: string + required: true + produces: + - application/json + security: + - UserSecurity: [] + responses: + '200': + description: |- + 200 response + schema: + type: array + items: + type: object + properties: + _id: + type: string + title: + type: string 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" + 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 + color: + description: | + The color of the board. + type: string + enum: + - belize + - nephritis + - pomegranate + - pumpkin + - wisteria + - moderatepink + - strongcyan + - limegreen + - midnight + - dark + - relax + - corteza + - clearblue + - natural + - modern + - moderndark + 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 + 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 + allowsAttachments: + description: | + Does the board allows attachments? + type: boolean + allowsChecklists: + description: | + Does the board allows checklists? + type: boolean + allowsComments: + description: | + Does the board allows comments? + type: boolean + allowsDescriptionTitle: + description: | + Does the board allows description title? + type: boolean + allowsDescriptionText: + description: | + Does the board allows description text? + type: boolean + allowsActivities: + description: | + Does the board allows comments? + type: boolean + allowsLabels: + description: | + Does the board allows labels? + type: boolean + allowsAssignee: + description: | + Does the board allows assignee? + type: boolean + allowsMembers: + description: | + Does the board allows members? + type: boolean + allowsRequestedBy: + description: | + Does the board allows requested by? + type: boolean + allowsAssignedBy: + description: | + Does the board allows requested by? + type: boolean + allowsReceivedDate: + description: | + Does the board allows received date? + type: boolean + allowsStartDate: + description: | + Does the board allows start date? + type: boolean + allowsEndDate: + description: | + Does the board allows end date? + type: boolean + allowsDueDate: + description: | + Does the board allows due date? + 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 + 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 + type: string + sort: + description: | + Sort value + type: number + required: + - title + - slug + - archived + - createdAt + - stars + - labels + - members + - permission + - color + - allowsSubtasks + - allowsAttachments + - allowsChecklists + - allowsComments + - allowsDescriptionTitle + - allowsDescriptionText + - allowsActivities + - allowsLabels + - allowsAssignee + - allowsMembers + - allowsRequestedBy + - allowsAssignedBy + - allowsReceivedDate + - allowsStartDate + - allowsEndDate + - allowsDueDate + - type + - sort + 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: + - green + - yellow + - orange + - red + - purple + - blue + - sky + - lime + - pink + - black + - silver + - peachpuff + - crimson + - plum + - darkgreen + - slateblue + - magenta + - gold + - navy + - gray + - saddlebrown + - paleturquoise + - mistyrose + - indigo + 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 + required: + - userId + - isAdmin + - isActive + 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: + - white + - green + - yellow + - orange + - red + - purple + - blue + - sky + - lime + - pink + - black + - silver + - peachpuff + - crimson + - plum + - darkgreen + - slateblue + - magenta + - gold + - navy + - gray + - saddlebrown + - paleturquoise + - mistyrose + - indigo + 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 + 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 + 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 + required: + - archived + - swimlaneId + - createdAt + - modifiedAt + - dateLastActivity + - userId + - sort + - type + 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 + CardsCustomfields: + 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 + 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 + 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 + required: + - cardId + - title + - createdAt + - modifiedAt + - sort + 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 + 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 + createdAt: + type: string + x-nullable: true + modifiedAt: + type: string + required: + - boardIds + - name + - type + - settings + - showOnCard + - automaticallyOnCard + - alwaysOnCard + - showLabelOnMiniCard + - modifiedAt + CustomFieldsSettings: + type: object + properties: + currencyCode: + type: string + dropdownItems: + description: | + list of drop down items objects + type: array + items: + $ref: "#/definitions/CustomFieldsSettingsDropdownitems" + CustomFieldsSettingsDropdownitems: + type: object + Integrations: + type: object + description: Integration with third-party applications + properties: + enabled: + description: | + is the integration enabled? + type: boolean + title: + description: | + name of the integration + type: string + x-nullable: true + type: + description: | + type of the integratation (Default to 'outgoing-webhooks') + type: string + activities: + description: | + activities the integration gets triggered (list) + type: array + items: + type: string + url: + type: string + token: + description: | + token of the integration + type: string + x-nullable: true + boardId: + description: | + Board ID of the integration + type: string + createdAt: + description: | + Creation date of the integration + type: string + modifiedAt: + type: string + userId: + description: | + user ID who created the interation + type: string + required: + - enabled + - type + - activities + - url + - boardId + - createdAt + - modifiedAt + - userId + 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. Used for templates + type: string + 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: + - white + - green + - yellow + - orange + - red + - purple + - blue + - sky + - lime + - pink + - black + - peachpuff + - crimson + - plum + - darkgreen + - slateblue + - magenta + - gold + - navy + - gray + - saddlebrown + - paleturquoise + - mistyrose + - indigo + x-nullable: true + type: + description: | + The type of list + type: string + required: + - title + - archived + - boardId + - swimlaneId + - 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: + - white + - green + - yellow + - orange + - red + - purple + - blue + - sky + - lime + - pink + - black + - peachpuff + - crimson + - plum + - darkgreen + - slateblue + - magenta + - gold + - navy + - gray + - saddlebrown + - paleturquoise + - mistyrose + - indigo + 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 + 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 + 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 + required: + - createdAt + - modifiedAt + - authenticationMethod + UsersEmails: + type: object + properties: + address: + description: | + The email address + type: string + verified: + description: | + Has the email been verified + type: boolean + required: + - address + - verified + 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 hide system messages? + type: boolean + hideCheckedItems: + description: | + does the user want to hide checked checklist items? + type: boolean + hiddenSystemMessages: + description: | + does the user want to hide system messages? + type: boolean + hiddenMinicardLabelText: + description: | + does the user want to hide minicard label texts? + type: boolean + initials: + description: | + initials of the user + type: string + 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 + notifications: + description: | + enabled notifications for the user + type: array + items: + $ref: "#/definitions/UsersProfileNotifications" + activity: + description: | + The id of the activity this notification references + type: string + read: + description: | + the date on which this notification was read + type: string + 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 + 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 + required: + - activity + - templatesBoardId + - cardTemplatesSwimlaneId + - listTemplatesSwimlaneId + - boardTemplatesSwimlaneId + UsersSessiondata: + type: object + properties: + totalHits: + description: | + Total hits from last search + type: number + lastHit: + description: | + last hit that was returned + type: number diff --git a/releases/rebuild-docs-install-deps.sh b/releases/rebuild-docs-install-deps.sh index 51c2ef94f..2f6641892 100755 --- a/releases/rebuild-docs-install-deps.sh +++ b/releases/rebuild-docs-install-deps.sh @@ -4,6 +4,11 @@ sudo apt-get install python3-pip sudo pip3 install -U setuptools wheel sudo npm install -g api2html +mkdir -p ~/python +cd ~/python +git clone --depth 1 -b master https://github.com/Kronuz/esprima-python +cd ~/python/esprima-python +sudo python3 setup.py install --record files.txt cd ~/repos/wekan mkdir -p public/api diff --git a/releases/translations/pull-translations.sh b/releases/translations/pull-translations.sh index 3dcb89015..9b642b43f 100755 --- a/releases/translations/pull-translations.sh +++ b/releases/translations/pull-translations.sh @@ -151,6 +151,9 @@ tx pull -f -l es_AR echo "Spanish (Chile):" tx pull -f -l es_CL +echo "Spanish (Latin America)": +tx pull -f -l es_419 + echo "Spanish (Mexico)": tx pull -f -l es_MX diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp index e0183b269..11e9df7f5 100644 --- a/sandstorm-pkgdef.capnp +++ b/sandstorm-pkgdef.capnp @@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = ( appTitle = (defaultText = "Wekan"), # The name of the app as it is displayed to the user. - appVersion = 505, + appVersion = 509, # Increment this for every release. - appMarketingVersion = (defaultText = "5.05.0~2021-03-11"), + appMarketingVersion = (defaultText = "5.09.0~2021-03-26"), # Human-readable presentation of the app version. minUpgradableAppVersion = 0,