diff --git a/models/cards.js b/models/cards.js index 546efdfe6..fb52ea122 100644 --- a/models/cards.js +++ b/models/cards.js @@ -4440,6 +4440,44 @@ JsonRoutes.add('GET', '/api/boards/:boardId/cards_count', function( }); }, ); + + /** + * @operation archive_card + * @summary Archive a card + * + * @description Archive a card + * @param {string} boardId the board ID of the card + * @param {string} listId the list ID of the card + * @param {string} cardId the ID of the card + * @return_type {_id: string, archived: bool, archivedAt: Date} + */ + JsonRoutes.add( + 'POST', + '/api/boards/:boardId/lists/:listId/cards/:cardId/archive', + function(req, res) { + const paramBoardId = req.params.boardId; + const paramCardId = req.params.cardId; + const paramListId = req.params.listId; + Authentication.checkBoardAccess(req.userId, paramBoardId); + const card = ReactiveCache.getCard({ + _id: paramCardId, + listId: paramListId, + boardId: paramBoardId, + archived: false, + }); + if (!card) { + throw new Meteor.Error(404, 'Card not found'); + } + const archive_res = card.archive(); + JsonRoutes.sendResult(res, { + code: 200, + data: { + _id: paramCardId, + ...archive_res.$set, + }, + }); + }, + ); } // Position history tracking methods