UNPKG

businessmap-mcp

Version:

MCP server for Businessmap Kanbanize, exposing tools for managing business entities like boards, cards, and columns, facilitating LLM interaction.

376 lines (375 loc) 11.8 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.apiServices = void 0; const request_1 = __importDefault(require("../utils/request")); const DEFAULT_ERROR = "UNKNOWN_ERROR"; const DEFAULT_MESSAGE_ERROR = "An unknown mistake occurred"; const DEFAULT_REFERENCE_MESSAGE_ERROR = "Check the logs for more details"; class ApiServices extends request_1.default { handleError(error) { let errorMessage = DEFAULT_MESSAGE_ERROR; if (error instanceof Error) { errorMessage = error.message; } return { error: { code: DEFAULT_ERROR, message: errorMessage, reference: DEFAULT_REFERENCE_MESSAGE_ERROR, }, }; } async getMe() { try { const data = await this.get("/me"); return { data }; } catch (error) { return this.handleError(error); } } async getApiLimits() { try { const data = await this.get("/apiLimits"); return { data }; } catch (error) { return this.handleError(error); } } async getCard(cardId) { try { const data = await this.get(`/cards/${cardId}`); return { data }; } catch (error) { return this.handleError(error); } } async createCard(cardData) { try { const queryParams = new URLSearchParams(); if (cardData.board_id) { queryParams.append('board_id', cardData.board_id.toString()); } if (cardData.workflow_id) { queryParams.append('workflow_id', cardData.workflow_id.toString()); } const requestBody = { column_id: cardData.column_id, lane_id: cardData.lane_id, title: cardData.title, description: cardData.description, priority: cardData.priority, ...(cardData.owner_user_id && { owner_user_id: cardData.owner_user_id }), }; const url = queryParams.toString() ? `/cards?${queryParams.toString()}` : '/cards'; const data = await this.post(url, requestBody); return { data }; } catch (error) { return this.handleError(error); } } async updateCard(card_id, title, description, assignee_ids, priority, column_id, lane_id) { try { const data = await this.patch(`/cards/${card_id}`, { title, description, assignee_ids, priority, column_id, lane_id, }); return { data }; } catch (error) { return this.handleError(error); } } async deleteCard(cardId) { try { await this.delete(`/cards/${cardId}`); return { data: "The card has been deleted" }; } catch (error) { return this.handleError(error); } } async getCards(props) { try { const cardIds = props.card_ids ? `&card_ids=${props.card_ids}` : ""; const boardIds = props.board_ids ? `&board_ids=${props.board_ids}` : ""; const ownerUserIds = props.owner_user_ids ? `&owner_user_ids=${props.owner_user_ids}` : ""; const data = await this.get(`/cards?state=${props.state}&is_blocked=${props.is_blocked}&expand=linked_cards,co_owner_ids,subtasks${cardIds}${boardIds}${ownerUserIds}`); return { data }; } catch (error) { return this.handleError(error); } } async getCardComments(cardId) { try { const data = await this.get(`/cards/${cardId}/comments`); return { data }; } catch (error) { return this.handleError(error); } } async addCardComment(cardId, comment) { try { const data = await this.post(`/cards/${cardId}/comments`, { text: comment, }); return { data }; } catch (error) { return this.handleError(error); } } async getCardComment(cardId, commentId) { try { const data = await this.get(`/cards/${cardId}/comments/${commentId}`); return { data }; } catch (error) { return this.handleError(error); } } async updateCardComment(cardId, commentId, comment) { try { const data = await this.patch(`/cards/${cardId}/comments/${commentId}`, { text: comment, }); return { data }; } catch (error) { return this.handleError(error); } } async deleteCardComment(cardId, commentId) { try { const data = await this.delete(`/cards/${cardId}/comments/${commentId}`); return { data }; } catch (error) { return this.handleError(error); } } async getCardCoOwners(cardId) { try { const data = await this.get(`/cards/${cardId}/coOwners`); return { data }; } catch (error) { return this.handleError(error); } } async checkCardCoOwner(cardId, userId) { try { await this.get(`/cards/${cardId}/coOwners/${userId}`); return { data: true }; } catch (error) { return this.handleError(error); } } async addCardCoOwner(cardId, userId) { try { await this.put(`/cards/${cardId}/coOwners/${userId}`); return { data: "Add a user as a co-owner of a card." }; } catch (error) { return this.handleError(error); } } async removeCardCoOwner(cardId, userId) { try { await this.delete(`/cards/${cardId}/coOwners/${userId}`); return { data: "Remove a user as a co-owner of a card." }; } catch (error) { return this.handleError(error); } } async getLinkedCards(cardId) { try { const data = await this.get(`/cards/${cardId}/linkedCards`); return { data }; } catch (error) { return this.handleError(error); } } async getCardSubtasks(cardId) { try { const data = await this.get(`/cards/${cardId}/subtasks`); return { data }; } catch (error) { return this.handleError(error); } } async getCardSubtask(cardId, subtaskId) { try { const data = await this.get(`/cards/${cardId}/subtasks/${subtaskId}`); return { data }; } catch (error) { return this.handleError(error); } } async addCardSubtask(cardId, description, owner_user_id, is_finished, deadline, position) { try { const requestBody = { description }; if (owner_user_id !== undefined) requestBody.owner_user_id = owner_user_id; if (is_finished !== undefined) requestBody.is_finished = is_finished; if (deadline !== undefined) requestBody.deadline = deadline; if (position !== undefined) requestBody.position = position; const data = await this.post(`/cards/${cardId}/subtasks`, requestBody); return { data }; } catch (error) { return this.handleError(error); } } async updateCardSubtask(cardId, subtaskId, description, isFinished, owner_user_id, deadline, position) { try { const requestBody = {}; if (description !== undefined) requestBody.description = description; if (isFinished !== undefined) requestBody.is_finished = isFinished; if (owner_user_id !== undefined) requestBody.owner_user_id = owner_user_id; if (deadline !== undefined) requestBody.deadline = deadline; if (position !== undefined) requestBody.position = position; const data = await this.patch(`/cards/${cardId}/subtasks/${subtaskId}`, requestBody); return { data }; } catch (error) { return this.handleError(error); } } async deleteCardSubtask(cardId, subtaskId) { try { await this.delete(`/cards/${cardId}/subtasks/${subtaskId}`); return { data: "The card subtask has been deleted." }; } catch (error) { return this.handleError(error); } } async getBoards() { try { const data = await this.get(`/boards?if_assigned=1`); return { data }; } catch (error) { return this.handleError(error); } } async getBoard(boardId) { try { const data = await this.get(`/boards/${boardId}`); return { data }; } catch (error) { return this.handleError(error); } } async getUser(user_id) { try { const data = await this.get(`/users/${user_id}`); return { data }; } catch (error) { return this.handleError(error); } } async getColumns(boardId) { try { const data = await this.get(`/boards/${boardId}/columns`); return { data }; } catch (error) { return this.handleError(error); } } async getColumn(boardId, columnId) { try { const data = await this.get(`/boards/${boardId}/columns/${columnId}`); return { data }; } catch (error) { return this.handleError(error); } } async getWorkspace(workspaceId) { try { const data = await this.get(`/workspace/${workspaceId}`); return { data }; } catch (error) { return this.handleError(error); } } async getLanes(boardId) { try { const data = await this.get(`/boards/${boardId}/lanes`); return { data }; } catch (error) { return this.handleError(error); } } async getLane(laneId) { try { const data = await this.get(`/lanes/${laneId}`); return { data }; } catch (error) { return this.handleError(error); } } async createLane(boardId, params) { try { const data = await this.post(`/boards/${boardId}/lanes`, params); return { data }; } catch (error) { return this.handleError(error); } } async updateLane(laneId, params) { try { const data = await this.patch(`/lanes/${laneId}`, params); return { data }; } catch (error) { return this.handleError(error); } } async deleteLane(laneId) { try { await this.delete(`/lanes/${laneId}`); return { data: "The lane has been deleted" }; } catch (error) { return this.handleError(error); } } } exports.apiServices = new ApiServices();