diff --git a/README.md b/README.md
index daf5617b..c8a9a190 100644
--- a/README.md
+++ b/README.md
@@ -12,7 +12,7 @@
-**Enable AI agents to operate reliably within real workflows. This MCP is monday.com’s open framework for connecting agents into your work OS - giving them secure access to structured data, tools to take action, and the context needed to make smart decisions.**
+**Enable AI agents to operate reliably within real workflows. This MCP is monday.com's open framework for connecting agents into your work OS - giving them secure access to structured data, tools to take action, and the context needed to make smart decisions.**
@@ -119,7 +119,8 @@ Our MCP server provides a rich set of tools that give AI assistants the ability
| **Item Operations** | create_item | Create a new item in a monday.com board with specified column values |
| | delete_item | Delete an item from a board permanently |
| | get_board_items_by_name | Search for items by board ID and term/name |
-| | create_update | Add an update/comment to a specific item |
+| | list_board_items | Lists items from a board with pagination, and optional filtering by group ID and item name. |
+| | manage_item_updates | Fetches updates for an item or creates a new update on an item. |
| | change_item_column_values | Modify the column values of an existing item |
| | move_item_to_group | Move an item to a different group within the same board |
| **Board Operations** | create_board | Create a new monday.com board with specified columns |
diff --git a/packages/agent-toolkit/README.md b/packages/agent-toolkit/README.md
index 2e8d9f8f..28d04f77 100644
--- a/packages/agent-toolkit/README.md
+++ b/packages/agent-toolkit/README.md
@@ -24,7 +24,8 @@ The toolkit includes several pre-built tools for common Monday.com operations, o
- `CreateItemTool` - Create a new item in a monday.com board
- `DeleteItemTool` - Delete an item from a board
- `GetBoardItemsTool` - Get items by board id and term
-- `CreateUpdateTool` - Create a new update on a specific item
+- `ListBoardItemsTool` - Lists items from a board with pagination, and optional filtering by group ID and item name.
+- `ManageItemUpdatesTool` - Fetches, creates, or deletes updates for items or fetches updates for entire boards. Supports array inputs for item and board IDs.
- `ChangeItemColumnValuesTool` - Change the column values of an item in a monday.com board
- `MoveItemToGroupTool` - Move an item to a group in a monday.com board
diff --git a/packages/agent-toolkit/fetch-schema.sh b/packages/agent-toolkit/fetch-schema.sh
index 7b3e822b..bceb3966 100755
--- a/packages/agent-toolkit/fetch-schema.sh
+++ b/packages/agent-toolkit/fetch-schema.sh
@@ -1,2 +1,2 @@
#!/bin/bash
- curl "https://api.monday.com/v2/get_schema?format=sdl&version=stable" -o src/monday-graphql/schema.graphql
\ No newline at end of file
+ curl "https://api.monday.com/v2/get_schema?format=sdl&version=current" -o src/monday-graphql/schema.graphql
\ No newline at end of file
diff --git a/packages/agent-toolkit/src/core/platform-api-tools/create-update-tool.ts b/packages/agent-toolkit/src/core/platform-api-tools/create-update-tool.ts
deleted file mode 100644
index fb7ad3d5..00000000
--- a/packages/agent-toolkit/src/core/platform-api-tools/create-update-tool.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import { z } from 'zod';
-import { BaseMondayApiTool } from './base-monday-api-tool';
-import { ToolInputType, ToolOutputType, ToolType } from '../tool';
-import { createUpdate } from '../../monday-graphql/queries.graphql';
-import { CreateUpdateMutation, CreateUpdateMutationVariables } from '../../monday-graphql/generated/graphql';
-
-export const createUpdateToolSchema = {
- itemId: z.number().describe('The id of the item to which the update will be added'),
- body: z.string().describe("The update to be created, must be relevant to the user's request"),
-};
-
-export class CreateUpdateTool extends BaseMondayApiTool {
- name = 'create_update';
- type = ToolType.MUTATION;
-
- getDescription(): string {
- return 'Create a new update in a monday.com board';
- }
-
- getInputSchema(): typeof createUpdateToolSchema {
- return createUpdateToolSchema;
- }
-
- async execute(input: ToolInputType): Promise> {
- const variables: CreateUpdateMutationVariables = {
- itemId: input.itemId.toString(),
- body: input.body,
- };
-
- const res = await this.mondayApi.request(createUpdate, variables);
-
- return {
- content: `Update ${res.create_update?.id} successfully created on item ${input.itemId}`,
- };
- }
-}
diff --git a/packages/agent-toolkit/src/core/platform-api-tools/index.ts b/packages/agent-toolkit/src/core/platform-api-tools/index.ts
index b3122bcd..f1062fe8 100644
--- a/packages/agent-toolkit/src/core/platform-api-tools/index.ts
+++ b/packages/agent-toolkit/src/core/platform-api-tools/index.ts
@@ -1,7 +1,6 @@
import { DeleteItemTool } from './delete-item-tool';
import { GetBoardItemsTool } from './get-board-items-tool';
import { CreateItemTool } from './create-item-tool';
-import { CreateUpdateTool } from './create-update-tool';
import { GetBoardSchemaTool } from './get-board-schema-tool';
import { GetUsersTool } from './get-users-tool';
import { ChangeItemColumnValuesTool } from './change-item-column-values-tool';
@@ -15,12 +14,13 @@ import { GetTypeDetailsTool } from './get-type-details-tool';
import { CreateCustomActivityTool } from './create-custom-activity-tool';
import { CreateTimelineItemTool } from './create-timeline-item-tool';
import { FetchCustomActivityTool } from './fetch-custom-activity-tool';
+import { ManageItemUpdatesTool } from './manage-item-updates-tool';
+import { ListBoardItemsTool } from './list-board-items-tool';
export const allTools = [
DeleteItemTool,
GetBoardItemsTool,
CreateItemTool,
- CreateUpdateTool,
GetBoardSchemaTool,
GetUsersTool,
ChangeItemColumnValuesTool,
@@ -34,12 +34,13 @@ export const allTools = [
CreateCustomActivityTool,
CreateTimelineItemTool,
FetchCustomActivityTool,
+ ManageItemUpdatesTool,
+ ListBoardItemsTool,
];
export * from './delete-item-tool';
export * from './get-board-items-tool';
export * from './create-item-tool';
-export * from './create-update-tool';
export * from './get-board-schema-tool';
export * from './get-users-tool';
export * from './change-item-column-values-tool';
@@ -53,3 +54,5 @@ export * from './get-type-details-tool';
export * from './create-custom-activity-tool';
export * from './create-timeline-item-tool';
export * from './fetch-custom-activity-tool';
+export * from './manage-item-updates-tool';
+export * from './list-board-items-tool';
diff --git a/packages/agent-toolkit/src/core/platform-api-tools/list-board-items-tool.ts b/packages/agent-toolkit/src/core/platform-api-tools/list-board-items-tool.ts
new file mode 100644
index 00000000..e518dd57
--- /dev/null
+++ b/packages/agent-toolkit/src/core/platform-api-tools/list-board-items-tool.ts
@@ -0,0 +1,147 @@
+import { z } from 'zod';
+import { BaseMondayApiTool } from './base-monday-api-tool';
+import { ToolInputType, ToolOutputType, ToolType } from '../tool';
+import { listBoardItems } from '../../monday-graphql/queries.graphql';
+import {
+ ListBoardItemsQuery,
+ ListBoardItemsQueryVariables,
+ ItemsQuery, // Actual input type for query_params
+ ItemsQueryRuleOperator, // Import the enum for operators
+ // ItemsQueryRule, // Not directly needed if constructing inline
+} from '../../monday-graphql/generated/graphql';
+
+/**
+ * Zod schema for the input of the ListBoardItemsTool.
+ * Defines the arguments required to list items from a board, including pagination and filtering options.
+ */
+export const listBoardItemsToolSchema = {
+ /** The ID of the monday.com board from which to list items. */
+ boardId: z.number().describe('The ID of the board from which to list items.'),
+ /** Optional: Maximum number of items to return per page. Defaults to 25. */
+ limit: z.number().optional().default(25).describe('Maximum number of items to return per page. Defaults to 25.'),
+ /** Optional: Cursor for fetching the next page of items. Obtained from a previous call to this tool. */
+ cursor: z.string().optional().describe('Cursor for fetching the next page of items. Obtained from a previous call.'),
+ /** Optional: ID of a specific group within the board to filter items by. */
+ groupId: z.string().optional().describe('Optional: ID of a specific group to filter items by.'),
+ /** Optional: Text to search for within item names. If empty or undefined, no name-based filtering is applied. */
+ nameQuery: z
+ .string()
+ .optional()
+ .describe('Optional: Text to search for in item names. If empty or undefined, no name filter is applied.'),
+};
+
+/**
+ * A tool for listing items from a monday.com board with comprehensive support for
+ * pagination and optional filtering by group ID and/or item name.
+ *
+ * Key Features:
+ * - **Pagination**: Use `limit` (default 25) to specify page size and `cursor` (from a previous call) to fetch subsequent pages.
+ * - **Name Filtering**: Provide `nameQuery` to search for items containing that text in their name. An empty or omitted `nameQuery` applies no name filter.
+ * - **Group Filtering**: Provide `groupId` to retrieve items only from that specific group.
+ * - **Combined Filtering**: Both `nameQuery` and `groupId` can be used together.
+ *
+ * The tool dynamically constructs query parameters for the Monday.com API based on the provided filters.
+ * It returns an object containing the `boardName`, an array of `items` for the current page (each item includes `id`, `name`, and `group` details), and a `cursor` string for the next page (or `null` if no more items).
+ *
+ * Example Usage:
+ * - To get the first 10 items: `{ boardId: 123, limit: 10 }`
+ * - To get items from group 'g123' containing "Task": `{ boardId: 123, groupId: "g123", nameQuery: "Task" }`
+ * - To get the next page from a previous call: `{ boardId: 123, cursor: "some_cursor_string" }`
+ */
+export class ListBoardItemsTool extends BaseMondayApiTool {
+ /** The unique name of the tool. */
+ name = 'list_board_items';
+ /** The type of the tool, indicating it performs read-only query operations. */
+ type = ToolType.QUERY;
+
+ /**
+ * Provides a detailed, human-readable description of what the tool does,
+ * intended for an AI model to understand its capabilities and parameters.
+ * @returns A string describing the tool's purpose, inputs, pagination, filtering, and output structure.
+ */
+ getDescription(): string {
+ return (
+ 'Lists items from a specified monday.com board. Required input: `boardId`. ' +
+ 'Supports pagination via optional `limit` (default 25) and `cursor` (string from previous call). ' +
+ 'Optionally filters by `groupId` (string) to get items from a specific group, and/or by `nameQuery` (string) for a text search within item names. ' +
+ 'If `nameQuery` is empty or omitted, no name filter is applied. ' +
+ 'Returns an object with `boardName` (string), `items` (array of item objects, each with `id`, `name`, `group`), and `cursor` (string or null for next page).'
+ );
+ }
+
+ /**
+ * Returns the Zod schema defining the input structure for this tool.
+ */
+ getInputSchema(): typeof listBoardItemsToolSchema {
+ return listBoardItemsToolSchema;
+ }
+
+ /**
+ * Executes the tool's logic to list board items.
+ * @param input - The input arguments for the tool.
+ * @returns A promise resolving to an object containing the list of items and a cursor for the next page.
+ */
+ async execute(input: ToolInputType): Promise> {
+ // Initialize queryParams with the correct type. Cast to any initially to allow dynamic property assignment.
+ const queryParams: Partial = {};
+ queryParams.rules = []; // Initialize rules array
+
+ if (input.nameQuery && input.nameQuery.trim() !== '') {
+ queryParams.rules.push({
+ column_id: 'name', // Standard column ID for item name
+ compare_value: input.nameQuery,
+ operator: ItemsQueryRuleOperator.ContainsText, // Use the enum value
+ });
+ }
+
+ if (input.groupId) {
+ // Based on common Monday.com API patterns, filtering by group in items_page
+ // often involves specifying the group_id directly within query_params, if supported by ItemsQuery type.
+ // However, ItemsQuery revealed it doesn't have a direct `group_id` field.
+ // So, we must use a rule. The exact column_id for group might be 'group'.
+ // This assumes 'group' is a queryable column ID for group association.
+ queryParams.rules.push({
+ column_id: 'group', // This is an assumption for the group column ID in rules.
+ // It might need to be different, e.g., a specific system ID for the group column.
+ compare_value: [input.groupId], // compare_value for AnyOf is typically an array
+ operator: ItemsQueryRuleOperator.AnyOf, // To match if the item is in any of the specified group_ids (here, just one)
+ });
+ }
+
+ // If no rules were added, rules array should be undefined or not present
+ if (queryParams.rules.length === 0) {
+ delete queryParams.rules; // Or set to undefined, depending on API/client preference for empty arrays
+ }
+
+ const variables: ListBoardItemsQueryVariables = {
+ boardId: input.boardId.toString(),
+ limit: input.limit,
+ cursor: input.cursor,
+ // Only include queryParams if it has been populated (e.g., with rules)
+ queryParams:
+ (queryParams.rules && queryParams.rules.length > 0) || queryParams.groups
+ ? (queryParams as ItemsQuery)
+ : undefined,
+ };
+
+ try {
+ const res = await this.mondayApi.request(listBoardItems, variables);
+ const boardData = res.boards?.[0];
+
+ if (!boardData) {
+ return { content: `Board with ID ${input.boardId} not found or access denied.` };
+ }
+
+ const itemsPage = boardData.items_page;
+ const response = {
+ boardName: boardData.name,
+ items: itemsPage?.items || [],
+ cursor: itemsPage?.cursor || null,
+ };
+ return { content: JSON.stringify(response, null, 2) };
+ } catch (error: any) {
+ // console.error(`Error listing items for board ${input.boardId}:`, error);
+ return { content: `Failed to list items for board ${input.boardId}. Error: ${error.message || 'Unknown error'}` };
+ }
+ }
+}
diff --git a/packages/agent-toolkit/src/core/platform-api-tools/manage-item-updates-tool.ts b/packages/agent-toolkit/src/core/platform-api-tools/manage-item-updates-tool.ts
new file mode 100644
index 00000000..c9dabde1
--- /dev/null
+++ b/packages/agent-toolkit/src/core/platform-api-tools/manage-item-updates-tool.ts
@@ -0,0 +1,306 @@
+import { z } from 'zod';
+import { BaseMondayApiTool } from './base-monday-api-tool';
+import { ToolInputType, ToolOutputType, ToolType } from '../tool';
+import { fetchItemUpdates, fetchBoardUpdates } from '../../monday-graphql/queries.graphql';
+import {
+ FetchItemUpdatesQuery,
+ FetchItemUpdatesQueryVariables,
+ FetchBoardUpdatesQuery,
+ FetchBoardUpdatesQueryVariables,
+ CreateUpdateMutation,
+ CreateUpdateMutationVariables,
+ DeleteUpdateMutation,
+ DeleteUpdateMutationVariables,
+} from '../../monday-graphql/generated/graphql';
+import {
+ createUpdate as createUpdateMutation,
+ deleteUpdate as deleteUpdateMutation,
+} from '../../monday-graphql/queries.graphql';
+
+/**
+ * Zod schema for the input of the ManageItemUpdatesTool.
+ * Defines the expected structure and types for tool invocation arguments.
+ */
+export const manageItemUpdatesToolSchema = {
+ /**
+ * Array of board IDs (usually one) to fetch updates from.
+ * Used if 'operation' is 'fetch'. Takes precedence over 'itemId' for fetching if both are provided.
+ */
+ boardId: z
+ .array(z.number()).min(1)
+ .optional()
+ .describe(
+ 'Array of board IDs (usually one) to fetch updates from. Used if operation is "fetch". Takes precedence over itemId for fetching if both are provided.',
+ ),
+ /**
+ * Array of item IDs.
+ * For 'fetch': Used if 'boardId' is not provided. Optional if boardId is used for fetching. Provide an array (e.g., [12345] or [123, 456]).
+ * For 'create'/'delete': Required. Provide an array with one item ID (e.g., [12345]).
+ */
+ itemId: z
+ .array(z.number()).min(1)
+ .optional()
+ .describe(
+ "Array of item IDs. For 'fetch', used if 'boardId' is not provided. Optional if boardId is used for fetching. Provide an array (e.g., [12345] or [123, 456]). For 'create'/'delete', required. Provide an array with one item ID (e.g., [12345]).",
+ ),
+ /** The operation to perform: 'fetch' to retrieve updates, 'create' to add a new update, or 'delete' to remove an update. */
+ operation: z
+ .enum(['fetch', 'create', 'delete'])
+ .describe("The operation to perform: 'fetch', 'create', or 'delete' updates."),
+ /** The content of the update to be created. Required only if 'operation' is 'create'. */
+ body: z.string().optional().describe('Content of the update to create. Required if operation is "create".'),
+ /** Maximum number of updates to retrieve per item. Applicable only if 'operation' is 'fetch'. Defaults to 25. API max is 100. */
+ limit: z
+ .number()
+ .optional()
+ .default(25)
+ .describe('Maximum number of updates to fetch per item. Used if operation is "fetch". Defaults to 25.'),
+ /** ID of the update to be deleted. Required only if 'operation' is 'delete'. */
+ updateId: z.number().optional().describe('ID of the update to delete. Required if operation is "delete".'),
+ /** Optional: ID of the parent update to reply to. Used only if 'operation' is 'create'. */
+ parentId: z
+ .number()
+ .optional()
+ .describe("Optional: ID of the parent update to reply to. Used only if 'operation' is 'create'."),
+};
+
+/**
+ * A tool for managing item updates (comments) in monday.com.
+ *
+ * Use this tool to:
+ * - Fetch the latest updates for one or more items or entire boards:
+ * - By item(s): Provide `itemId` (array of one or more item IDs, e.g., `[123]` or `[123, 456]`) and set operation to 'fetch'.
+ * - By board(s): Provide `boardId` (array of one or more board IDs, e.g., `[8102196205]`) and set operation to 'fetch'. `boardId` takes precedence if both are given.
+ * Optionally, specify 'limit' to control how many updates are returned per item/board (default is 25).
+ * - Create a new update on a specific item: Provide `itemId` (array with a single item ID, e.g., `[12345]`), set operation to 'create', and supply 'body'.
+ * - Delete an existing update from an item: Provide `itemId` (array with a single item ID, e.g., `[12345]`), set operation to 'delete', and supply 'updateId'.
+ *
+ * Example usage:
+ * - To fetch updates for item 123: { itemId: [123], operation: 'fetch' }
+ * - To fetch updates for items 123 and 456 with a limit of 5: { itemId: [123, 456], operation: 'fetch', limit: 5 }
+ * - To fetch updates for board 8102196205: { boardId: [8102196205], operation: 'fetch' }
+ * - To add an update to item 12345: { itemId: [12345], operation: 'create', body: 'This is my update.' }
+ * - To delete update 67890 from item 12345: { itemId: [12345], operation: 'delete', updateId: 67890 }
+ */
+export class ManageItemUpdatesTool extends BaseMondayApiTool {
+ /** The unique name of the tool. */
+ name = 'manage_item_updates';
+ /** The type of the tool, indicating it can perform mutations (data-changing operations). */
+ type = ToolType.MUTATION;
+
+ /**
+ * Provides a human-readable description of what the tool does.
+ * @returns A string describing the tool's purpose.
+ */
+ getDescription(): string {
+ return (
+ 'Fetches, creates, or deletes updates (comments) for Monday.com items or fetches updates from boards. ' +
+ "Use 'operation: fetch' with 'boardId' (number or array of numbers) to retrieve updates for entire board(s), " +
+ "or with 'itemId' (number or array of numbers) for specific item(s). Optionally specify 'limit'. " +
+ "If both 'boardId' and 'itemId' are provided for 'fetch', 'boardId' will be used. " +
+ "Use 'operation: create' to add a new update (requires 'itemId' - number, and 'body', optionally 'parentId' to reply). " +
+ "Use 'operation: delete' to remove an update (requires 'itemId' - number, and 'updateId'). " +
+ "If an array of item IDs is given for 'create' or 'delete', only the first ID is used."
+ );
+ }
+
+ /**
+ * Returns the Zod schema defining the input structure for this tool.
+ * @returns The Zod schema for tool input.
+ */
+ getInputSchema(): typeof manageItemUpdatesToolSchema {
+ return manageItemUpdatesToolSchema;
+ }
+
+ /**
+ * Executes the tool's logic based on the provided input.
+ * @param input - The input arguments for the tool, conforming to manageItemUpdatesToolSchema.
+ * @returns A promise resolving to an object containing the string output of the operation.
+ */
+ async execute(input: ToolInputType): Promise> {
+ const getSingleItemIdForMutation = (itemIdInput: number[], operation: 'create' | 'delete'): number => {
+ // itemIdInput is now guaranteed to be an array if provided to this function due to prior checks.
+ const firstId = itemIdInput[0];
+ if (itemIdInput.length > 1) {
+ // console.warn(
+ // `[ManageItemUpdatesTool] For '${operation}' operation, only the first item ID (${firstId}) from the provided array [${itemIdInput.join(', ')}] will be used.`,
+ // );
+ }
+ return firstId;
+ };
+
+ if (input.operation === 'fetch') {
+ const effectiveLimit = input.limit && input.limit > 100 ? 100 : input.limit || 25;
+ if (input.limit && input.limit > 100) {
+ // console.warn(
+ // `[ManageItemUpdatesTool] Requested limit ${input.limit} exceeds API max of 100. Using 100 instead.`,
+ // );
+ }
+
+ if (input.boardId) {
+ // input.boardId is now guaranteed to be an array of numbers if defined.
+ const boardIdsForQuery = input.boardId.map((id) => id.toString());
+
+ const variables: FetchBoardUpdatesQueryVariables = {
+ boardIds: boardIdsForQuery,
+ limit: effectiveLimit,
+ };
+
+ try {
+ const res = await this.mondayApi.request(fetchBoardUpdates, variables);
+ const boardsFromApi = res.boards;
+
+ if (!boardsFromApi || boardsFromApi.length === 0) {
+ return {
+ content: `No data returned from API for the provided board ID(s): ${boardIdsForQuery.join(', ')}.`,
+ };
+ }
+
+ // Filter out null boards before processing
+ const validBoards = boardsFromApi.filter((board) => board !== null) as Array<
+ Exclude<(typeof boardsFromApi)[0], null>
+ >;
+
+ if (validBoards.length === 0) {
+ // This case means all board IDs provided were invalid or returned null
+ // console.warn(
+ // `[ManageItemUpdatesTool] No valid boards found for the provided board ID(s): ${boardIdsForQuery.join(', ')}.`,
+ // );
+ return {
+ content: `No valid boards found or accessible for the provided board ID(s): ${boardIdsForQuery.join(', ')}.`,
+ };
+ }
+
+ const allUpdates = validBoards.flatMap((board) =>
+ (board.updates || []).map((update) => ({ ...update, board_id: board.id })),
+ );
+
+ if (allUpdates.length === 0) {
+ // console.warn(
+ // `[ManageItemUpdatesTool] No updates found for the specified board ID(s): ${boardIdsForQuery.join(', ')}.`,
+ // );
+ const boardsResponse = validBoards.map((b) => ({ id: b.id, name: b.name, updates: [] }));
+ return { content: JSON.stringify(boardsResponse, null, 2) };
+ }
+ return { content: JSON.stringify(allUpdates, null, 2) };
+ } catch (error: any) {
+ // console.error(`Error fetching updates for board ID(s) ${boardIdsForQuery.join(', ')}:`, error);
+ return {
+ content: `Failed to fetch updates for board ID(s) ${boardIdsForQuery.join(', ')}. Error: ${error.message || 'Unknown error'}`,
+ };
+ }
+ } else if (input.itemId) {
+ // input.itemId is now guaranteed to be an array of numbers if defined.
+ const itemIdsForQuery = input.itemId.map((id) => id.toString());
+
+ const variables: FetchItemUpdatesQueryVariables = {
+ itemIds: itemIdsForQuery,
+ limit: effectiveLimit,
+ };
+
+ try {
+ const res = await this.mondayApi.request(fetchItemUpdates, variables);
+ const itemsFromApi = res.items;
+
+ if (!itemsFromApi) {
+ return { content: `No data returned from API for the provided item ID(s): ${itemIdsForQuery.join(', ')}.` };
+ }
+ const validItems = itemsFromApi.filter((item) => item !== null) as Array<
+ Exclude<(typeof itemsFromApi)[0], null>
+ >;
+
+ if (validItems.length === 0) {
+ return { content: `No items found for the provided item ID(s): ${itemIdsForQuery.join(', ')}.` };
+ }
+
+ const itemsWithoutUpdates = validItems
+ .filter((item) => !item.updates || item.updates.length === 0)
+ .map((item) => item.id);
+ if (itemsWithoutUpdates.length > 0 && itemsWithoutUpdates.length < validItems.length) {
+ // console.warn(
+ // `[ManageItemUpdatesTool] Some items had no updates: ${itemsWithoutUpdates.join(', ')}. Returning full structure.`,
+ // );
+ } else if (itemsWithoutUpdates.length === validItems.length) {
+ // console.warn(
+ // `[ManageItemUpdatesTool] None of the fetched items have updates for ID(s): ${itemIdsForQuery.join(', ')}. Returning item structure.`,
+ // );
+ }
+ return { content: JSON.stringify(validItems, null, 2) };
+ } catch (error: any) {
+ // console.error(`Error fetching updates for item ID(s) ${itemIdsForQuery.join(', ')}:`, error);
+ return {
+ content: `Failed to fetch updates for item ID(s) ${itemIdsForQuery.join(', ')}. Error: ${error.message || 'Unknown error'}`,
+ };
+ }
+ } else {
+ return { content: 'Error: For "fetch" operation, either "boardId" or "itemId" must be provided.' };
+ }
+ } else if (input.operation === 'create') {
+ if (!input.body) {
+ return { content: 'Error: Update body is required for the "create" operation.' };
+ }
+ if (!input.itemId) {
+ return { content: 'Error: Item ID is required for the "create" operation.' };
+ }
+ const actualItemId = getSingleItemIdForMutation(input.itemId, 'create');
+
+ const variables: CreateUpdateMutationVariables = {
+ itemId: actualItemId.toString(),
+ body: input.body,
+ // Add parentId if provided
+ ...(input.parentId && { parentId: input.parentId.toString() }),
+ };
+
+ try {
+ const res = await this.mondayApi.request(createUpdateMutation, variables);
+ const createdUpdateId = res.create_update?.id;
+
+ if (!createdUpdateId) {
+ // console.error('Failed to create update or extract ID for item', actualItemId, 'Response:', res);
+ return { content: `Failed to create update for item ${actualItemId}. No update ID returned.` };
+ }
+ return { content: `Successfully created update with ID ${createdUpdateId} for item ${actualItemId}.` };
+ } catch (error: any) {
+ // console.error(`Error creating update for item ${actualItemId}:`, error);
+ return {
+ content: `Failed to create update for item ${actualItemId}. Error: ${error.message || 'Unknown error'}`,
+ };
+ }
+ } else if (input.operation === 'delete') {
+ if (!input.updateId) {
+ return { content: 'Error: Update ID (updateId) is required for the "delete" operation.' };
+ }
+ if (!input.itemId) {
+ return { content: 'Error: Item ID is required for the "delete" operation.' };
+ }
+ const actualItemId = getSingleItemIdForMutation(input.itemId, 'delete');
+
+ const variables: DeleteUpdateMutationVariables = {
+ updateId: input.updateId.toString(),
+ };
+
+ try {
+ const res = await this.mondayApi.request(deleteUpdateMutation, variables);
+ const deletedUpdateId = res.delete_update?.id;
+
+ if (!deletedUpdateId) {
+ // console.error(
+ // `Failed to delete update ${input.updateId} for item ${actualItemId}, or no ID returned. Response:`,
+ // res,
+ // );
+ return {
+ content: `Failed to delete update ${input.updateId} for item ${actualItemId}. Update may not exist or an API error occurred.`,
+ };
+ }
+ return { content: `Successfully deleted update with ID ${deletedUpdateId} from item ${actualItemId}.` };
+ } catch (error: any) {
+ // console.error(`Error deleting update ${input.updateId} for item ${actualItemId}:`, error);
+ return {
+ content: `Failed to delete update ${input.updateId} for item ${actualItemId}. Error: ${error.message || 'Unknown error'}`,
+ };
+ }
+ } else {
+ throw new Error(`Invalid operation: ${(input as any).operation}. Must be "fetch", "create", or "delete".`);
+ }
+ }
+}
diff --git a/packages/agent-toolkit/src/mcp/toolkit.ts b/packages/agent-toolkit/src/mcp/toolkit.ts
index c9f7deda..04c4fd66 100644
--- a/packages/agent-toolkit/src/mcp/toolkit.ts
+++ b/packages/agent-toolkit/src/mcp/toolkit.ts
@@ -4,6 +4,7 @@ import { CallToolResult } from '@modelcontextprotocol/sdk/types';
import { ApiClient, ApiClientConfig } from '@mondaydotcomorg/api';
import { Tool, allTools } from '../core';
import { filterTools, ToolsConfiguration } from '../core/utils';
+import { zodToJsonSchema } from 'zod-to-json-schema';
export type MondayAgentToolkitConfig = {
mondayApiToken: ApiClientConfig['token'];
@@ -16,6 +17,7 @@ export class MondayAgentToolkit extends McpServer {
private readonly mondayApiClient: ApiClient;
constructor(config: MondayAgentToolkitConfig) {
+ // console.info(JSON.stringify({ level: 'info', event: 'constructor', message: 'MondayAgentToolkit constructor called. Initializing toolkit...' }));
super({
name: 'monday.com',
version: '1.0.0',
@@ -38,6 +40,15 @@ export class MondayAgentToolkit extends McpServer {
tools.forEach((tool) => {
const inputSchema = tool.getInputSchema();
+ // console.info(JSON.stringify({ level: 'info', event: 'register_tool', tool: tool.name, message: `Registering tool: ${tool.name}` }));
+ if (inputSchema) {
+ try {
+ const jsonSchema = zodToJsonSchema(z.object(inputSchema));
+ // console.info(JSON.stringify({ level: 'info', event: 'tool_schema', tool: tool.name, schema: jsonSchema }));
+ } catch (err) {
+ // console.info(JSON.stringify({ level: 'error', event: 'tool_schema', tool: tool.name, error: String(err) }));
+ }
+ }
if (!inputSchema) {
this.tool(tool.name, tool.getDescription(), async (_extra: any) => {
const res = await tool.execute();
diff --git a/packages/agent-toolkit/src/monday-graphql/generated/graphql.ts b/packages/agent-toolkit/src/monday-graphql/generated/graphql.ts
index 70954ddc..81820596 100644
--- a/packages/agent-toolkit/src/monday-graphql/generated/graphql.ts
+++ b/packages/agent-toolkit/src/monday-graphql/generated/graphql.ts
@@ -779,7 +779,7 @@ export enum ColumnType {
Subtasks = 'subtasks',
/** Add tags to categorize items across multiple boards */
Tags = 'tags',
- /** Assign a full team to an item */
+ /** Assign a full team to an item */
Team = 'team',
/** Add textual information e.g. addresses, names or keywords */
Text = 'text',
@@ -823,6 +823,18 @@ export type Complexity = {
reset_in_x_seconds: Scalars['Int']['output'];
};
+export type ConnectProjectResult = {
+ __typename?: 'ConnectProjectResult';
+ /** A message describing the result of the operation. */
+ message?: Maybe;
+ /** The ID of the created portfolio item, if successful. */
+ portfolio_item_id?: Maybe;
+ /** The unique identifier of the operation. */
+ request_id?: Maybe;
+ /** Indicates if the operation was successful. */
+ success?: Maybe;
+};
+
export type Country = {
__typename?: 'Country';
/** The country's two-letter code. */
@@ -1904,7 +1916,7 @@ export enum ItemsQueryRuleOperator {
StartsWith = 'starts_with',
/** Within the last */
WithinTheLast = 'within_the_last',
- /** Within the next */
+ /** Within the next */
WithinTheNext = 'within_the_next'
}
@@ -2159,6 +2171,8 @@ export type Mutation = {
clear_item_updates?: Maybe- ;
/** Get the complexity data of your mutations. */
complexity?: Maybe;
+ /** Connect project to portfolio */
+ connect_project_to_portfolio?: Maybe;
/** Create a new board. */
create_board?: Maybe;
/** Create a new column in board. */
@@ -2447,6 +2461,13 @@ export type MutationClear_Item_UpdatesArgs = {
};
+/** Update your monday.com data. */
+export type MutationConnect_Project_To_PortfolioArgs = {
+ portfolioBoardId: Scalars['ID']['input'];
+ projectBoardId: Scalars['ID']['input'];
+};
+
+
/** Update your monday.com data. */
export type MutationCreate_BoardArgs = {
board_kind: BoardKind;
@@ -2616,6 +2637,7 @@ export type MutationCreate_WebhookArgs = {
/** Update your monday.com data. */
export type MutationCreate_WorkspaceArgs = {
+ account_product_id?: InputMaybe;
description?: InputMaybe;
kind: WorkspaceKind;
name: Scalars['String']['input'];
@@ -4125,6 +4147,7 @@ export type User = {
enabled: Scalars['Boolean']['output'];
/** The token of the user for email to board. */
encrypt_api_token?: Maybe;
+ greeting?: Maybe;
/** The user's unique identifier. */
id: Scalars['ID']['output'];
/** Is the user an account admin. */
@@ -4701,6 +4724,7 @@ export type CreateItemMutation = { __typename?: 'Mutation', create_item?: { __ty
export type CreateUpdateMutationVariables = Exact<{
itemId: Scalars['ID']['input'];
body: Scalars['String']['input'];
+ parentId?: InputMaybe;
}>;
@@ -4816,3 +4840,36 @@ export type FetchCustomActivityQueryVariables = Exact<{ [key: string]: never; }>
export type FetchCustomActivityQuery = { __typename?: 'Query', custom_activity?: Array<{ __typename?: 'CustomActivity', color?: CustomActivityColor | null, icon_id?: CustomActivityIcon | null, id?: string | null, name?: string | null, type?: string | null }> | null };
+
+export type FetchItemUpdatesQueryVariables = Exact<{
+ itemIds: Array | Scalars['ID']['input'];
+ limit?: InputMaybe;
+}>;
+
+
+export type FetchItemUpdatesQuery = { __typename?: 'Query', items?: Array<{ __typename?: 'Item', id: string, name: string, updates?: Array<{ __typename?: 'Update', id: string, body: string, created_at?: any | null, text_body?: string | null, creator?: { __typename?: 'User', id: string, name: string } | null }> | null } | null> | null };
+
+export type DeleteUpdateMutationVariables = Exact<{
+ updateId: Scalars['ID']['input'];
+}>;
+
+
+export type DeleteUpdateMutation = { __typename?: 'Mutation', delete_update?: { __typename?: 'Update', id: string } | null };
+
+export type ListBoardItemsQueryVariables = Exact<{
+ boardId: Scalars['ID']['input'];
+ limit?: InputMaybe;
+ cursor?: InputMaybe;
+ queryParams?: InputMaybe;
+}>;
+
+
+export type ListBoardItemsQuery = { __typename?: 'Query', boards?: Array<{ __typename?: 'Board', name: string, items_page: { __typename?: 'ItemsResponse', cursor?: string | null, items: Array<{ __typename?: 'Item', id: string, name: string, group?: { __typename?: 'Group', id: string, title: string } | null }> } } | null> | null };
+
+export type FetchBoardUpdatesQueryVariables = Exact<{
+ boardIds: Array | Scalars['ID']['input'];
+ limit?: InputMaybe;
+}>;
+
+
+export type FetchBoardUpdatesQuery = { __typename?: 'Query', boards?: Array<{ __typename?: 'Board', id: string, name: string, updates?: Array<{ __typename?: 'Update', id: string, body: string, text_body?: string | null, created_at?: any | null, updated_at?: any | null, creator_id?: string | null, item_id?: string | null, creator?: { __typename?: 'User', id: string, name: string } | null, replies?: Array<{ __typename?: 'Reply', id: string, body: string }> | null }> | null } | null> | null };
diff --git a/packages/agent-toolkit/src/monday-graphql/queries.graphql.ts b/packages/agent-toolkit/src/monday-graphql/queries.graphql.ts
index 29845863..79e5a981 100644
--- a/packages/agent-toolkit/src/monday-graphql/queries.graphql.ts
+++ b/packages/agent-toolkit/src/monday-graphql/queries.graphql.ts
@@ -31,8 +31,8 @@ export const createItem = gql`
`;
export const createUpdate = gql`
- mutation createUpdate($itemId: ID!, $body: String!) {
- create_update(item_id: $itemId, body: $body) {
+ mutation createUpdate($itemId: ID!, $body: String!, $parentId: ID) {
+ create_update(item_id: $itemId, body: $body, parent_id: $parentId) {
id
}
}
@@ -428,3 +428,84 @@ export const fetchCustomActivity = gql`
}
}
`;
+
+export const fetchItemUpdates = gql`
+ query FetchItemUpdates($itemIds: [ID!]!, $limit: Int) {
+ items(ids: $itemIds) {
+ updates(limit: $limit) {
+ id
+ body
+ created_at
+ text_body # Added for plain text content of the update
+ creator {
+ id
+ name
+ }
+ # Consider adding other relevant fields like replies, reactions if needed
+ }
+ id # Include item ID to associate updates with items in the response
+ name # Optionally include item name for context
+ }
+ }
+`;
+
+export const deleteUpdate = gql`
+ mutation DeleteUpdate($updateId: ID!) {
+ delete_update(id: $updateId) {
+ id
+ }
+ }
+`;
+
+export const listBoardItems = gql`
+ query ListBoardItems(
+ $boardId: ID!
+ $limit: Int
+ $cursor: String
+ $queryParams: ItemsQuery # Placeholder type, verify from schema/codegen
+ ) {
+ boards(ids: [$boardId]) {
+ name # Board name for context
+ items_page(limit: $limit, cursor: $cursor, query_params: $queryParams) {
+ cursor # For next page
+ items {
+ id
+ name
+ group {
+ id
+ title
+ }
+ # Add other commonly useful, lightweight fields if desired
+ }
+ }
+ }
+ }
+`;
+
+export const fetchBoardUpdates = gql`
+ query FetchBoardUpdates($boardIds: [ID!]!, $limit: Int) {
+ boards(ids: $boardIds) {
+ id
+ name
+ updates(limit: $limit) {
+ id
+ body
+ text_body
+ created_at
+ updated_at
+ creator_id
+ item_id
+ creator {
+ id
+ name
+ }
+ replies {
+ id
+ body
+ # Add other reply fields if needed in the future, e.g., creator, created_at
+ }
+ # Add other update fields if needed in the future
+ }
+ }
+ }
+`;
diff --git a/packages/agent-toolkit/src/monday-graphql/schema.graphql b/packages/agent-toolkit/src/monday-graphql/schema.graphql
index 6a87c1f7..fdb107e7 100644
--- a/packages/agent-toolkit/src/monday-graphql/schema.graphql
+++ b/packages/agent-toolkit/src/monday-graphql/schema.graphql
@@ -1,7005 +1,4493 @@
-"""
-Exposes a URL that specifies the behavior of this scalar.
-"""
-directive @specifiedBy(
- """
- The URL that specifies the behavior of this scalar.
- """
- url: String!
-) on SCALAR
+"""Get your data from monday.com"""
+type Query {
+ """Get a collection of updates."""
+ updates(
+ """Number of items to get, the default is 25."""
+ limit: Int = 25
-"""
-Indicates exactly one field must be supplied and this field must not be `null`.
-"""
-directive @oneOf on INPUT_OBJECT
+ """Page number to get, starting at 1."""
+ page: Int = 1
-"""
-Your monday.com account
-"""
-type Account {
- """
- The number of active member users in the account
- """
- active_members_count: Int
+ """A list of items unique identifiers."""
+ ids: [ID!]
+ ): [Update!]
+ custom_activity(
+ """The ids of the custom activities to fetch"""
+ ids: [String!]
- """
- The account's country two-letter code in ISO3166 format
- """
- country_code: String
+ """The name of the custom activity, case insensitive and partial match"""
+ name: String
- """
- The first day of the week for the account (sunday / monday)
- """
- first_day_of_the_week: FirstDayOfTheWeek!
+ """The icon of the custom activity"""
+ icon_id: CustomActivityIcon
- """
- The account's unique identifier.
- """
- id: ID!
+ """The color of the custom activity"""
+ color: CustomActivityColor
+ ): [CustomActivity!]
+ timeline_item(
+ """The id of the timeline item to delete"""
+ id: ID!
+ ): TimelineItem
- """
- The account's logo.
- """
- logo: String
+ """Fetches timeline items for a given item"""
+ timeline(
+ """The id of the item"""
+ id: ID!
+ ): TimelineResponse
- """
- The account's name.
- """
- name: String!
+ """Get managed column data."""
+ managed_column(
+ """The managed column ids."""
+ id: [String!]
- """
- The account's payment plan.
- """
- plan: Plan
+ """The state of the managed column."""
+ state: [ManagedColumnState!]
+ ): [ManagedColumn!]
+ marketplace_app_discounts(
+ """The id of an app"""
+ app_id: ID!
+ ): [MarketplaceAppDiscount!]!
+ app_subscriptions(
+ """The ID of an app"""
+ app_id: ID!
+ status: SubscriptionStatus
- """
- The account's active products
- """
- products: [AccountProduct]
+ """The ID of an account"""
+ account_id: Int
- """
- Show weekends in timeline
- """
- show_timeline_weekends: Boolean!
+ """
+ The value, which identifies the exact point to continue fetching the subscriptions from
+ """
+ cursor: String
- """
- The product the account signed up to first.
- """
- sign_up_product_kind: String
+ """The size of the requested page"""
+ limit: Int
+ ): AppSubscriptions!
- """
- The account's slug.
- """
- slug: String!
+ """Get an app by ID."""
+ app(
+ """The ID of the app"""
+ id: ID!
+ ): AppType
- """
- The account's tier.
- """
- tier: String
-}
+ """Get the connected account's information."""
+ account: Account
-"""
-The product a workspace is used in.
-"""
-type AccountProduct {
- """
- The account product default workspace id
- """
- default_workspace_id: ID
+ """Get a collection of installs of an app."""
+ app_installs(
+ """The id of an account to filter app installs by."""
+ account_id: ID
- """
- The account product id
- """
- id: ID
+ """The id of an application."""
+ app_id: ID!
- """
- The account product kind (core / marketing / crm / software /
- projectManagement / project_management / service / forms / whiteboard).
- """
- kind: String
-}
+ """Number of items to get, the default is 25. Max: 100"""
+ limit: Int = 25
-"""
-A role in the account
-"""
-type AccountRole {
- """
- The ID of the role
- """
- id: ID
+ """Page number to get, starting at 1."""
+ page: Int = 1
+ ): [AppInstall]
"""
- The name of the role
+ Get the current app subscription. Note: This query does not work in the playground
"""
- name: String
+ app_subscription: [AppSubscription]
- """
- The type of the role
- """
- roleType: String
-}
+ """Get operations counter current value"""
+ app_subscription_operations(
+ """
+ Operation name. A string of up to 14 characters containing alphanumeric characters and the symbols -_
+ """
+ kind: String = "global"
+ ): AppSubscriptionOperationsCounter
-"""
-Error that occurred during activation.
-"""
-type ActivateUsersError {
- """
- The error message.
- """
- message: String
+ """Get apps monetization information for an account"""
+ apps_monetization_info: AppsMonetizationInfo
- """
- The error code.
- """
- code: ActivateUsersErrorCode
+ """Get apps monetization status for an account"""
+ apps_monetization_status: AppMonetizationStatus
- """
- The id of the user that caused the error.
- """
- user_id: ID
-}
+ """Get a collection of assets by ids."""
+ assets(
+ """Ids of the assets/files you want to get"""
+ ids: [ID!]!
+ ): [Asset]
-"""
-Error codes for activating users.
-"""
-enum ActivateUsersErrorCode {
- EXCEEDS_BATCH_LIMIT
- INVALID_INPUT
- USER_NOT_FOUND
- CANNOT_UPDATE_SELF
- FAILED
-}
+ """Get a collection of boards."""
+ boards(
+ """The board's kind (public / private / share)"""
+ board_kind: BoardKind
-"""
-Result of activating users.
-"""
-type ActivateUsersResult {
- """
- The users that were activated.
- """
- activated_users: [User!]
+ """A list of boards unique identifiers."""
+ ids: [ID!]
- """
- Errors that occurred during activation.
- """
- errors: [ActivateUsersError!]
-}
+ """Boolean that brings the latest data"""
+ latest: Boolean
-"""
-An activity log event
-"""
-type ActivityLogType {
- account_id: String!
- created_at: String!
+ """Number of items to get, the default is 25."""
+ limit: Int = 25
- """
- The item's column values in string form.
- """
- data: String!
- entity: String!
- event: String!
- id: String!
- user_id: String!
-}
+ """Property to order by (created_at / used_at)."""
+ order_by: BoardsOrderBy
-type AppFeatureType {
- id: ID!
- created_at: Date
- updated_at: Date
+ """Page number to get, starting at 1."""
+ page: Int = 1
- """
- The name of the app feature
- """
- name: String
+ """
+ The state of the board (all / active / archived / deleted), the default is active.
+ """
+ state: State = active
- """
- The app feature app id
- """
- app_id: ID
+ """A list of workspace ids the boards are contained in."""
+ workspace_ids: [ID]
+ ): [Board]
- """
- The type of the app feature
- """
- type: String
+ """Get the complexity data of your queries."""
+ complexity: Complexity
- """
- The data of the app feature
- """
- data: JSON
-}
+ """Get a collection of docs."""
+ docs(
+ """A list of document unique identifiers."""
+ ids: [ID!]
-"""
-An app install details.
-"""
-type AppInstall {
- """
- The app's unique identifier.
- """
- app_id: ID!
+ """Number of items to get, the default is 25."""
+ limit: Int = 25
- """
- An app installer's account details.
- """
- app_install_account: AppInstallAccount!
+ """A list of associated board or object’s unique identifier."""
+ object_ids: [ID!]
- """
- An app installer's user details
- """
- app_install_user: AppInstallUser!
+ """Property to order by (created_at / used_at)."""
+ order_by: DocsOrderBy
- """
- The app's version details
- """
- app_version: AppVersion
+ """Page number to get, starting at 1."""
+ page: Int = 1
- """
- The required and approved scopes for an app install.
- """
- permissions: AppInstallPermissions
+ """A list of workspace ids the documents are contained in."""
+ workspace_ids: [ID]
+ ): [Document]
"""
- Installation date
+ Get a collection of folders. Note: This query won't return folders from closed workspaces to which you are not subscribed
"""
- timestamp: String
-}
+ folders(
+ """A list of folders unique identifiers."""
+ ids: [ID!]
-"""
-An app installer's account details
-"""
-type AppInstallAccount {
- """
- The app's installer account id.
- """
- id: ID!
-}
+ """Number of items to get, the default is 25."""
+ limit: Int = 25
-"""
-The required and approved scopes for an app install.
-"""
-type AppInstallPermissions {
- """
- The scopes approved by the account admin
- """
- approved_scopes: [String!]!
+ """Page number to get, starting at 1."""
+ page: Int = 1
- """
- The scopes required by the latest live version
- """
- required_scopes: [String!]!
-}
+ """
+ A list of workspace unique identifiers to filter folders by workspaces. (pass null to include Main Workspace)
+ """
+ workspace_ids: [ID]
+ ): [Folder]
-"""
-An app installer's user details
-"""
-type AppInstallUser {
- """
- The app's installer user id.
- """
- id: ID
-}
+ """Get a collection of items."""
+ items(
+ """Excludes items that are inactive, deleted or belong to deleted items"""
+ exclude_nonactive: Boolean
-"""
-The app monetization status for the current account
-"""
-type AppMonetizationStatus {
- """
- Is apps monetization is supported for the account
- """
- is_supported: Boolean!
-}
+ """A list of items unique identifiers."""
+ ids: [ID!]
-"""
-The app monetization information for the current account
-"""
-type AppsMonetizationInfo {
- """
- The number of seats in the account, across all products, used to match the
- app’s subscription among apps that utilize the seats-based monetization method
- """
- seats_count: Int
-}
+ """Number of items to get, the default is 25."""
+ limit: Int = 25
-"""
-The account subscription details for the app.
-"""
-type AppSubscription {
- """
- The type of the billing period [monthly/yearly].
- """
- billing_period: String
+ """Get the recently created items at the top of the list"""
+ newest_first: Boolean
- """
- The number of days left until the subscription ends.
- """
- days_left: Int
+ """Page number to get, starting at 1."""
+ page: Int = 1
+ ): [Item]
- """
- Is the subscription a trial
- """
- is_trial: Boolean
+ """Search items by multiple columns and values."""
+ items_page_by_column_values(
+ """The board's unique identifier."""
+ board_id: ID!
- """
- Maximum number of units for current subscription plan.
- """
- max_units: Int
+ """One or more columns, and their values to search items by."""
+ columns: [ItemsPageByColumnValuesQuery!]
- """
- The subscription plan id (on the app's side).
- """
- plan_id: String!
+ """
+ An opaque token representing the position in the result set from which to
+ resume fetching items. Use this to paginate through large result sets.
+ """
+ cursor: String
- """
- The pricing version of subscription plan.
- """
- pricing_version: Int
+ """
+ The maximum number of items to fetch in a single request. Use this to
+ control the size of the result set and manage pagination. Maximum: 500.
+ """
+ limit: Int! = 25
+ ): ItemsResponse!
- """
- The subscription renewal date.
- """
- renewal_date: Date!
-}
+ """Get the connected user's information."""
+ me: User
-"""
-Subscription object
-"""
-type AppSubscriptionDetails {
- """
- The ID of an account
- """
- account_id: Int!
+ """Get next pages of board's items (rows) by cursor."""
+ next_items_page(
+ """
+ An opaque token representing the position in the result set from which to
+ resume fetching items. Use this to paginate through large result sets.
+ """
+ cursor: String!
- """
- The ID of a pricing plan
- """
- plan_id: String!
+ """
+ The maximum number of items to fetch in a single request. Use this to
+ control the size of the result set and manage pagination. Maximum: 500.
+ """
+ limit: Int! = 25
+ ): ItemsResponse!
- """
- The ID of a pricing version
- """
- pricing_version_id: Int!
+ """Get a collection of tags."""
+ tags(
+ """A list of tags unique identifiers."""
+ ids: [ID!]
+ ): [Tag]
- """
- The monthly price of the product purchased in the given currency, after applying discounts
- """
- monthly_price: Float!
+ """Get a collection of teams."""
+ teams(
+ """A list of teams unique identifiers."""
+ ids: [ID!]
+ ): [Team]
- """
- The currency, in which the product was purchased
- """
- currency: String!
- period_type: SubscriptionPeriodType!
+ """Get a collection of users."""
+ users(
+ """A list of users' emails."""
+ emails: [String]
- """
- The date the active subscription is set to renew. Equals to null for inactive subscriptions
- """
- renewal_date: String
+ """A list of users' unique identifiers."""
+ ids: [ID!]
- """
- The date the the inactive subscription ended. Equals to null for active subscriptions
- """
- end_date: String
- status: SubscriptionStatus!
- discounts: [SubscriptionDiscount!]!
+ """The kind to search users by (all / non_guests / guests / non_pending)."""
+ kind: UserKind
- """
- The number of days left until the subscription ends
- """
- days_left: Int!
-}
+ """Number of users to get."""
+ limit: Int
-"""
-The Operations counter response for the app action.
-"""
-type AppSubscriptionOperationsCounter {
- """
- The account subscription details for the app.
- """
- app_subscription: AppSubscription
+ """Allows to fuzzy search by name"""
+ name: String
- """
- The new counter value.
- """
- counter_value: Int
+ """Get the recently created users at the top of the list"""
+ newest_first: Boolean
- """
- Operations name.
- """
- kind: String!
+ """Return non active users in the account."""
+ non_active: Boolean
- """
- Window key.
- """
- period_key: String
-}
+ """Page number to get, starting at 1."""
+ page: Int
+ ): [User]
-type AppSubscriptions {
- subscriptions: [AppSubscriptionDetails!]!
+ """Get a collection of webhooks for the board"""
+ webhooks(
+ """Filters webhooks that were created by the app initiating the request"""
+ app_webhooks_only: Boolean
- """
- Total number of subscriptions matching the given parameters
- """
- total_count: Int!
+ """Board unique identifier."""
+ board_id: ID!
+ ): [Webhook]
- """
- The value, which identifies the exact point to continue fetching the subscriptions from
- """
- cursor: String
-}
+ """Get a collection of workspaces."""
+ workspaces(
+ """A list of workspace unique identifiers."""
+ ids: [ID!]
-type AppType {
- id: ID!
- created_at: Date
- updated_at: Date
+ """The workspace's kind (open / closed)"""
+ kind: WorkspaceKind
- """
- the app name
- """
- name: String
+ """Number of items to get, the default is 25."""
+ limit: Int = 25
- """
- the api app id
- """
- api_app_id: ID
+ """Property to order by (created_at)."""
+ order_by: WorkspacesOrderBy
- """
- the api app id
- """
- client_id: String
+ """Page number to get, starting at 1."""
+ page: Int = 1
- """
- the app kid
- """
- kind: String
+ """
+ The state of the workspace (all / active / archived / deleted), the default is active.
+ """
+ state: State = active
+ ): [Workspace]
- """
- the app state
- """
- state: String
+ """Get the API version in use"""
+ version: Version!
- """
- the app user id
- """
- user_id: ID
+ """Get a list containing the versions of the API"""
+ versions: [Version!]
- """
- The apps' features
- """
- features(
- """
- Number of items to get, the default is 25.
- """
- limit: Int = 25
+ """Platform API data."""
+ platform_api: PlatformApi
- """
- Page number to get, starting at 1.
- """
- page: Int = 1
- ): [AppFeatureType!]
+ """Get all roles for the account"""
+ account_roles: [AccountRole!]
}
-"""
-An app's version details.
-"""
-type AppVersion {
- """
- The app's major version.
- """
- major: Int!
+"""Update your monday.com data."""
+type Mutation {
+ """Like an update."""
+ like_update(
+ """The update identifier."""
+ update_id: ID!
+ ): Update
+ unlike_update(
+ """The update identifier."""
+ update_id: ID!
+ ): Update!
- """
- The app's minor version.
- """
- minor: Int!
+ """Delete an update."""
+ delete_update(
+ """The update's unique identifier."""
+ id: ID!
+ ): Update
+ edit_update(
+ """The update's unique identifier."""
+ id: ID!
- """
- The app's patch version.
- """
- patch: Int!
+ """The update text."""
+ body: String!
+ ): Update!
+ pin_to_top(
+ """The update's unique identifier."""
+ id: ID!
- """
- The app's version text
- """
- text: String!
+ """The item unique identifier."""
+ item_id: ID
+ ): Update!
+ unpin_from_top(
+ """The update's unique identifier."""
+ id: ID!
- """
- The app's version type.
- """
- type: String
-}
+ """The item unique identifier."""
+ item_id: ID
+ ): Update!
-"""
-A file uploaded to monday.com
-"""
-type Asset {
- """
- The file's creation date.
- """
- created_at: Date
+ """Create a new update."""
+ create_update(
+ """The update text."""
+ body: String!
- """
- The file's extension.
- """
- file_extension: String!
+ """The item's unique identifier."""
+ item_id: ID
- """
- The file's size in bytes.
- """
- file_size: Int!
+ """The parent post identifier."""
+ parent_id: ID
+ ): Update
+ create_timeline_item(
+ """The item the timeline item will be created in."""
+ item_id: ID!
- """
- The file's unique identifier.
- """
- id: ID!
+ """The user who created the timeline item. Only for account admins."""
+ user_id: Int
- """
- The file's name.
- """
- name: String!
+ """The title of the timeline item."""
+ title: String!
- """
- original geometry of the asset.
- """
- original_geometry: String
+ """The creation time of the event."""
+ timestamp: ISO8601DateTime!
+ summary: String
+ content: String
- """
- public url to the asset, valid for 1 hour.
- """
- public_url: String!
+ """Location field value"""
+ location: String
- """
- The user who uploaded the file.
- """
- uploaded_by: User!
+ """Phone number field value"""
+ phone: String
- """
- url to view the asset.
- """
- url: String!
+ """URL field value"""
+ url: String
- """
- url to view the asset in thumbnail mode. Only available for images.
- """
- url_thumbnail: String
-}
+ """The start and end time of the new timeline item."""
+ time_range: TimelineItemTimeRange
-"""
-The source of the asset
-"""
-enum AssetsSource {
- """
- Assets from file columns and item's files gallery
- """
- all
+ """The id of the custom activity of the timeline item."""
+ custom_activity_id: String!
+ ): TimelineItem
+ delete_timeline_item(
+ """The id of the timeline item to delete"""
+ id: String!
+ ): TimelineItem
+ create_custom_activity(
+ """The name of the custom activity"""
+ name: String!
- """
- Assets only from file columns
- """
- columns
+ """The icon of the custom activity"""
+ icon_id: CustomActivityIcon!
- """
- Assets only from item's files gallery
- """
- gallery
-}
+ """The color of the custom activity"""
+ color: CustomActivityColor!
+ ): CustomActivity
+ delete_custom_activity(
+ """The id of the custom activity"""
+ id: String!
+ ): CustomActivity
-"""
-Error that occurred while changing team owners.
-"""
-type AssignTeamOwnersError {
- """
- The error message.
- """
- message: String
+ """Create managed column of type dropdown mutation."""
+ create_dropdown_managed_column(
+ """The column title."""
+ title: String!
- """
- The error code.
- """
- code: AssignTeamOwnersErrorCode
+ """The column description."""
+ description: String
+ settings: CreateDropdownColumnSettingsInput
+ ): DropdownManagedColumn
- """
- The id of the user that caused the error.
- """
- user_id: ID
-}
+ """Create managed column of type status mutation."""
+ create_status_managed_column(
+ """The column title."""
+ title: String!
-"""
-Error codes that can occur while changing team owners.
-"""
-enum AssignTeamOwnersErrorCode {
- VIEWERS_OR_GUESTS
- USER_NOT_MEMBER_OF_TEAM
- EXCEEDS_BATCH_LIMIT
- INVALID_INPUT
- USER_NOT_FOUND
- CANNOT_UPDATE_SELF
- FAILED
-}
+ """The column description."""
+ description: String
+ settings: CreateStatusColumnSettingsInput
+ ): StatusManagedColumn
-"""
-Result of changing the team's ownership.
-"""
-type AssignTeamOwnersResult {
- """
- The team for which the owners were changed.
- """
- team: Team
+ """Update managed column of type dropdown mutation."""
+ update_dropdown_managed_column(
+ """The column id."""
+ id: String!
- """
- Errors that occurred while changing team owners.
- """
- errors: [AssignTeamOwnersError!]
-}
+ """The column title."""
+ title: String
-"""
-The role of the user.
-"""
-enum BaseRoleName {
- PORTAL_USER
- GUEST
- VIEW_ONLY
- MEMBER
- ADMIN
-}
+ """The column description."""
+ description: String
+ settings: UpdateDropdownColumnSettingsInput
-"""
-Result of an batch operation
-"""
-type BatchExtendTrialPeriod {
- """
- Details of operations
- """
- details: [ExtendTrialPeriod!]
+ """The column revision."""
+ revision: Int!
+ ): DropdownManagedColumn
- """
- Reason of an error
- """
- reason: String
+ """Update managed column of type status mutation."""
+ update_status_managed_column(
+ """The column id."""
+ id: String!
- """
- Result of a batch operation
- """
- success: Boolean!
-}
+ """The column title."""
+ title: String
-"""
-A monday.com board.
-"""
-type Board {
- """
- The unique identifier of the board.
- """
- id: ID!
+ """The column description."""
+ description: String
+ settings: UpdateStatusColumnSettingsInput
- """
- The board's updates.
- """
- updates(
- """
- Number of items to get, the default is 25.
- """
- limit: Int = 25
+ """The column revision."""
+ revision: Int!
+ ): StatusManagedColumn
- """
- Page number to get, starting at 1.
- """
- page: Int = 1
+ """Activate managed column mutation."""
+ activate_managed_column(
+ """The column id."""
+ id: String!
+ ): ManagedColumn
- """
- A list of items unique identifiers.
- """
- ids: [ID!]
- ): [Update!]
+ """Deactivate managed column mutation."""
+ deactivate_managed_column(
+ """The column id."""
+ id: String!
+ ): ManagedColumn
- """
- The board log events.
- """
- activity_logs(
- """
- Column ids to filter
- """
- column_ids: [String]
+ """Delete managed column mutation."""
+ delete_managed_column(
+ """The column id."""
+ id: String!
+ ): ManagedColumn
+ grant_marketplace_app_discount(
+ """The id of an app"""
+ app_id: ID!
- """
- From timestamp (ISO8601)
- """
- from: ISO8601DateTime
+ """Slug of an account"""
+ account_slug: String!
+ data: GrantMarketplaceAppDiscountData!
+ ): GrantMarketplaceAppDiscountResult!
+ delete_marketplace_app_discount(
+ """The id of an app"""
+ app_id: ID!
- """
- Group ids to filter
- """
- group_ids: [String]
+ """Slug of an account"""
+ account_slug: String!
+ ): DeleteMarketplaceAppDiscountResult!
- """
- Item id to filter
- """
- item_ids: [ID!]
+ """Add a file to a column value."""
+ add_file_to_column(
+ """The column to add the file to."""
+ column_id: String!
- """
- Number of items to get, the default is 25.
- """
- limit: Int = 25
+ """The file to upload."""
+ file: File!
- """
- Page number to get, starting at 1.
- """
- page: Int = 1
+ """The item to add the file to."""
+ item_id: ID!
+ ): Asset
- """
- To timestamp (ISO8601)
- """
- to: ISO8601DateTime
+ """Add a file to an update."""
+ add_file_to_update(
+ """The file to upload."""
+ file: File!
- """
- User ids to filter.
- """
- user_ids: [ID!]
- ): [ActivityLogType]
+ """The update to add the file to."""
+ update_id: ID!
+ ): Asset
- """
- The board's folder unique identifier.
- """
- board_folder_id: ID
+ """Add subscribers to a board."""
+ add_subscribers_to_board(
+ """The board's unique identifier."""
+ board_id: ID!
- """
- The board's kind (public / private / share).
- """
- board_kind: BoardKind!
+ """Subscribers kind (subscriber / owner)"""
+ kind: BoardSubscriberKind = subscriber
- """
- The board's visible columns.
- """
- columns(
- """
- A list of column unique identifiers.
- """
- ids: [String]
+ """User ids to subscribe to a board"""
+ user_ids: [ID!]!
+ ): [User] @deprecated(reason: "use add_users_to_board instead")
- """
- A list of column types.
- """
- types: [ColumnType!]
- ): [Column]
+ """Add teams subscribers to a board."""
+ add_teams_to_board(
+ """The board's unique identifier."""
+ board_id: ID!
- """
- The board's columns namespace.
- """
- columns_namespace: String
+ """Subscribers kind (subscriber / owner)"""
+ kind: BoardSubscriberKind = subscriber
- """
- Get the board communication value - typically meeting ID
- """
- communication: JSON
+ """Team ids to subscribe to a board"""
+ team_ids: [ID!]!
+ ): [Team]
- """
- The creator of the board.
- """
- creator: User!
+ """Add teams to a workspace."""
+ add_teams_to_workspace(
+ """Subscribers kind (subscriber / owner)"""
+ kind: WorkspaceSubscriberKind = subscriber
- """
- The board's description.
- """
- description: String
+ """Team ids to subscribe to a workspace"""
+ team_ids: [ID!]!
- """
- The board's visible groups.
- """
- groups(
- """
- A list of group unique identifiers.
- """
- ids: [String]
- ): [Group]
+ """The workspace's unique identifier."""
+ workspace_id: ID!
+ ): [Team]
- """
- The Board's item nickname, one of a predefined set of values, or a custom user value
- """
- item_terminology: String
+ """Add subscribers to a board."""
+ add_users_to_board(
+ """The board's unique identifier."""
+ board_id: ID!
- """
- The number of items on the board
- """
- items_count: Int
+ """Subscribers kind (subscriber / owner)"""
+ kind: BoardSubscriberKind = subscriber
- """
- The maximum number of items this board can have
- """
- items_limit: Int
+ """User ids to subscribe to a board"""
+ user_ids: [ID!]!
+ ): [User]
- """
- The board's items (rows).
- """
- items_page(
- """
- An opaque token representing the position in the result set from which to
- resume fetching items. Use this to paginate through large result sets.
- """
- cursor: String
+ """Add users to team."""
+ add_users_to_team(
+ """The team's unique identifier."""
+ team_id: ID!
- """
- The maximum number of items to fetch in a single request. Use this to
- control the size of the result set and manage pagination. Maximum: 500.
- """
- limit: Int! = 25
+ """User ids to add to/remove from the team"""
+ user_ids: [ID!]!
+ ): ChangeTeamMembershipsResult
- """
- A set of parameters to filter, sort, and control the scope of the items
- query. Use this to customize the results based on specific criteria.
- """
- query_params: ItemsQuery
- ): ItemsResponse!
+ """Add users to a workspace."""
+ add_users_to_workspace(
+ """Subscribers kind (subscriber / owner)"""
+ kind: WorkspaceSubscriberKind = subscriber
- """
- The board's name.
- """
- name: String!
+ """User ids to subscribe to a workspace"""
+ user_ids: [ID!]!
- """
- The owner of the board.
- """
- owner: User!
- @deprecated(reason: "This field returned creator of the board. Please use 'creator' or 'owners' fields instead.")
+ """The workspace's unique identifier."""
+ workspace_id: ID!
+ ): [User]
- """
- List of user board owners
- """
- owners: [User]!
+ """Archive a board."""
+ archive_board(
+ """The board's unique identifier"""
+ board_id: ID!
+ ): Board
- """
- The board's permissions.
- """
- permissions: String!
+ """Archives a group in a specific board."""
+ archive_group(
+ """The board's unique identifier."""
+ board_id: ID!
- """
- The board's state (all / active / archived / deleted).
- """
- state: State!
+ """The group's unique identifier."""
+ group_id: String!
+ ): Group
- """
- The board's subscribers.
- """
- subscribers: [User]!
+ """Archive an item."""
+ archive_item(
+ """The item's unique identifier."""
+ item_id: ID
+ ): Item
- """
- The board's specific tags.
- """
- tags: [Tag]
+ """Extends trial period of an application to selected accounts"""
+ batch_extend_trial_period(
+ """The accounts' slags. Max: 5"""
+ account_slugs: [String!]!
- """
- List of team board owners
- """
- team_owners(
- """
- Number of items to get, the default is 25.
- """
- limit: Int = 25
+ """The id of an application."""
+ app_id: ID!
- """
- Page number to get, starting at 1.
- """
- page: Int = 1
- ): [Team!]
+ """The amount of days to extend a trial period. Max: 365"""
+ duration_in_days: Int!
- """
- The board's team subscribers.
- """
- team_subscribers(
- """
- Number of items to get, the default is 25.
- """
- limit: Int = 25
+ """The id of a payment plan."""
+ plan_id: String!
+ ): BatchExtendTrialPeriod
+
+ """Change a column's properties"""
+ change_column_metadata(
+ """The board's unique identifier."""
+ board_id: ID!
+
+ """The column's unique identifier."""
+ column_id: String!
+
+ """The property name of the column to be changed (title / description)."""
+ column_property: ColumnProperty
+
+ """The new description of the column."""
+ value: String
+ ): Column
+
+ """Change a column's title"""
+ change_column_title(
+ """The board's unique identifier."""
+ board_id: ID!
+
+ """The column's unique identifier."""
+ column_id: String!
+
+ """The new title of the column."""
+ title: String!
+ ): Column
+
+ """Change an item's column value."""
+ change_column_value(
+ """The board's unique identifier."""
+ board_id: ID!
+
+ """The column's unique identifier."""
+ column_id: String!
"""
- Page number to get, starting at 1.
+ Create Status/Dropdown labels if they're missing. (Requires permission to change board structure)
"""
- page: Int = 1
- ): [Team!]
+ create_labels_if_missing: Boolean
- """
- The top group at this board.
- """
- top_group: Group!
+ """The item's unique identifier."""
+ item_id: ID
- """
- The board object type.
- """
- type: BoardObjectType
+ """The new value of the column."""
+ value: JSON!
+ ): Item
- """
- The last time the board was updated at.
- """
- updated_at: ISO8601DateTime
+ """Changes the column values of a specific item."""
+ change_multiple_column_values(
+ """The board's unique identifier."""
+ board_id: ID!
- """
- The Board's url
- """
- url: String!
+ """The column values updates."""
+ column_values: JSON!
- """
- The board's views.
- """
- views(
"""
- A list of view unique identifiers.
+ Create Status/Dropdown labels if they're missing. (Requires permission to change board structure)
"""
- ids: [ID!]
+ create_labels_if_missing: Boolean
+
+ """The item's unique identifier."""
+ item_id: ID
+ ): Item
+
+ """Change an item's column with simple value."""
+ change_simple_column_value(
+ """The board's unique identifier."""
+ board_id: ID!
+
+ """The column's unique identifier."""
+ column_id: String!
"""
- The view's type
+ Create Status/Dropdown labels if they're missing. (Requires permission to change board structure)
"""
- type: String
- ): [BoardView]
+ create_labels_if_missing: Boolean
- """
- The workspace that contains this board (null for main workspace).
- """
- workspace: Workspace
+ """The item's unique identifier."""
+ item_id: ID
- """
- The board's workspace unique identifier (null for main workspace).
- """
- workspace_id: ID
-}
+ """The new simple value of the column (pass null to empty the column)."""
+ value: String
+ ): Item
-"""
-The board attributes available.
-"""
-enum BoardAttributes {
- """
- Object that contains available Video conferences on the board.
- """
- communication
+ """Clear an item's updates."""
+ clear_item_updates(
+ """The item's unique identifier."""
+ item_id: ID!
+ ): Item
- """
- Board description.
- """
- description
+ """Get the complexity data of your mutations."""
+ complexity: Complexity
- """
- Board name.
- """
- name
-}
+ """Create a new board."""
+ create_board(
+ """The board's kind (public / private / share)"""
+ board_kind: BoardKind!
-"""
-A board duplication
-"""
-type BoardDuplication {
- """
- The new board created by the duplication
- """
- board: Board!
+ """The board's name"""
+ board_name: String!
- """
- Was the board duplication performed asynchronously
- """
- is_async: Boolean!
-}
+ """Optional board owner user ids"""
+ board_owner_ids: [ID!]
-"""
-The board kinds available.
-"""
-enum BoardKind {
- """
- Private boards.
- """
- private
+ """Optional board owner team ids"""
+ board_owner_team_ids: [ID!]
- """
- Public boards.
- """
- public
+ """Optional board subscriber ids"""
+ board_subscriber_ids: [ID!]
- """
- Shareable boards.
- """
- share
-}
+ """Optional list of subscriber team ids"""
+ board_subscriber_teams_ids: [ID!]
-"""
-The board object types.
-"""
-enum BoardObjectType {
- """
- Parent Board.
- """
- board
+ """Optional board's description"""
+ description: String
- """
- Custom Object.
- """
- custom_object
+ """Optional flag to create an empty board (without any default items)"""
+ empty: Boolean = false
- """
- Document.
- """
- document
+ """Optional board folder id"""
+ folder_id: ID
- """
- Sub Items Board.
- """
- sub_items_board
-}
+ """Optional board template id"""
+ template_id: ID
-type BoardRelationValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
- column: Column!
+ """Optional workspace id"""
+ workspace_id: ID
+ ): Board
- """
- A string representing all the names of the linked items, separated by commas
- """
- display_value: String!
+ """Create a new column in board."""
+ create_column(
+ """
+ The column's unique identifier after which the new column will be inserted.
+ """
+ after_column_id: ID
- """
- The column's unique identifier.
- """
- id: ID!
+ """The board's unique identifier."""
+ board_id: ID!
- """
- The linked items IDs
- """
- linked_item_ids: [ID!]!
+ """The type of column to create."""
+ column_type: ColumnType!
- """
- The linked items.
- """
- linked_items: [Item!]!
+ """The new column's defaults."""
+ defaults: JSON
- """
- Text representation of the column value. Note: Not all columns support textual value
- """
- text: String
+ """The new column's description."""
+ description: String
- """
- The column's type.
- """
- type: ColumnType!
+ """The column's user-specified unique identifier."""
+ id: String
- """
- The date when column value was last updated.
- """
- updated_at: Date
+ """The new column's title."""
+ title: String!
+ ): Column
- """
- The column's raw value in JSON format.
- """
- value: JSON
-}
+ """Create a new doc."""
+ create_doc(
+ """new monday doc location"""
+ location: CreateDocInput!
+ ): Document
-"""
-Options to order by.
-"""
-enum BoardsOrderBy {
- """
- The rank order of the board creation time (desc).
- """
- created_at
+ """Create new document block"""
+ create_doc_block(
+ """
+ After which block to insert this one. If not provided, will be inserted first in the document
+ """
+ after_block_id: String
- """
- The last time the user making the request used the board (desc).
- """
- used_at
-}
+ """The block's content."""
+ content: JSON!
-"""
-The board subscriber kind.
-"""
-enum BoardSubscriberKind {
- """
- Board owner.
- """
- owner
+ """The doc's unique identifier."""
+ doc_id: ID!
- """
- Board subscriber.
- """
- subscriber
-}
+ """The parent block id to append the created block under."""
+ parent_block_id: String
-"""
-A board's view.
-"""
-type BoardView {
- """
- The view's unique identifier.
- """
- id: ID!
+ """The block's content type."""
+ type: DocBlockContentType!
+ ): DocumentBlock
- """
- The view's name.
- """
- name: String!
+ """Creates a folder in a specific workspace."""
+ create_folder(
+ """The folder's color."""
+ color: FolderColor
- """
- The view's settings in a string form.
- """
- settings_str: String!
+ """The folder's custom icon."""
+ custom_icon: FolderCustomIcon
- """
- The view's template id if it was duplicated from other view
- """
- source_view_id: ID
+ """The folder's font weight."""
+ font_weight: FolderFontWeight
- """
- The view's type.
- """
- type: String!
+ """The folder's name"""
+ name: String!
- """
- Specific board view data (supported only for forms)
- """
- view_specific_data_str: String!
-}
+ """The folder's parent folder unique identifier."""
+ parent_folder_id: ID
-type ButtonValue implements ColumnValue {
- """
- The button's color in hex value.
- """
- color: String
+ """The unique identifier of the workspace to create this folder in"""
+ workspace_id: ID
+ ): Folder
- """
- The column that this value belongs to.
- """
- column: Column!
+ """Creates a new group in a specific board."""
+ create_group(
+ """The board's unique identifier."""
+ board_id: ID!
- """
- The column's unique identifier.
- """
- id: ID!
+ """A hex representing the group's color"""
+ group_color: String
- """
- The button's label.
- """
- label: String
- text: String
+ """The name of the new group."""
+ group_name: String!
- """
- The column's type.
- """
- type: ColumnType!
+ """
+ The group's position in the board. DEPRECATED! Replaced with relative position (position_relative_method, relative_to)
+ """
+ position: String
- """
- The column's raw value in JSON format.
- """
- value: JSON
-}
+ """The position relative method to another group (before_at / after_at)"""
+ position_relative_method: PositionRelative
-"""
-The result of adding users to / removing users from a team.
-"""
-type ChangeTeamMembershipsResult {
- """
- The users that team membership update failed for
- """
- failed_users: [User!]
+ """The group to set the position next to."""
+ relative_to: String
+ ): Group
- """
- The users that team membership update succeeded for
- """
- successful_users: [User!]
-}
+ """Create a new item."""
+ create_item(
+ """The board's unique identifier."""
+ board_id: ID!
-type CheckboxValue implements ColumnValue {
- """
- The column's boolean value.
- """
- checked: Boolean
+ """The column values of the new item."""
+ column_values: JSON
- """
- The column that this value belongs to.
- """
- column: Column!
+ """
+ Create Status/Dropdown labels if they're missing. (Requires permission to change board structure)
+ """
+ create_labels_if_missing: Boolean
- """
- The column's unique identifier.
- """
- id: ID!
- text: String
+ """The group's unique identifier."""
+ group_id: String
- """
- The column's type.
- """
- type: ColumnType!
+ """The new item's name."""
+ item_name: String!
- """
- The date when column value was last updated.
- """
- updated_at: Date
- value: JSON
-}
+ """The position relative method to another item (before_at / after_at)"""
+ position_relative_method: PositionRelative
-type ColorPickerValue implements ColumnValue {
- """
- The color in hex value.
- """
- color: String
+ """The item to set the position next to."""
+ relative_to: ID
+ ): Item
- """
- The column that this value belongs to.
- """
- column: Column!
+ """Create a new notification."""
+ create_notification(
+ """The target's unique identifier."""
+ target_id: ID!
- """
- The column's unique identifier.
- """
- id: ID!
- text: String
+ """The target's type (Project / Post)"""
+ target_type: NotificationTargetType!
- """
- The column's type.
- """
- type: ColumnType!
+ """The notification text."""
+ text: String!
- """
- The date when column value was last updated.
- """
- updated_at: Date
+ """The user's unique identifier."""
+ user_id: ID!
+ ): Notification
- """
- The column's raw value in JSON format.
- """
- value: JSON
-}
+ """Create a new tag or get it if it already exists."""
+ create_or_get_tag(
+ """
+ The private board id to create the tag at (not needed for public boards)
+ """
+ board_id: ID
-type Column {
- """
- Is the column archived or not.
- """
- archived: Boolean!
+ """The new tag's name."""
+ tag_name: String
+ ): Tag
- """
- The column's description.
- """
- description: String
+ """Create subitem."""
+ create_subitem(
+ """The column values of the new item."""
+ column_values: JSON
- """
- The column's unique identifier.
- """
- id: ID!
+ """
+ Create Status/Dropdown labels if they're missing. (Requires permission to change board structure)
+ """
+ create_labels_if_missing: Boolean
- """
- The column's settings in a string form.
- """
- settings_str: String!
+ """The new item's name."""
+ item_name: String!
- """
- The column's title.
- """
- title: String!
+ """The parent item's unique identifier."""
+ parent_item_id: ID!
+ ): Item
- """
- The column's type.
- """
- type: ColumnType!
+ """Create a new webhook."""
+ create_webhook(
+ """The board's unique identifier."""
+ board_id: ID!
- """
- The column's width.
- """
- width: Int
-}
+ """The webhook config"""
+ config: JSON
-"""
-An object defining a mapping of column between source board and destination board
-"""
-input ColumnMappingInput {
- """
- The source column's unique identifier.
- """
- source: ID!
+ """The event to listen to"""
+ event: WebhookEventType!
- """
- The target column's unique identifier.
- """
- target: ID
-}
+ """The webhook URL."""
+ url: String!
+ ): Webhook
-"""
-The property name of the column to be changed.
-"""
-enum ColumnProperty {
- """
- the column description.
- """
- description
+ """Create a new workspace."""
+ create_workspace(
+ """The account product's id"""
+ account_product_id: ID
- """
- the column title.
- """
- title
-}
+ """The Workspace's description"""
+ description: String
-union ColumnSettings = StatusColumnSettings | DropdownColumnSettings
+ """The workspace's kind (open / closed)"""
+ kind: WorkspaceKind!
-"""
-The columns to create.
-"""
-enum ColumnType {
- """
- Number items according to their order in the group/board
- """
- auto_number
+ """The Workspace's name"""
+ name: String!
+ ): Workspace
- """
- Connect data from other boards
- """
- board_relation
+ """Delete a board."""
+ delete_board(
+ """The board's unique identifier"""
+ board_id: ID!
+ ): Board
- """
- Perform actions on items by clicking a button
- """
- button
+ """Delete a column."""
+ delete_column(
+ """The board's unique identifier."""
+ board_id: ID!
- """
- Check off items and see what's done at a glance
- """
- checkbox
+ """The column's unique identifier."""
+ column_id: String!
+ ): Column
- """
- Manage a design system using a color palette
- """
- color_picker
+ """Delete a document block"""
+ delete_doc_block(
+ """The block's unique identifier."""
+ block_id: String!
+ ): DocumentBlockIdOnly
- """
- Choose a country
- """
- country
+ """Deletes a folder in a specific workspace."""
+ delete_folder(
+ """The folder's unique identifier."""
+ folder_id: ID!
+ ): Folder
- """
- Add the item's creator and creation date automatically
- """
- creation_log
+ """Deletes a group in a specific board."""
+ delete_group(
+ """The board's unique identifier."""
+ board_id: ID!
- """
- Add dates like deadlines to ensure you never drop the ball
- """
- date
+ """The group's unique identifier."""
+ group_id: String!
+ ): Group
- """
- Set up dependencies between items in the board
- """
- dependency
+ """Delete an item."""
+ delete_item(
+ """The item's unique identifier."""
+ item_id: ID
+ ): Item
- """
- Document your work and increase collaboration
- """
- direct_doc
+ """Remove subscribers from the board."""
+ delete_subscribers_from_board(
+ """The board's unique identifier."""
+ board_id: ID!
- """
- Document your work and increase collaboration
- """
- doc
+ """User ids to unsubscribe from a board"""
+ user_ids: [ID!]!
+ ): [User]
- """
- Create a dropdown list of options
- """
- dropdown
+ """Remove team subscribers from the board."""
+ delete_teams_from_board(
+ """The board's unique identifier"""
+ board_id: ID!
- """
- Email team members and clients directly from your board
- """
- email
+ """Team ids to unsubscribe from a workspace"""
+ team_ids: [ID!]!
+ ): [Team]
- """
- Add files & docs to your item
- """
- file
+ """Delete teams from a workspace."""
+ delete_teams_from_workspace(
+ """Team ids to unsubscribe from a workspace"""
+ team_ids: [ID!]!
- """
- Use functions to manipulate data across multiple columns
- """
- formula
- group
+ """The workspace's unique identifier."""
+ workspace_id: ID!
+ ): [Team]
- """
- Add times to manage and schedule tasks, shifts and more
- """
- hour
+ """Delete users from a workspace."""
+ delete_users_from_workspace(
+ """User ids to unsubscribe from a workspace"""
+ user_ids: [ID!]!
- """
- Integration is really cool...
- """
- integration
+ """The workspace's unique identifier."""
+ workspace_id: ID!
+ ): [User]
- """
- Show all item's assignees
- """
- item_assignees
+ """Delete a new webhook."""
+ delete_webhook(
+ """The webhook's unique identifier."""
+ id: ID!
+ ): Webhook
- """
- Show a unique ID for each item
- """
- item_id
+ """Delete workspace."""
+ delete_workspace(
+ """The workspace's unique identifier"""
+ workspace_id: ID!
+ ): Workspace
- """
- Add the person that last updated the item and the date
- """
- last_updated
+ """Duplicate a board."""
+ duplicate_board(
+ """The board's unique identifier."""
+ board_id: ID!
- """
- Simply hyperlink to any website
- """
- link
+ """Optional the new board's name. If omitted then automatically generated"""
+ board_name: String
- """
- Place multiple locations on a geographic map
- """
- location
+ """The duplication type."""
+ duplicate_type: DuplicateBoardType!
- """
- Add large amounts of text without changing column width
- """
- long_text
+ """
+ Optional destination folder in destination workspace. Defaults to the original board folder.
+ """
+ folder_id: ID
- """
- Show and edit columns' data from connected boards
- """
- mirror
+ """Duplicate the subscribers to the new board. Defaults to false."""
+ keep_subscribers: Boolean
- """
- Name is really cool...
- """
- name
+ """
+ Optional destination workspace. Defaults to the original board workspace.
+ """
+ workspace_id: ID
+ ): BoardDuplication
- """
- Add revenue, costs, time estimations and more
- """
- numbers
+ """Duplicate a group."""
+ duplicate_group(
+ """Should the new group be added to the top."""
+ add_to_top: Boolean
- """
- Assign people to improve team work
- """
- people
+ """The board's unique identifier."""
+ board_id: ID!
- """
- Assign a person to increase ownership and accountability (deprecated)
- """
- person
+ """The group's unique identifier."""
+ group_id: String!
- """
- Call your contacts directly from monday.com
- """
- phone
+ """The group's title."""
+ group_title: String
+ ): Group
- """
- Show progress by combining status columns in a battery
- """
- progress
+ """Duplicate an item."""
+ duplicate_item(
+ """The board's unique identifier."""
+ board_id: ID!
- """
- Rate or rank anything visually
- """
- rating
+ """The item's unique identifier. *Required"""
+ item_id: ID
- """
- Get an instant overview of where things stand
- """
- status
+ """Duplicate with the item's updates."""
+ with_updates: Boolean
+ ): Item
- """
- Use the subtasks column to create another level of tasks
- """
- subtasks
+ """Increase operations counter"""
+ increase_app_subscription_operations(
+ """Must be positive number."""
+ increment_by: Int = 1
- """
- Add tags to categorize items across multiple boards
- """
- tags
+ """
+ Operation name. A string of up to 14 characters containing alphanumeric characters and the symbols -_
+ """
+ kind: String = "global"
+ ): AppSubscriptionOperationsCounter
- """
- Assign a full team to an item
- """
- team
+ """Move an item to a different board."""
+ move_item_to_board(
+ """The unique identifier of a target board."""
+ board_id: ID!
- """
- Add textual information e.g. addresses, names or keywords
- """
- text
+ """Mapping of columns between the original board and target board"""
+ columns_mapping: [ColumnMappingInput!]
- """
- Easily track time spent on each item, group, and board
- """
- time_tracking
+ """The unique identifier of a target group."""
+ group_id: ID!
- """
- Visualize your item’s duration, with a start and end date
- """
- timeline
+ """The unique identifier of an item to move."""
+ item_id: ID!
- """
- Unsupported column type
- """
- unsupported
+ """Mapping of subitem columns between the original board and target board"""
+ subitems_columns_mapping: [ColumnMappingInput!]
+ ): Item
- """
- Vote on an item e.g. pick a new feature or a favorite lunch place
- """
- vote
+ """Move an item to a different group."""
+ move_item_to_group(
+ """The group's unique identifier."""
+ group_id: String!
- """
- Select the week on which each item should be completed
- """
- week
+ """The item's unique identifier."""
+ item_id: ID
+ ): Item
- """
- Keep track of the time anywhere in the world
- """
- world_clock
-}
+ """Remove mock app subscription for the current account"""
+ remove_mock_app_subscription(
+ """The app id of the app to remove the mocked subscription for."""
+ app_id: ID!
-interface ColumnValue {
- """
- The column that this value belongs to.
- """
- column: Column!
+ """The last 10 characters of the app's signing secret."""
+ partial_signing_secret: String!
+ ): AppSubscription
- """
- The column's unique identifier.
- """
- id: ID!
+ """Remove users from team."""
+ remove_users_from_team(
+ """The team's unique identifier."""
+ team_id: ID!
- """
- Text representation of the column value. Note: Not all columns support textual value
- """
- text: String
+ """User ids to add to/remove from the team"""
+ user_ids: [ID!]!
+ ): ChangeTeamMembershipsResult
- """
- The column's type.
- """
- type: ColumnType!
+ """Set mock app subscription for the current account"""
+ set_mock_app_subscription(
+ """The app id of the app to mock subscription for."""
+ app_id: ID!
- """
- The column's raw value in JSON format.
- """
- value: JSON
-}
+ """Billing period [monthly/yearly]"""
+ billing_period: String
-scalar CompareValue
+ """Is the subscription a trial"""
+ is_trial: Boolean
-"""
-Complexity data.
-"""
-type Complexity {
- """
- The remainder of complexity after the query's execution.
- """
- after: Int!
+ """Maximum number of units for the mocked plan"""
+ max_units: Int
- """
- The remainder of complexity before the query's execution.
- """
- before: Int!
+ """The last 10 characters of the app's signing secret."""
+ partial_signing_secret: String!
- """
- The specific query's complexity.
- """
- query: Int!
+ """The plan id for the mocked plan"""
+ plan_id: String
- """
- How long in seconds before the complexity budget is reset
- """
- reset_in_x_seconds: Int!
-}
+ """Pricing plans version"""
+ pricing_version: Int
-type Country {
- """
- The country's two-letter code.
- """
- code: String!
+ """The subscription renewal date"""
+ renewal_date: Date
+ ): AppSubscription
- """
- The country's name.
- """
- name: String!
-}
+ """Update item column value by existing assets"""
+ update_assets_on_item(
+ """The board's unique identifier."""
+ board_id: ID!
-type CountryValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
- column: Column!
+ """The column's unique identifier."""
+ column_id: String!
- """
- The country value.
- """
- country: Country
+ """Array of files values."""
+ files: [FileInput!]!
- """
- The column's unique identifier.
- """
- id: ID!
+ """The item's unique identifier."""
+ item_id: ID!
+ ): Item
- """
- Text representation of the column value. Note: Not all columns support textual value
- """
- text: String
+ """Update Board attribute."""
+ update_board(
+ """The board's attribute to update (name / description / communication)"""
+ board_attribute: BoardAttributes!
- """
- The column's type.
- """
- type: ColumnType!
+ """The board's unique identifier"""
+ board_id: ID!
- """
- The date when column value was last updated.
- """
- updated_at: Date
+ """The new attribute value."""
+ new_value: String!
+ ): JSON
- """
- The column's raw value in JSON format.
- """
- value: JSON
-}
+ """Update a document block"""
+ update_doc_block(
+ """The block's unique identifier."""
+ block_id: String!
-input CreateDocBoardInput {
- """
- Column id
- """
- column_id: String!
+ """The block's content."""
+ content: JSON!
+ ): DocumentBlock
- """
- Item id
- """
- item_id: ID!
-}
+ """Updates a folder."""
+ update_folder(
+ """The folder's color."""
+ color: FolderColor
-input CreateDocInput {
- board: CreateDocBoardInput
- workspace: CreateDocWorkspaceInput
-}
+ """The folder's custom icon."""
+ custom_icon: FolderCustomIcon
-input CreateDocWorkspaceInput {
- """
- Optional board folder id
- """
- folder_id: ID
+ """The folder's unique identifier"""
+ folder_id: ID!
- """
- The doc's kind (public / private / share)
- """
- kind: BoardKind
+ """The folder's font weight."""
+ font_weight: FolderFontWeight
- """
- The doc's name
- """
- name: String!
+ """The folder's name"""
+ name: String
- """
- Workspace id
- """
- workspace_id: ID!
-}
+ """The folder's parent folder."""
+ parent_folder_id: ID
+ ): Folder
-input CreateDropdownColumnSettingsInput {
- labels: [CreateDropdownLabelInput!]!
-}
+ """Update an existing group."""
+ update_group(
+ """The board's unique identifier."""
+ board_id: ID!
-input CreateDropdownLabelInput {
- label: String!
-}
+ """
+ The groups's attribute to update (title / color / position / relative_position_after / relative_position_before)
+ """
+ group_attribute: GroupAttributes!
-input CreateStatusColumnSettingsInput {
- labels: [CreateStatusLabelInput!]!
-}
+ """The Group's unique identifier."""
+ group_id: String!
-input CreateStatusLabelInput {
- label: String!
- color: StatusColumnColors!
- index: Int!
- description: String
- is_done: Boolean
-}
+ """The new attribute value."""
+ new_value: String!
+ ): Group
-"""
-Attributes of the team to be created.
-"""
-input CreateTeamAttributesInput {
- """
- The team's name.
- """
- name: String!
+ """Update an existing workspace."""
+ update_workspace(
+ """The attributes of the workspace to update"""
+ attributes: UpdateWorkspaceAttributesInput!
- """
- Whether the team can contain guest users.
- """
- is_guest_team: Boolean
+ """The workspace ID."""
+ id: ID
+ ): Workspace
- """
- The parent team identifier.
- """
- parent_team_id: ID
+ """Use a template"""
+ use_template(
+ """The board's kind (public / private / share)"""
+ board_kind: BoardKind
- """
- The team members. Must not be empty, unless allow_empty_team is set.
- """
- subscriber_ids: [ID!]
-}
+ """Optional board owner user ids"""
+ board_owner_ids: [Int]
-"""
-Options for creating a team.
-"""
-input CreateTeamOptionsInput {
- """
- Whether to allow a team without any subscribers.
- """
- allow_empty_team: Boolean
-}
+ """Optional board owner team ids"""
+ board_owner_team_ids: [Int]
-type CreationLogValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
- column: Column!
+ """Optional board subscriber ids"""
+ board_subscriber_ids: [Int]
- """
- The date when the item was created.
- """
- created_at: Date!
+ """Optional list of subscriber team ids"""
+ board_subscriber_teams_ids: [Int]
- """
- User who created the item
- """
- creator: User!
+ """
+ The callback URL to send the workspace, boards and dashboards IDs result, after its completed in the background
+ """
+ callback_url_on_complete: String
- """
- ID of the user who created the item
- """
- creator_id: ID!
+ """The folder ID to duplicate the template to."""
+ destination_folder_id: Int
- """
- The column's unique identifier.
- """
- id: ID!
- text: String
+ """
+ The folder name to duplicate the template to, in case of multiple boards template
+ """
+ destination_folder_name: String
- """
- The column's type.
- """
- type: ColumnType!
+ """The name of the instance"""
+ destination_name: String
- """
- The column's raw value in JSON format.
- """
- value: JSON
-}
+ """
+ The workspace ID to duplicate the template to, If not defined, it will be created in Main Workspace
+ """
+ destination_workspace_id: Int
-type CustomActivity {
- id: ID
- type: String
- name: String
- icon_id: CustomActivityIcon
- color: CustomActivityColor
-}
+ """Skips target folder creation in multiple entities templates"""
+ skip_target_folder_creation: Boolean
-enum CustomActivityColor {
- VIVID_CERULEAN
- GO_GREEN
- PHILIPPINE_GREEN
- YANKEES_BLUE
- CELTIC_BLUE
- MEDIUM_TURQUOISE
- CORNFLOWER_BLUE
- MAYA_BLUE
- SLATE_BLUE
- GRAY
- YELLOW_GREEN
- DINGY_DUNGEON
- PARADISE_PINK
- BRINK_PINK
- YELLOW_ORANGE
- LIGHT_DEEP_PINK
- LIGHT_HOT_PINK
- PHILIPPINE_YELLOW
-}
+ """Optional adding extra options"""
+ solution_extra_options: JSON
-enum CustomActivityIcon {
- ASCENDING
- CAMERA
- CONFERENCE
- FLAG
- GIFT
- HEADPHONES
- HOMEKEYS
- LOCATION
- PAPERPLANE
- PLANE
- NOTEBOOK
- PLIERS
- TRIPOD
- TWOFLAGS
- UTENCILS
-}
+ """The template ID"""
+ template_id: Int!
+ ): Template
-"""
-The custom fields meta data for user profile.
-"""
-type CustomFieldMetas {
- """
- The custom field meta's description.
- """
- description: String
+ """Connect project to portfolio"""
+ connect_project_to_portfolio(
+ """The ID of the project to connect"""
+ projectBoardId: ID!
- """
- Is the custom field meta editable or not.
- """
- editable: Boolean
+ """The ID of the portfolio to connect to"""
+ portfolioBoardId: ID!
+ ): ConnectProjectResult
- """
- The custom field meta's type.
- """
- field_type: String
+ """Creates a new team."""
+ create_team(input: CreateTeamAttributesInput!, options: CreateTeamOptionsInput): Team
- """
- Is the custom field meta flagged or not.
- """
- flagged: Boolean
+ """Activates the specified users."""
+ activate_users(
+ """The ids of the users to activate. (Limit: 200)"""
+ user_ids: [ID!]!
+ ): ActivateUsersResult
- """
- The custom field meta's icon.
- """
- icon: String
+ """Deactivates the specified users."""
+ deactivate_users(
+ """The ids of the users to deactivate. (Limit: 200)"""
+ user_ids: [ID!]!
+ ): DeactivateUsersResult
- """
- The custom field meta's unique identifier.
- """
- id: String
+ """Deletes the specified team."""
+ delete_team(
+ """The team to be deleted."""
+ team_id: ID!
+ ): Team
- """
- The custom field meta's position in the user profile page.
- """
- position: String
+ """Updates the role of the specified users."""
+ update_users_role(
+ """The ids of the users to update. (Limit: 200)"""
+ user_ids: [ID!]!
- """
- The custom field meta's title.
- """
- title: String
-}
+ """The base role name (e.g. admin, member, etc.)"""
+ new_role: BaseRoleName
-"""
-A custom field value for user profile.
-"""
-type CustomFieldValue {
- """
- The custom field value's meta unique identifier.
- """
- custom_field_meta_id: String
+ """The ID of a custom role"""
+ role_id: ID
+ ): UpdateUsersRoleResult
- """
- The custom field value.
- """
- value: String
-}
+ """Assigns the specified users as owners of the specified team."""
+ assign_team_owners(
+ """The team identifier."""
+ team_id: ID!
-"""
-API usage data.
-"""
-type DailyAnalytics {
- """
- Last time the API usage data was updated.
- """
- last_updated: ISO8601DateTime
+ """The user identifiers (max 200)"""
+ user_ids: [ID!]!
+ ): AssignTeamOwnersResult
- """
- API usage per day.
- """
- by_day: [PlatformApiDailyAnalyticsByDay!]!
+ """Removes the specified users as owners of the specified team."""
+ remove_team_owners(
+ """The team identifier."""
+ team_id: ID!
- """
- API usage per app.
- """
- by_app: [PlatformApiDailyAnalyticsByApp!]!
+ """The user identifiers (max 200)"""
+ user_ids: [ID!]!
+ ): RemoveTeamOwnersResult
- """
- API usage per user.
- """
- by_user: [PlatformApiDailyAnalyticsByUser!]!
-}
+ """Updates the email domain for the specified users."""
+ update_email_domain(input: UpdateEmailDomainAttributesInput!): UpdateEmailDomainResult
-"""
-Platform API daily limit.
-"""
-type DailyLimit {
- """
- Base daily limit.
- """
- base: Int
+ """Updates attributes for users."""
+ update_multiple_users(
+ """List of user updates, each containing an ID and attribute updates."""
+ user_updates: [UserUpdateInput!]!
- """
- Total daily limit.
- """
- total: Int
+ """Whether to bypass email confirmation for claimed domains."""
+ bypass_confirmation_for_claimed_domains: Boolean
+ ): UpdateUserAttributesResult
+
+ """Invite users to the account."""
+ invite_users(
+ """The emails of the users to invite."""
+ emails: [String!]!
+
+ """The new role of the users."""
+ user_role: UserRole
+
+ """The product to invite the users to"""
+ product: Product
+ ): InviteUsersResult
}
-"""
-A date.
-"""
+"""A date."""
scalar Date
-type DateValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
- column: Column!
-
- """
- The column's date value.
- """
- date: String
+"""An ISO 8601-encoded datetime (e.g., 2024-04-09T13:45:30Z)"""
+scalar ISO8601DateTime
- """
- The string representation of selected icon.
- """
- icon: String
+"""A JSON formatted string."""
+scalar JSON
- """
- The column's unique identifier.
- """
+"""A monday.com board."""
+type Board {
+ """The unique identifier of the board."""
id: ID!
- """
- The formatted date and time in user time zone.
- """
- text: String
+ """The board's updates."""
+ updates(
+ """Number of items to get, the default is 25."""
+ limit: Int = 25
- """
- The column's time value.
- """
- time: String
+ """Page number to get, starting at 1."""
+ page: Int = 1
- """
- The column's type.
- """
- type: ColumnType!
+ """A list of items unique identifiers."""
+ ids: [ID!]
+ ): [Update!]
- """
- The date when column value was last updated.
- """
- updated_at: Date
+ """The board log events."""
+ activity_logs(
+ """Column ids to filter"""
+ column_ids: [String]
- """
- The column's raw value in JSON format.
- """
- value: JSON
-}
+ """From timestamp (ISO8601)"""
+ from: ISO8601DateTime
-"""
-Error that occurred during deactivation.
-"""
-type DeactivateUsersError {
- """
- The error message.
- """
- message: String
+ """Group ids to filter"""
+ group_ids: [String]
- """
- The error code.
- """
- code: DeactivateUsersErrorCode
+ """Item id to filter"""
+ item_ids: [ID!]
- """
- The id of the user that caused the error.
- """
- user_id: ID
-}
+ """Number of items to get, the default is 25."""
+ limit: Int = 25
-"""
-Error codes for deactivating users.
-"""
-enum DeactivateUsersErrorCode {
- EXCEEDS_BATCH_LIMIT
- INVALID_INPUT
- USER_NOT_FOUND
- CANNOT_UPDATE_SELF
- FAILED
-}
+ """Page number to get, starting at 1."""
+ page: Int = 1
-"""
-Result of deactivating users.
-"""
-type DeactivateUsersResult {
- """
- The users that were deactivated.
- """
- deactivated_users: [User!]
+ """To timestamp (ISO8601)"""
+ to: ISO8601DateTime
- """
- Errors that occurred during deactivation.
- """
- errors: [DeactivateUsersError!]
-}
+ """User ids to filter."""
+ user_ids: [ID!]
+ ): [ActivityLogType]
-type DeleteMarketplaceAppDiscount {
- """
- Slug of an account
- """
- account_slug: String!
+ """The board's folder unique identifier."""
+ board_folder_id: ID
- """
- The id of an app
- """
- app_id: ID!
-}
+ """The board's kind (public / private / share)."""
+ board_kind: BoardKind!
-type DeleteMarketplaceAppDiscountResult {
- deleted_discount: DeleteMarketplaceAppDiscount!
-}
+ """The board's visible columns."""
+ columns(
+ """A list of column unique identifiers."""
+ ids: [String]
-type DependencyValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
- column: Column!
+ """A list of column types."""
+ types: [ColumnType!]
+ ): [Column]
- """
- A string representing all the names of the linked items, separated by commas
- """
- display_value: String!
+ """The board's columns namespace."""
+ columns_namespace: String
- """
- The column's unique identifier.
- """
- id: ID!
+ """Get the board communication value - typically meeting ID"""
+ communication: JSON
- """
- The linked items ids
- """
- linked_item_ids: [ID!]!
+ """The creator of the board."""
+ creator: User!
- """
- The linked items.
- """
- linked_items: [Item!]!
+ """The board's description."""
+ description: String
- """
- Text representation of the column value. Note: Not all columns support textual value
- """
- text: String
+ """The board's visible groups."""
+ groups(
+ """A list of group unique identifiers."""
+ ids: [String]
+ ): [Group]
"""
- The column's type.
+ The Board's item nickname, one of a predefined set of values, or a custom user value
"""
- type: ColumnType!
+ item_terminology: String
- """
- The date when column value was last updated.
- """
- updated_at: Date
+ """The number of items on the board"""
+ items_count: Int
- """
- The column's raw value in JSON format.
- """
- value: JSON
-}
+ """The maximum number of items this board can have"""
+ items_limit: Int
-"""
-The period of a discount
-"""
-enum DiscountPeriod {
- MONTHLY
- YEARLY
-}
+ """The board's items (rows)."""
+ items_page(
+ """
+ An opaque token representing the position in the result set from which to
+ resume fetching items. Use this to paginate through large result sets.
+ """
+ cursor: String
-"""
-Various documents blocks types, such as text.
-"""
-enum DocBlockContentType {
- """
- Bulleted list block
- """
- bulleted_list
+ """
+ The maximum number of items to fetch in a single request. Use this to
+ control the size of the result set and manage pagination. Maximum: 500.
+ """
+ limit: Int! = 25
- """
- Check list block
- """
- check_list
+ """
+ A set of parameters to filter, sort, and control the scope of the items
+ query. Use this to customize the results based on specific criteria.
+ """
+ query_params: ItemsQuery
+ ): ItemsResponse!
- """
- Code block
- """
- code
+ """The board's name."""
+ name: String!
- """
- Divider block
- """
- divider
+ """The owner of the board."""
+ owner: User! @deprecated(reason: "This field returned creator of the board. Please use 'creator' or 'owners' fields instead.")
- """
- Image block
- """
- image
+ """List of user board owners"""
+ owners: [User]!
- """
- Large title block
- """
- large_title
+ """The board's permissions."""
+ permissions: String!
- """
- Layout block
- """
- layout
+ """The board's state (all / active / archived / deleted)."""
+ state: State!
- """
- Medium title block
- """
- medium_title
+ """The board's subscribers."""
+ subscribers: [User]!
- """
- Simple text block
- """
- normal_text
+ """The board's specific tags."""
+ tags: [Tag]
- """
- Notice block
- """
- notice_box
+ """List of team board owners"""
+ team_owners(
+ """Number of items to get, the default is 25."""
+ limit: Int = 25
- """
- Numbered list block
- """
- numbered_list
+ """Page number to get, starting at 1."""
+ page: Int = 1
+ ): [Team!]
- """
- Page break block
- """
- page_break
+ """The board's team subscribers."""
+ team_subscribers(
+ """Number of items to get, the default is 25."""
+ limit: Int = 25
- """
- Quote text block
- """
- quote
+ """Page number to get, starting at 1."""
+ page: Int = 1
+ ): [Team!]
- """
- Small title block
- """
- small_title
+ """The top group at this board."""
+ top_group: Group!
- """
- Table block
- """
- table
+ """The board object type."""
+ type: BoardObjectType
- """
- Video block
- """
- video
-}
+ """The last time the board was updated at."""
+ updated_at: ISO8601DateTime
-"""
-Options to order by.
-"""
-enum DocsOrderBy {
- """
- The rank order of the document creation time (desc).
- """
- created_at
+ """The Board's url"""
+ url: String!
- """
- The last time the user making the request viewd the document (desc).
- """
- used_at
+ """The board's views."""
+ views(
+ """A list of view unique identifiers."""
+ ids: [ID!]
+
+ """The view's type"""
+ type: String
+ ): [BoardView]
+
+ """The workspace that contains this board (null for main workspace)."""
+ workspace: Workspace
+
+ """The board's workspace unique identifier (null for main workspace)."""
+ workspace_id: ID
}
-"""
-A monday.com document.
-"""
-type Document {
- """
- The document's content blocks
- """
- blocks(
- """
- Number of items to get, the default is 25.
- """
+"""An item (table row)."""
+type Item {
+ """The item's unique identifier."""
+ id: ID!
+
+ """The item's updates."""
+ updates(
+ """Number of items to get, the default is 25."""
limit: Int = 25
- """
- Page number to get, starting at 1.
- """
+ """Page number to get, starting at 1."""
page: Int = 1
- ): [DocumentBlock]
- """
- The document's creation date.
- """
+ """A list of items unique identifiers."""
+ ids: [ID!]
+ ): [Update!]
+
+ """The item's assets/files."""
+ assets(
+ """The assets source (all / columns / gallery)"""
+ assets_source: AssetsSource
+
+ """Ids of the columns you want to get assets from."""
+ column_ids: [String]
+ ): [Asset]
+
+ """The board that contains this item."""
+ board: Board
+
+ """The item's column values."""
+ column_values(
+ """A list of column ids to return"""
+ ids: [String!]
+
+ """A list of column types to return"""
+ types: [ColumnType!]
+ ): [ColumnValue!]!
+
+ """The item's create date."""
created_at: Date
- """
- The document's creator
- """
- created_by: User
+ """The item's creator."""
+ creator: User
- """
- The document's folder unique identifier (null for first level).
- """
- doc_folder_id: ID
+ """The unique identifier of the item creator."""
+ creator_id: String!
- """
- The document's kind (public / private / share).
- """
- doc_kind: BoardKind!
+ """The item's email."""
+ email: String!
- """
- The document's unique identifier.
- """
- id: ID!
+ """The group that contains this item."""
+ group: Group
- """
- The document's name.
- """
+ """The item's linked items"""
+ linked_items(
+ """The id of the link to item column"""
+ link_to_item_column_id: String!
+
+ """The id of the linked board"""
+ linked_board_id: ID!
+ ): [Item!]!
+
+ """The item's name."""
name: String!
- """
- The associated board or object's unique identifier.
- """
- object_id: ID!
+ """The parent item of a subitem."""
+ parent_item: Item
- """
- The document's relative url
- """
- relative_url: String
+ """The item's relative path"""
+ relative_link: String
- """
- The document's settings.
- """
- settings: JSON
+ """The item's state (all / active / archived / deleted)."""
+ state: State
- """
- The document's direct url
- """
- url: String
+ """The item's subitems."""
+ subitems: [Item]
- """
- The workspace that contains this document (null for main workspace).
- """
- workspace: Workspace
+ """The pulses's subscribers."""
+ subscribers: [User]!
- """
- The document's workspace unique identifier (null for main workspace).
- """
- workspace_id: ID
-}
+ """The item's last update date."""
+ updated_at: Date
-"""
-A monday.com document block.
-"""
-type DocumentBlock {
- """
- The block's content.
- """
- content: JSON
+ """The item's link"""
+ url: String!
+}
- """
- The block's creation date.
- """
+type Like {
+ id: ID!
+ creator_id: String
+ creator: User
+ reaction_type: String
created_at: Date
+ updated_at: Date
+}
- """
- The block's creator
- """
- created_by: User
+"""A reply for an update."""
+type Reply {
+ """The reply's unique identifier."""
+ id: ID!
- """
- The block's document unique identifier.
- """
- doc_id: ID
+ """The reply's html formatted body."""
+ body: String!
+ kind: String!
- """
- The block's unique identifier.
- """
- id: String!
+ """The unique identifier of the reply creator."""
+ creator_id: String
+ edited_at: Date!
- """
- The block's parent block unique identifier.
- """
- parent_block_id: String
+ """The reply's creator."""
+ creator: User
+ likes: [Like!]!
+ pinned_to_top: [UpdatePin!]!
+ viewers(
+ """Number of items to get, the default is 100."""
+ limit: Int = 100
- """
- The block's position on the document.
- """
- position: Float
+ """Page number to get, starting at 1."""
+ page: Int = 1
+ ): [Watcher!]!
- """
- The block content type.
- """
- type: String
+ """The reply's creation date."""
+ created_at: Date
- """
- The block's last updated date.
- """
+ """The reply's last edit date."""
updated_at: Date
-}
-"""
-A monday.com doc block.
-"""
-type DocumentBlockIdOnly {
- """
- The block's unique identifier.
- """
- id: String!
+ """The reply's text body."""
+ text_body: String
}
-type DocValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
- column: Column!
+"""An update."""
+type Update {
+ """The update's unique identifier."""
+ id: ID!
- """
- The document file attached to the column.
- """
- file: FileDocValue
+ """The update's html formatted body."""
+ body: String!
- """
- The column's unique identifier.
- """
- id: ID!
+ """The unique identifier of the update creator."""
+ creator_id: String
+ edited_at: Date!
- """
- Text representation of the column value. Note: Not all columns support textual value
- """
- text: String
-
- """
- The column's type.
- """
- type: ColumnType!
-
- """
- The column's raw value in JSON format.
- """
- value: JSON
-}
-
-type DropdownColumnSettings {
- type: ManagedColumnTypes
- labels: [DropdownLabel!]
-}
+ """The update's creator."""
+ creator: User
+ likes: [Like!]!
+ pinned_to_top: [UpdatePin!]!
+ viewers(
+ """Number of items to get, the default is 100."""
+ limit: Int = 100
-type DropdownLabel {
- id: Int
- label: String
- is_deactivated: Boolean
-}
+ """Page number to get, starting at 1."""
+ page: Int = 1
+ ): [Watcher!]!
-type DropdownManagedColumn {
- id: String
- title: String
- description: String
- settings_json: JSON
- created_by: Int
- updated_by: Int
- revision: Int
- state: ManagedColumnState
+ """The update's creation date."""
created_at: Date
- updated_at: Date
- settings: DropdownColumnSettings
-}
-type DropdownValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
- column: Column!
+ """The update's last edit date."""
+ updated_at: Date
- """
- The column's unique identifier.
- """
- id: ID!
- text: String
+ """The update's item ID."""
+ item_id: String
+ item: Item
- """
- The column's type.
- """
- type: ColumnType!
+ """The update's replies."""
+ replies: [Reply!]
- """
- The column's raw value in JSON format.
- """
- value: JSON
+ """The update's assets/files."""
+ assets: [Asset]
- """
- The selected dropdown values.
- """
- values: [DropdownValueOption!]!
+ """The update's text body."""
+ text_body: String
}
-type DropdownValueOption {
- """
- The dropdown item's unique identifier.
- """
- id: ID!
-
- """
- The dropdown item's label.
- """
- label: String!
+"""The pin to top data of the update."""
+type UpdatePin {
+ item_id: ID!
}
-"""
-The board duplicate types available.
-"""
-enum DuplicateBoardType {
- """
- Duplicate board with structure and items.
- """
- duplicate_board_with_pulses
+"""A monday.com user."""
+type User {
+ """The user's unique identifier."""
+ id: ID!
- """
- Duplicate board with structure, items and updates.
- """
- duplicate_board_with_pulses_and_updates
+ """The user's account."""
+ account: Account!
- """
- Duplicate board with structure.
- """
- duplicate_board_with_structure
-}
+ """The products the user is assigned to."""
+ account_products: [AccountProduct!]
-type EmailValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
- column: Column!
+ """The user's birthday."""
+ birthday: Date
- """
- The column's email value.
- """
- email: String
+ """The user's country code."""
+ country_code: String
- """
- The column's unique identifier.
- """
- id: ID!
+ """The user's creation date."""
+ created_at: Date
- """
- The column's text value. It can be the same as email when user didn't enter any text.
- """
- label: String
+ """The current user's language"""
+ current_language: String
- """
- Text representation of the column value. Note: Not all columns support textual value
- """
- text: String
+ """The custom field metas of the user profile."""
+ custom_field_metas: [CustomFieldMetas]
- """
- The column's type.
- """
- type: ColumnType!
+ """The custom field values of the user profile."""
+ custom_field_values: [CustomFieldValue]
- """
- The date when column value was last updated.
- """
- updated_at: Date
+ """The user's email."""
+ email: String!
- """
- The column's raw value in JSON format.
- """
- value: JSON
-}
+ """Is the user enabled or not."""
+ enabled: Boolean!
-"""
-Result of a single operation
-"""
-type ExtendTrialPeriod {
- """
- Account slug
- """
- account_slug: String!
+ """The token of the user for email to board."""
+ encrypt_api_token: String
- """
- Reason of an error
- """
- reason: String
+ """Is the user an account admin."""
+ is_admin: Boolean
- """
- Result of a single operation
- """
- success: Boolean!
-}
+ """Is the user a guest or not."""
+ is_guest: Boolean
-"""
-A multipart file
-"""
-scalar File
+ """Is the user a pending user"""
+ is_pending: Boolean
-type FileAssetValue {
- """
- The asset associated with the file.
- """
- asset: Asset!
+ """Is user verified his email."""
+ is_verified: Boolean
- """
- The asset's id.
- """
- asset_id: ID!
+ """Is the user a view only user or not."""
+ is_view_only: Boolean
- """
- The file's creation date.
- """
- created_at: Date!
+ """The date the user joined the account."""
+ join_date: Date
- """
- The user who created the file.
- """
- creator: User
+ """Last date & time when user was active"""
+ last_activity: Date
- """
- The ID of user who created the file.
- """
- creator_id: ID
+ """The user's location."""
+ location: String
- """
- Whether the file is an image.
- """
- is_image: Boolean!
+ """The user's mobile phone number."""
+ mobile_phone: String
- """
- The file's name.
- """
+ """The user's name."""
name: String!
-}
-"""
-The type of a link value stored inside a file column
-"""
-enum FileColumnValue {
- """
- Asset file
- """
- asset
+ """The user's out of office status."""
+ out_of_office: OutOfOffice
- """
- Box file
- """
- box
+ """The user's phone number."""
+ phone: String
- """
- Doc file
- """
- doc
+ """The user's photo in the original size."""
+ photo_original: String
- """
- Dropbox file
- """
- dropbox
+ """The user's photo in small size (150x150)."""
+ photo_small: String
- """
- Google Drive file
- """
- google_drive
+ """The user's photo in thumbnail size (100x100)."""
+ photo_thumb: String
- """
- Generic link file
- """
- link
+ """The user's photo in small thumbnail size (50x50)."""
+ photo_thumb_small: String
- """
- OneDrive file
- """
- onedrive
-}
+ """The user's photo in tiny size (30x30)."""
+ photo_tiny: String
-type FileDocValue {
- """
- The file's creation date.
- """
- created_at: Date!
+ """The product to which the user signed up to first."""
+ sign_up_product_kind: String
- """
- The user who created the file.
- """
- creator: User
+ """The teams the user is a member in."""
+ teams(
+ """A list of teams unique identifiers."""
+ ids: [ID!]
+ ): [Team]
- """
- The ID of user who created the file.
- """
- creator_id: ID
+ """The user's timezone identifier."""
+ time_zone_identifier: String
- """
- The doc associated with the file.
- """
- doc: Document!
+ """The user's title."""
+ title: String
- """
- The file's unique identifier.
- """
- file_id: ID!
+ """The user's profile url."""
+ url: String!
- """
- The associated board or object's unique identifier.
- """
- object_id: ID!
+ """The user’s utc hours difference."""
+ utc_hours_diff: Int
+ greeting: String
+}
- """
- The file's url.
- """
- url: String
+"""The viewer of the update."""
+type Watcher {
+ user_id: ID!
+ medium: String!
+ user: User
}
-input FileInput {
- """
- The asset's id.
- """
- assetId: ID
+type CustomActivity {
+ id: ID
+ type: String
+ name: String
+ icon_id: CustomActivityIcon
+ color: CustomActivityColor
+}
- """
- File kind
- """
- fileType: FileColumnValue!
-
- """
- File link
- """
- linkToFile: String
-
- """
- File display name
- """
- name: String!
-
- """
- The doc's id
- """
- objectId: ID
-}
-
-type FileLinkValue {
- """
- The file's creation date.
- """
- created_at: Date!
-
- """
- The user who created the file.
- """
- creator: User
-
- """
- The ID of user who created the file.
- """
- creator_id: ID
-
- """
- The file's id.
- """
- file_id: ID!
-
- """
- The file's kind.
- """
- kind: FileLinkValueKind!
-
- """
- The file's name.
- """
- name: String!
-
- """
- The file's url.
- """
- url: String
-}
-
-"""
-The type of a link value stored inside a file column
-"""
-enum FileLinkValueKind {
- """
- Box file
- """
- box
-
- """
- Dropbox file
- """
- dropbox
-
- """
- Google Drive file
- """
- google_drive
-
- """
- Generic link file
- """
- link
-
- """
- OneDrive file
- """
- onedrive
-}
-
-type FileValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
- column: Column!
-
- """
- The files attached to the column.
- """
- files: [FileValueItem!]!
-
- """
- The column's unique identifier.
- """
- id: ID!
- text: String
-
- """
- The column's type.
- """
- type: ColumnType!
-
- """
- The column's raw value in JSON format.
- """
- value: JSON
-}
-
-"""
-A single file in a column.
-"""
-union FileValueItem = FileAssetValue | FileDocValue | FileLinkValue
-
-"""
-The first day of work week
-"""
-enum FirstDayOfTheWeek {
- """
- Monday
- """
- monday
-
- """
- Sunday
- """
- sunday
-}
-
-"""
-A workspace folder containing boards, docs, sub folders, etc.
-"""
-type Folder {
- """
- The various items in the folder, not including sub-folders and dashboards.
- """
- children: [Board]!
-
- """
- The folder's color.
- """
- color: FolderColor
-
- """
- The folder's creation date.
- """
- created_at: Date!
-
- """
- The folder's custom icon.
- """
- custom_icon: FolderCustomIcon
-
- """
- The folder's font weight.
- """
- font_weight: FolderFontWeight
-
- """
- The folder's unique identifier.
- """
- id: ID!
-
- """
- The folder's name.
- """
- name: String!
-
- """
- The folder's user owner unique identifier.
- """
- owner_id: ID
-
- """
- The folder's parent folder.
- """
- parent: Folder
-
- """
- Sub-folders inside this folder.
- """
- sub_folders: [Folder]!
-
- """
- The workspace that contains this folder (null id for main workspace).
- """
- workspace: Workspace!
-}
-
-"""
-One value out of a list of valid folder colors
-"""
-enum FolderColor {
- """
- aquamarine
- """
- AQUAMARINE
-
- """
- bright-blue
- """
- BRIGHT_BLUE
-
- """
- bright-green
- """
- BRIGHT_GREEN
-
- """
- chili-blue
- """
- CHILI_BLUE
-
- """
- dark-orange
- """
- DARK_ORANGE
-
- """
- dark_purple
- """
- DARK_PURPLE
-
- """
- dark-red
- """
- DARK_RED
-
- """
- done-green
- """
- DONE_GREEN
-
- """
- indigo
- """
- INDIGO
-
- """
- lipstick
- """
- LIPSTICK
-
- """
- No color
- """
- NULL
-
- """
- purple
- """
- PURPLE
-
- """
- sofia_pink
- """
- SOFIA_PINK
-
- """
- stuck-red
- """
- STUCK_RED
-
- """
- sunset
- """
- SUNSET
-
- """
- working_orange
- """
- WORKING_ORANGE
-}
-
-"""
-One value out of a list of valid folder custom icons
-"""
-enum FolderCustomIcon {
- """
- Folder
- """
- FOLDER
-
- """
- MoreBelow
- """
- MOREBELOW
-
- """
- MoreBelowFilled
- """
- MOREBELOWFILLED
-
- """
- No custom icon
- """
- NULL
-
- """
- Work
- """
- WORK
-}
-
-"""
-One value out of a list of valid folder font weights
-"""
-enum FolderFontWeight {
- """
- font-weight-bold
- """
- FONT_WEIGHT_BOLD
-
- """
- font-weight-light
- """
- FONT_WEIGHT_LIGHT
-
- """
- font-weight-normal
- """
- FONT_WEIGHT_NORMAL
-
- """
- font-weight-very-light
- """
- FONT_WEIGHT_VERY_LIGHT
-
- """
- No font weight
- """
- NULL
+enum CustomActivityColor {
+ VIVID_CERULEAN
+ GO_GREEN
+ PHILIPPINE_GREEN
+ YANKEES_BLUE
+ CELTIC_BLUE
+ MEDIUM_TURQUOISE
+ CORNFLOWER_BLUE
+ MAYA_BLUE
+ SLATE_BLUE
+ GRAY
+ YELLOW_GREEN
+ DINGY_DUNGEON
+ PARADISE_PINK
+ BRINK_PINK
+ YELLOW_ORANGE
+ LIGHT_DEEP_PINK
+ LIGHT_HOT_PINK
+ PHILIPPINE_YELLOW
}
-type FormulaValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
- column: Column!
-
- """
- The column's unique identifier.
- """
- id: ID!
-
- """
- Text representation of the column value. Note: Not all columns support textual value
- """
- text: String
-
- """
- The column's type.
- """
- type: ColumnType!
-
- """
- The column's raw value in JSON format.
- """
- value: JSON
-
- """
- A string representing all the formula values, separated by commas
- """
- display_value: String!
+enum CustomActivityIcon {
+ ASCENDING
+ CAMERA
+ CONFERENCE
+ FLAG
+ GIFT
+ HEADPHONES
+ HOMEKEYS
+ LOCATION
+ PAPERPLANE
+ PLANE
+ NOTEBOOK
+ PLIERS
+ TRIPOD
+ TWOFLAGS
+ UTENCILS
}
-type GrantMarketplaceAppDiscount {
- """
- Number of days a discount will be valid
- """
- days_valid: Int!
-
- """
- Percentage value of a discount
- """
- discount: Int!
-
- """
- Is discount recurring
- """
- is_recurring: Boolean!
- period: DiscountPeriod
-
- """
- List of app plan ids
- """
- app_plan_ids: [String!]!
+type TimelineItem {
+ id: ID
+ type: String
- """
- The id of an app
- """
- app_id: ID!
-}
+ """The item that the timeline item is on."""
+ item: Item
-input GrantMarketplaceAppDiscountData {
- """
- Number of days a discount will be valid
- """
- days_valid: Int!
+ """The board that the timeline item is on."""
+ board: Board
- """
- Percentage value of a discount
- """
- discount: Int!
+ """The user who created the timeline item."""
+ user: User
- """
- Is discount recurring
- """
- is_recurring: Boolean!
+ """The title of the timeline item."""
+ title: String
- """
- The period of a discount
- """
- period: DiscountPeriod
+ """The external ID of the custom activity of the timeline item."""
+ custom_activity_id: String
- """
- List of app plan ids
- """
- app_plan_ids: [String!]!
-}
+ """The content of the timeline item."""
+ content: String
-type GrantMarketplaceAppDiscountResult {
- granted_discount: GrantMarketplaceAppDiscount!
+ """The creation date of the timeline item."""
+ created_at: Date!
}
-"""
-A group of items in a board.
-"""
-type Group {
- """
- Is the group archived or not.
- """
- archived: Boolean
+type TimelineItemsPage {
+ """The timeline items in the current page"""
+ timeline_items: [TimelineItem!]!
- """
- The group's color.
- """
- color: String!
+ """Cursor for fetching the next page"""
+ cursor: String
+}
- """
- Is the group deleted or not.
- """
- deleted: Boolean
+input TimelineItemTimeRange {
+ """Start time"""
+ start_timestamp: ISO8601DateTime!
- """
- The group's unique identifier.
- """
- id: ID!
+ """End time"""
+ end_timestamp: ISO8601DateTime!
+}
- """
- The items in the group.
- """
- items_page(
- """
- An opaque token representing the position in the result set from which to
- resume fetching items. Use this to paginate through large result sets.
- """
- cursor: String
+type TimelineResponse {
+ """Paginated set of timeline items and a cursor to get the next page"""
+ timeline_items_page(
+ """The cursor for the next set of timeline items"""
+ cursor: String = null
- """
- The maximum number of items to fetch in a single request. Use this to
- control the size of the result set and manage pagination. Maximum: 500.
- """
- limit: Int! = 25
+ """The limit for the current page of timeline items"""
+ limit: Int = 25
+ ): TimelineItemsPage!
+}
- """
- A set of parameters to filter, sort, and control the scope of the items
- query. Use this to customize the results based on specific criteria.
- """
- query_params: ItemsQuery
- ): ItemsResponse!
+union ColumnSettings = StatusColumnSettings | DropdownColumnSettings
- """
- The group's position in the board.
- """
- position: String!
+input CreateDropdownColumnSettingsInput {
+ labels: [CreateDropdownLabelInput!]!
+}
- """
- The group's title.
- """
- title: String!
+input CreateDropdownLabelInput {
+ label: String!
}
-"""
-The group attributes available.
-"""
-enum GroupAttributes {
- """
- Group color (one of the supported colors, check the API documentation).
- """
- color
+input CreateStatusColumnSettingsInput {
+ labels: [CreateStatusLabelInput!]!
+}
- """
- The group's position in the board. Deprecated! - replaced with relative position
- """
- position
+input CreateStatusLabelInput {
+ label: String!
+ color: StatusColumnColors!
+ index: Int!
+ description: String
+ is_done: Boolean
+}
- """
- The group's relative position after another group in the board.
- """
- relative_position_after
+type DropdownColumnSettings {
+ type: ManagedColumnTypes
+ labels: [DropdownLabel!]
+}
- """
- The group's relative position before another group in the board.
- """
- relative_position_before
+type DropdownLabel {
+ id: Int
+ label: String
+ is_deactivated: Boolean
+}
- """
- Group title.
- """
- title
+type DropdownManagedColumn {
+ id: String
+ title: String
+ description: String
+ settings_json: JSON
+ created_by: Int
+ updated_by: Int
+ revision: Int
+ state: ManagedColumnState
+ created_at: Date
+ updated_at: Date
+ settings: DropdownColumnSettings
}
-type GroupValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
- column: Column!
+type ManagedColumn {
+ id: String
+ title: String
+ description: String
+ settings_json: JSON
+ created_by: Int
+ updated_by: Int
+ revision: Int
+ state: ManagedColumnState
+ created_at: Date
+ updated_at: Date
+ settings: ColumnSettings
+}
- """
- The group value.
- """
- group: Group
+enum ManagedColumnState {
+ active
+ deleted
+ inactive
+}
- """
- The group identifier.
- """
- group_id: ID
+enum ManagedColumnTypes {
+ status
+ dropdown
+}
- """
- The column's unique identifier.
- """
- id: ID!
+enum StatusColumnColors {
+ working_orange
+ done_green
+ stuck_red
+ dark_blue
+ purple
+ explosive
+ grass_green
+ bright_blue
+ saladish
+ egg_yolk
+ blackish
+ dark_red
+ sofia_pink
+ lipstick
+ dark_purple
+ bright_green
+ chili_blue
+ american_gray
+ brown
+ dark_orange
+ sunset
+ bubble
+ peach
+ berry
+ winter
+ river
+ navy
+ aquamarine
+ indigo
+ dark_indigo
+ pecan
+ lavender
+ royal
+ steel
+ orchid
+ lilac
+ tan
+ sky
+ coffee
+ teal
+}
- """
- Text representation of the column value. Note: Not all columns support textual value
- """
- text: String
+type StatusColumnSettings {
+ type: ManagedColumnTypes
+ labels: [StatusLabel!]
+}
- """
- The column's type.
- """
- type: ColumnType!
+type StatusLabel {
+ id: Int
+ label: String
+ color: StatusColumnColors
+ index: Int
+ description: String
+ is_deactivated: Boolean
+ is_done: Boolean
+}
- """
- The column's raw value in JSON format.
- """
- value: JSON
+type StatusManagedColumn {
+ id: String
+ title: String
+ description: String
+ settings_json: JSON
+ created_by: Int
+ updated_by: Int
+ revision: Int
+ state: ManagedColumnState
+ created_at: Date
+ updated_at: Date
+ settings: StatusColumnSettings
}
-type HourValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
- column: Column!
+input UpdateDropdownColumnSettingsInput {
+ labels: [UpdateDropdownLabelInput!]!
+}
- """
- Hour
- """
- hour: Int
+input UpdateDropdownLabelInput {
+ label: String!
+ id: Int
+ is_deactivated: Boolean
+}
- """
- The column's unique identifier.
- """
- id: ID!
+input UpdateStatusColumnSettingsInput {
+ labels: [UpdateStatusLabelInput!]!
+}
- """
- Minute
- """
- minute: Int
- text: String
+input UpdateStatusLabelInput {
+ label: String!
+ color: StatusColumnColors!
+ index: Int!
+ description: String
+ is_done: Boolean
+ id: Int
+ is_deactivated: Boolean
+}
- """
- The column's type.
- """
- type: ColumnType!
+"""Subscription object"""
+type AppSubscriptionDetails {
+ """The ID of an account"""
+ account_id: Int!
- """
- The date when column value was last updated.
- """
- updated_at: Date
+ """The ID of a pricing plan"""
+ plan_id: String!
- """
- The column's raw value in JSON format.
- """
- value: JSON
-}
+ """The ID of a pricing version"""
+ pricing_version_id: Int!
-type IntegrationValue implements ColumnValue {
"""
- The column that this value belongs to.
+ The monthly price of the product purchased in the given currency, after applying discounts
"""
- column: Column!
+ monthly_price: Float!
- """
- ID of the entity
- """
- entity_id: ID
+ """The currency, in which the product was purchased"""
+ currency: String!
+ period_type: SubscriptionPeriodType!
"""
- The column's unique identifier.
+ The date the active subscription is set to renew. Equals to null for inactive subscriptions
"""
- id: ID!
+ renewal_date: String
"""
- URL of the issue
+ The date the the inactive subscription ended. Equals to null for active subscriptions
"""
- issue_api_url: ID
+ end_date: String
+ status: SubscriptionStatus!
+ discounts: [SubscriptionDiscount!]!
- """
- ID of the issue
- """
- issue_id: String
+ """The number of days left until the subscription ends"""
+ days_left: Int!
+}
- """
- Text representation of the column value. Note: Not all columns support textual value
- """
- text: String
+type AppSubscriptions {
+ subscriptions: [AppSubscriptionDetails!]!
- """
- The column's type.
- """
- type: ColumnType!
+ """Total number of subscriptions matching the given parameters"""
+ total_count: Int!
"""
- The column's raw value in JSON format.
+ The value, which identifies the exact point to continue fetching the subscriptions from
"""
- value: JSON
+ cursor: String
}
-"""
-Error that occurred while inviting users
-"""
-type InviteUsersError {
- """
- The error message.
- """
- message: String
+type DeleteMarketplaceAppDiscount {
+ """Slug of an account"""
+ account_slug: String!
- """
- The error code.
- """
- code: InviteUsersErrorCode
+ """The id of an app"""
+ app_id: ID!
+}
- """
- The email address for the user that caused the error.
- """
- email: ID
+type DeleteMarketplaceAppDiscountResult {
+ deleted_discount: DeleteMarketplaceAppDiscount!
}
-"""
-Error codes that can occur while changing email domain.
-"""
-enum InviteUsersErrorCode {
- ERROR
+"""The period of a discount"""
+enum DiscountPeriod {
+ MONTHLY
+ YEARLY
}
-"""
-Result of inviting users to the account.
-"""
-type InviteUsersResult {
- """
- The users that were successfully invited.
- """
- invited_users: [User!]
+type GrantMarketplaceAppDiscount {
+ """Number of days a discount will be valid"""
+ days_valid: Int!
- """
- Errors that occurred while inviting users
- """
- errors: [InviteUsersError!]
+ """Percentage value of a discount"""
+ discount: Int!
+
+ """Is discount recurring"""
+ is_recurring: Boolean!
+ period: DiscountPeriod
+
+ """List of app plan ids"""
+ app_plan_ids: [String!]!
+
+ """The id of an app"""
+ app_id: ID!
}
-"""
-An ISO 8601-encoded datetime (e.g., 2024-04-09T13:45:30Z)
-"""
-scalar ISO8601DateTime
+input GrantMarketplaceAppDiscountData {
+ """Number of days a discount will be valid"""
+ days_valid: Int!
-"""
-An item (table row).
-"""
-type Item {
- """
- The item's unique identifier.
- """
- id: ID!
+ """Percentage value of a discount"""
+ discount: Int!
- """
- The item's updates.
- """
- updates(
- """
- Number of items to get, the default is 25.
- """
- limit: Int = 25
+ """Is discount recurring"""
+ is_recurring: Boolean!
- """
- Page number to get, starting at 1.
- """
- page: Int = 1
+ """The period of a discount"""
+ period: DiscountPeriod
- """
- A list of items unique identifiers.
- """
- ids: [ID!]
- ): [Update!]
+ """List of app plan ids"""
+ app_plan_ids: [String!]!
+}
- """
- The item's assets/files.
- """
- assets(
- """
- The assets source (all / columns / gallery)
- """
- assets_source: AssetsSource
+type GrantMarketplaceAppDiscountResult {
+ granted_discount: GrantMarketplaceAppDiscount!
+}
- """
- Ids of the columns you want to get assets from.
- """
- column_ids: [String]
- ): [Asset]
+type MarketplaceAppDiscount {
+ """Slug of an account"""
+ account_slug: String!
- """
- The board that contains this item.
- """
- board: Board
+ """The ID of an account"""
+ account_id: ID!
- """
- The item's column values.
- """
- column_values(
- """
- A list of column ids to return
- """
- ids: [String!]
+ """Percentage value of a discount"""
+ discount: Int!
- """
- A list of column types to return
- """
- types: [ColumnType!]
- ): [ColumnValue!]!
+ """Is discount recurring"""
+ is_recurring: Boolean!
- """
- The item's create date.
- """
- created_at: Date
+ """List of app plan ids"""
+ app_plan_ids: [String!]!
+ period: DiscountPeriod
- """
- The item's creator.
- """
- creator: User
+ """Date until a discount is valid"""
+ valid_until: String!
- """
- The unique identifier of the item creator.
- """
- creator_id: String!
+ """Date when a discount was created"""
+ created_at: String!
+}
+"""The discounts granted to the subscription"""
+type SubscriptionDiscount {
"""
- The item's email.
+ The value of the discount in percentage (e.g. the value 80 refers to 80%)
"""
- email: String!
+ value: Int!
+ discount_model_type: SubscriptionDiscountModelType!
+ discount_type: SubscriptionDiscountType!
+}
- """
- The group that contains this item.
- """
- group: Group
+"""The information whether the discount is percentage or nominal"""
+enum SubscriptionDiscountModelType {
+ percent
+ nominal
+}
- """
- The item's linked items
- """
- linked_items(
- """
- The id of the link to item column
- """
- link_to_item_column_id: String!
+"""
+The information whether the discount has been granted one time or recurring
+"""
+enum SubscriptionDiscountType {
+ recurring
+ one_time
+}
- """
- The id of the linked board
- """
- linked_board_id: ID!
- ): [Item!]!
+"""
+The billing period of the subscription. Possible values: monthly, yearly
+"""
+enum SubscriptionPeriodType {
+ monthly
+ yearly
+}
- """
- The item's name.
- """
- name: String!
+"""The status of the subscription. Possible values: active, inactive."""
+enum SubscriptionStatus {
+ active
+ inactive
+}
- """
- The parent item of a subitem.
- """
- parent_item: Item
+type AppFeatureType {
+ id: ID!
+ created_at: Date
+ updated_at: Date
- """
- The item's relative path
- """
- relative_link: String
+ """The name of the app feature"""
+ name: String
- """
- The item's state (all / active / archived / deleted).
- """
- state: State
+ """The app feature app id"""
+ app_id: ID
- """
- The item's subitems.
- """
- subitems: [Item]
+ """The type of the app feature"""
+ type: String
- """
- The pulses's subscribers.
- """
- subscribers: [User]!
+ """The data of the app feature"""
+ data: JSON
+}
- """
- The item's last update date.
- """
+type AppType {
+ id: ID!
+ created_at: Date
updated_at: Date
- """
- The item's link
- """
- url: String!
-}
+ """the app name"""
+ name: String
-type ItemIdValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
- column: Column!
+ """the api app id"""
+ api_app_id: ID
- """
- The column's unique identifier.
- """
- id: ID!
+ """the api app id"""
+ client_id: String
- """
- ID of the item
- """
- item_id: ID!
- text: String
+ """the app kid"""
+ kind: String
- """
- The column's type.
- """
- type: ColumnType!
+ """the app state"""
+ state: String
- """
- The column's raw value in JSON format.
- """
- value: JSON
-}
+ """the app user id"""
+ user_id: ID
-"""
-The direction to order the items by
-"""
-enum ItemsOrderByDirection {
- """
- Ascending order
- """
- asc
+ """The apps' features"""
+ features(
+ """Number of items to get, the default is 25."""
+ limit: Int = 25
- """
- Descending order
- """
- desc
+ """Page number to get, starting at 1."""
+ page: Int = 1
+ ): [AppFeatureType!]
}
-input ItemsPageByColumnValuesQuery {
- """
- The column's unique identifier.
- """
- column_id: String!
+"""Your monday.com account"""
+type Account {
+ """The number of active member users in the account"""
+ active_members_count: Int
- """
- The column values to search items by.
- """
- column_values: [String]!
-}
+ """The account's country two-letter code in ISO3166 format"""
+ country_code: String
-input ItemsQuery {
- """
- A list of rule groups
- """
- groups: [ItemsQueryGroup!]
+ """The first day of the week for the account (sunday / monday)"""
+ first_day_of_the_week: FirstDayOfTheWeek!
- """
- A list of item IDs to fetch. Use this to fetch a specific set of items by their IDs. Max: 100 IDs
- """
- ids: [ID!]
+ """The account's unique identifier."""
+ id: ID!
- """
- The operator to use for the query rules or rule groups
- """
- operator: ItemsQueryOperator = and
- order_by: [ItemsQueryOrderBy!]
+ """The account's logo."""
+ logo: String
- """
- A list of rules
- """
- rules: [ItemsQueryRule!]
-}
+ """The account's name."""
+ name: String!
-input ItemsQueryGroup {
- """
- A list of rule groups
- """
- groups: [ItemsQueryGroup!]
+ """The account's payment plan."""
+ plan: Plan
- """
- The operator to use for the query rules or rule groups
- """
- operator: ItemsQueryOperator = and
+ """The account's active products"""
+ products: [AccountProduct]
- """
- A list of rules
- """
- rules: [ItemsQueryRule!]
-}
+ """Show weekends in timeline"""
+ show_timeline_weekends: Boolean!
-"""
-The condition between the query rules
-"""
-enum ItemsQueryOperator {
- """
- Logical AND
- """
- and
+ """The product the account signed up to first."""
+ sign_up_product_kind: String
- """
- Logical OR
- """
- or
-}
+ """The account's slug."""
+ slug: String!
-input ItemsQueryOrderBy {
- column_id: String!
- direction: ItemsOrderByDirection = asc
+ """The account's tier."""
+ tier: String
}
-input ItemsQueryRule {
- column_id: ID!
- compare_attribute: String
- compare_value: CompareValue!
- operator: ItemsQueryRuleOperator = any_of
-}
+"""The product a workspace is used in."""
+type AccountProduct {
+ """The account product default workspace id"""
+ default_workspace_id: ID
-"""
-The operator to use for the value comparison
-"""
-enum ItemsQueryRuleOperator {
- """
- Any of the values
- """
- any_of
+ """The account product id"""
+ id: ID
"""
- Between the two values
+ The account product kind (core / marketing / crm / software /
+ projectManagement / project_management / service / forms / whiteboard).
"""
- between
+ kind: String
+}
- """
- Contains all the terms
- """
- contains_terms
+"""An activity log event"""
+type ActivityLogType {
+ """"""
+ account_id: String!
- """
- Contains the text
- """
- contains_text
+ """"""
+ created_at: String!
- """
- Ends with the value
- """
- ends_with
+ """The item's column values in string form."""
+ data: String!
- """
- Greater than the value
- """
- greater_than
+ """"""
+ entity: String!
- """
- Greater than or equal to the value
- """
- greater_than_or_equals
+ """"""
+ event: String!
- """
- Empty value
- """
- is_empty
+ """"""
+ id: String!
- """
- Not empty value
- """
- is_not_empty
+ """"""
+ user_id: String!
+}
- """
- Lower than the value
- """
- lower_than
+"""An app install details."""
+type AppInstall {
+ """The app's unique identifier."""
+ app_id: ID!
- """
- Lower than or equal to the value
- """
- lower_than_or_equal
+ """An app installer's account details."""
+ app_install_account: AppInstallAccount!
- """
- None of the values
- """
- not_any_of
+ """An app installer's user details"""
+ app_install_user: AppInstallUser!
- """
- Does not contain the text
- """
- not_contains_text
+ """The app's version details"""
+ app_version: AppVersion
- """
- Starts with the value
- """
- starts_with
+ """The required and approved scopes for an app install."""
+ permissions: AppInstallPermissions
- """
- Within the last
- """
- within_the_last
+ """Installation date"""
+ timestamp: String
+}
- """
- Within the next
- """
- within_the_next
+"""An app installer's account details"""
+type AppInstallAccount {
+ """The app's installer account id."""
+ id: ID!
}
-type ItemsResponse {
- """
- An opaque cursor that represents the position in the list after the last
- returned item. Use this cursor for pagination to fetch the next set of items.
- If the cursor is null, there are no more items to fetch.
- """
- cursor: String
+"""The required and approved scopes for an app install."""
+type AppInstallPermissions {
+ """The scopes approved by the account admin"""
+ approved_scopes: [String!]!
+
+ """The scopes required by the latest live version"""
+ required_scopes: [String!]!
+}
+
+"""An app installer's user details"""
+type AppInstallUser {
+ """The app's installer user id."""
+ id: ID
+}
+"""The app monetization status for the current account"""
+type AppMonetizationStatus {
+ """Is apps monetization is supported for the account"""
+ is_supported: Boolean!
+}
+
+"""The app monetization information for the current account"""
+type AppsMonetizationInfo {
"""
- The items associated with the cursor.
+ The number of seats in the account, across all products, used to match the
+ app’s subscription among apps that utilize the seats-based monetization method
"""
- items: [Item!]!
+ seats_count: Int
}
-"""
-A JSON formatted string.
-"""
-scalar JSON
+"""The account subscription details for the app."""
+type AppSubscription {
+ """The type of the billing period [monthly/yearly]."""
+ billing_period: String
+
+ """The number of days left until the subscription ends."""
+ days_left: Int
+
+ """Is the subscription a trial"""
+ is_trial: Boolean
+
+ """Maximum number of units for current subscription plan."""
+ max_units: Int
-"""
-Kind of assignee
-"""
-enum Kind {
- """
- Represents a person
- """
- person
+ """The subscription plan id (on the app's side)."""
+ plan_id: String!
- """
- Represents a team
- """
- team
+ """The pricing version of subscription plan."""
+ pricing_version: Int
+
+ """The subscription renewal date."""
+ renewal_date: Date!
}
-type LastUpdatedValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
- column: Column!
+"""The Operations counter response for the app action."""
+type AppSubscriptionOperationsCounter {
+ """The account subscription details for the app."""
+ app_subscription: AppSubscription
- """
- The column's unique identifier.
- """
- id: ID!
- text: String
+ """The new counter value."""
+ counter_value: Int
- """
- The column's type.
- """
- type: ColumnType!
+ """Operations name."""
+ kind: String!
- """
- Timestamp of the last time the item was updated
- """
- updated_at: Date
+ """Window key."""
+ period_key: String
+}
- """
- User who updated the item
- """
- updater: User
+"""An app's version details."""
+type AppVersion {
+ """The app's major version."""
+ major: Int!
- """
- ID of the user who updated the item
- """
- updater_id: ID
+ """The app's minor version."""
+ minor: Int!
- """
- The column's raw value in JSON format.
- """
- value: JSON
+ """The app's patch version."""
+ patch: Int!
+
+ """The app's version text"""
+ text: String!
+
+ """The app's version type."""
+ type: String
}
-type Like {
- id: ID!
- creator_id: String
- creator: User
- reaction_type: String
+"""A file uploaded to monday.com"""
+type Asset {
+ """The file's creation date."""
created_at: Date
- updated_at: Date
-}
-type LinkValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
- column: Column!
+ """The file's extension."""
+ file_extension: String!
- """
- The column's unique identifier.
- """
+ """The file's size in bytes."""
+ file_size: Int!
+
+ """The file's unique identifier."""
id: ID!
- text: String
- """
- The column's type.
- """
- type: ColumnType!
+ """The file's name."""
+ name: String!
- """
- The date when column value was last updated.
- """
- updated_at: Date
+ """original geometry of the asset."""
+ original_geometry: String
- """
- Url
- """
- url: String
+ """public url to the asset, valid for 1 hour."""
+ public_url: String!
- """
- Url text
- """
- url_text: String
+ """The user who uploaded the file."""
+ uploaded_by: User!
- """
- The column's raw value in JSON format.
- """
- value: JSON
+ """url to view the asset."""
+ url: String!
+
+ """url to view the asset in thumbnail mode. Only available for images."""
+ url_thumbnail: String
}
-type LocationValue implements ColumnValue {
- """
- Address
- """
- address: String
+"""The source of the asset"""
+enum AssetsSource {
+ """Assets from file columns and item's files gallery"""
+ all
- """
- City
- """
- city: String
+ """Assets only from file columns"""
+ columns
- """
- City
- """
- city_short: String
+ """Assets only from item's files gallery"""
+ gallery
+}
- """
- The column that this value belongs to.
- """
- column: Column!
+"""Result of an batch operation"""
+type BatchExtendTrialPeriod {
+ """Details of operations"""
+ details: [ExtendTrialPeriod!]
- """
- Country
- """
- country: String
+ """Reason of an error"""
+ reason: String
- """
- Country short name (e.g. PE for Peru)
- """
- country_short: String
+ """Result of a batch operation"""
+ success: Boolean!
+}
- """
- The column's unique identifier.
- """
- id: ID!
+"""The board attributes available."""
+enum BoardAttributes {
+ """Object that contains available Video conferences on the board."""
+ communication
- """
- Latitude
- """
- lat: Float
+ """Board description."""
+ description
- """
- Longitude
- """
- lng: Float
+ """Board name."""
+ name
+}
- """
- Place ID of the location
- """
- place_id: String
+"""A board duplication"""
+type BoardDuplication {
+ """The new board created by the duplication"""
+ board: Board!
- """
- Street
- """
- street: String
+ """Was the board duplication performed asynchronously"""
+ is_async: Boolean!
+}
- """
- Number of building in the street
- """
- street_number: String
+"""The board kinds available."""
+enum BoardKind {
+ """Private boards."""
+ private
- """
- Short number of building in the street
- """
- street_number_short: String
+ """Public boards."""
+ public
- """
- Street
- """
- street_short: String
- text: String
+ """Shareable boards."""
+ share
+}
- """
- The column's type.
- """
- type: ColumnType!
+"""The board object types."""
+enum BoardObjectType {
+ """Parent Board."""
+ board
- """
- The date when column value was last updated.
- """
- updated_at: Date
+ """Custom Object."""
+ custom_object
- """
- The column's raw value in JSON format.
- """
- value: JSON
+ """Document."""
+ document
+
+ """Sub Items Board."""
+ sub_items_board
}
-type LongTextValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
+type BoardRelationValue implements ColumnValue {
+ """The column that this value belongs to."""
column: Column!
"""
- The column's unique identifier.
+ A string representing all the names of the linked items, separated by commas
"""
+ display_value: String!
+
+ """The column's unique identifier."""
id: ID!
+ """The linked items IDs"""
+ linked_item_ids: [ID!]!
+
+ """The linked items."""
+ linked_items: [Item!]!
+
"""
Text representation of the column value. Note: Not all columns support textual value
"""
text: String
- """
- The column's type.
- """
+ """The column's type."""
type: ColumnType!
- """
- The date when column value was last updated.
- """
+ """The date when column value was last updated."""
updated_at: Date
- """
- The column's raw value in JSON format.
- """
+ """The column's raw value in JSON format."""
value: JSON
}
-type ManagedColumn {
- id: String
- title: String
- description: String
- settings_json: JSON
- created_by: Int
- updated_by: Int
- revision: Int
- state: ManagedColumnState
- created_at: Date
- updated_at: Date
- settings: ColumnSettings
+"""Options to order by."""
+enum BoardsOrderBy {
+ """The rank order of the board creation time (desc)."""
+ created_at
+
+ """The last time the user making the request used the board (desc)."""
+ used_at
}
-enum ManagedColumnState {
- active
- deleted
- inactive
+"""The board subscriber kind."""
+enum BoardSubscriberKind {
+ """Board owner."""
+ owner
+
+ """Board subscriber."""
+ subscriber
}
-enum ManagedColumnTypes {
- status
- dropdown
+"""A board's view."""
+type BoardView {
+ """The view's unique identifier."""
+ id: ID!
+
+ """The view's name."""
+ name: String!
+
+ """The view's settings in a string form."""
+ settings_str: String!
+
+ """The view's template id if it was duplicated from other view"""
+ source_view_id: ID
+
+ """The view's type."""
+ type: String!
+
+ """Specific board view data (supported only for forms)"""
+ view_specific_data_str: String!
}
-type MarketplaceAppDiscount {
- """
- Slug of an account
- """
- account_slug: String!
+type ButtonValue implements ColumnValue {
+ """The button's color in hex value."""
+ color: String
- """
- The ID of an account
- """
- account_id: ID!
+ """The column that this value belongs to."""
+ column: Column!
- """
- Percentage value of a discount
- """
- discount: Int!
+ """The column's unique identifier."""
+ id: ID!
- """
- Is discount recurring
- """
- is_recurring: Boolean!
+ """The button's label."""
+ label: String
+ text: String
- """
- List of app plan ids
- """
- app_plan_ids: [String!]!
- period: DiscountPeriod
+ """The column's type."""
+ type: ColumnType!
- """
- Date until a discount is valid
- """
- valid_until: String!
+ """The column's raw value in JSON format."""
+ value: JSON
+}
- """
- Date when a discount was created
- """
- created_at: String!
+"""The result of adding users to / removing users from a team."""
+type ChangeTeamMembershipsResult {
+ """The users that team membership update failed for"""
+ failed_users: [User!]
+
+ """The users that team membership update succeeded for"""
+ successful_users: [User!]
}
-type MirroredItem {
- """
- The linked board.
- """
- linked_board: Board!
+type CheckboxValue implements ColumnValue {
+ """The column's boolean value."""
+ checked: Boolean
- """
- The linked board's unique identifier.
- """
- linked_board_id: ID!
+ """The column that this value belongs to."""
+ column: Column!
- """
- The linked item.
- """
- linked_item: Item!
+ """The column's unique identifier."""
+ id: ID!
+ text: String
- """
- The mirrored values.
- """
- mirrored_value: MirroredValue
+ """The column's type."""
+ type: ColumnType!
+
+ """The date when column value was last updated."""
+ updated_at: Date
+ value: JSON
}
-"""
-Represents a mirrored value (column value, group, or board).
-"""
-union MirroredValue =
- Board
- | BoardRelationValue
- | ButtonValue
- | CheckboxValue
- | ColorPickerValue
- | CountryValue
- | CreationLogValue
- | DateValue
- | DependencyValue
- | DocValue
- | DropdownValue
- | EmailValue
- | FileValue
- | FormulaValue
- | Group
- | GroupValue
- | HourValue
- | IntegrationValue
- | ItemIdValue
- | LastUpdatedValue
- | LinkValue
- | LocationValue
- | LongTextValue
- | MirrorValue
- | NumbersValue
- | PeopleValue
- | PersonValue
- | PhoneValue
- | ProgressValue
- | RatingValue
- | StatusValue
- | SubtasksValue
- | TagsValue
- | TeamValue
- | TextValue
- | TimeTrackingValue
- | TimelineValue
- | UnsupportedValue
- | VoteValue
- | WeekValue
- | WorldClockValue
+type ColorPickerValue implements ColumnValue {
+ """The color in hex value."""
+ color: String
-type MirrorValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
+ """The column that this value belongs to."""
column: Column!
- """
- A string representing all the names of the linked items, separated by commas
- """
- display_value: String!
+ """The column's unique identifier."""
+ id: ID!
+ text: String
- """
- The column's unique identifier.
- """
+ """The column's type."""
+ type: ColumnType!
+
+ """The date when column value was last updated."""
+ updated_at: Date
+
+ """The column's raw value in JSON format."""
+ value: JSON
+}
+
+type Column {
+ """Is the column archived or not."""
+ archived: Boolean!
+
+ """The column's description."""
+ description: String
+
+ """The column's unique identifier."""
id: ID!
- """
- The mirrored items.
- """
- mirrored_items: [MirroredItem!]!
+ """The column's settings in a string form."""
+ settings_str: String!
- """
- Text representation of the column value. Note: Not all columns support textual value
- """
- text: String
+ """The column's title."""
+ title: String!
- """
- The column's type.
- """
+ """The column's type."""
type: ColumnType!
- """
- The column's raw value in JSON format.
- """
- value: JSON
+ """The column's width."""
+ width: Int
}
"""
-Update your monday.com data.
+An object defining a mapping of column between source board and destination board
"""
-type Mutation {
- """
- Like an update.
- """
- like_update(
- """
- The update identifier.
- """
- update_id: ID!
- ): Update
- unlike_update(
- """
- The update identifier.
- """
- update_id: ID!
- ): Update!
+input ColumnMappingInput {
+ """The source column's unique identifier."""
+ source: ID!
- """
- Delete an update.
- """
- delete_update(
- """
- The update's unique identifier.
- """
- id: ID!
- ): Update
- edit_update(
- """
- The update's unique identifier.
- """
- id: ID!
+ """The target column's unique identifier."""
+ target: ID
+}
- """
- The update text.
- """
- body: String!
- ): Update!
- pin_to_top(
- """
- The update's unique identifier.
- """
- id: ID!
+"""The property name of the column to be changed."""
+enum ColumnProperty {
+ """the column description."""
+ description
- """
- The item unique identifier.
- """
- item_id: ID
- ): Update!
- unpin_from_top(
- """
- The update's unique identifier.
- """
- id: ID!
+ """the column title."""
+ title
+}
- """
- The item unique identifier.
- """
- item_id: ID
- ): Update!
+"""The columns to create."""
+enum ColumnType {
+ """Number items according to their order in the group/board"""
+ auto_number
- """
- Create a new update.
- """
- create_update(
- """
- The update text.
- """
- body: String!
+ """Connect data from other boards"""
+ board_relation
- """
- The item's unique identifier.
- """
- item_id: ID
+ """Perform actions on items by clicking a button"""
+ button
- """
- The parent post identifier.
- """
- parent_id: ID
- ): Update
- create_timeline_item(
- """
- The item the timeline item will be created in.
- """
- item_id: ID!
+ """Check off items and see what's done at a glance"""
+ checkbox
- """
- The user who created the timeline item. Only for account admins.
- """
- user_id: Int
+ """Manage a design system using a color palette"""
+ color_picker
- """
- The title of the timeline item.
- """
- title: String!
+ """Choose a country"""
+ country
- """
- The creation time of the event.
- """
- timestamp: ISO8601DateTime!
- summary: String
- content: String
+ """Add the item's creator and creation date automatically"""
+ creation_log
- """
- Location field value
- """
- location: String
+ """Add dates like deadlines to ensure you never drop the ball"""
+ date
- """
- Phone number field value
- """
- phone: String
+ """Set up dependencies between items in the board"""
+ dependency
- """
- URL field value
- """
- url: String
+ """Document your work and increase collaboration"""
+ direct_doc
- """
- The start and end time of the new timeline item.
- """
- time_range: TimelineItemTimeRange
+ """Document your work and increase collaboration"""
+ doc
- """
- The id of the custom activity of the timeline item.
- """
- custom_activity_id: String!
- ): TimelineItem
- delete_timeline_item(
- """
- The id of the timeline item to delete
- """
- id: String!
- ): TimelineItem
- create_custom_activity(
- """
- The name of the custom activity
- """
- name: String!
+ """Create a dropdown list of options"""
+ dropdown
- """
- The icon of the custom activity
- """
- icon_id: CustomActivityIcon!
+ """Email team members and clients directly from your board"""
+ email
- """
- The color of the custom activity
- """
- color: CustomActivityColor!
- ): CustomActivity
- delete_custom_activity(
- """
- The id of the custom activity
- """
- id: String!
- ): CustomActivity
+ """Add files & docs to your item"""
+ file
- """
- Create managed column of type dropdown mutation.
- """
- create_dropdown_managed_column(
- """
- The column title.
- """
- title: String!
+ """Use functions to manipulate data across multiple columns"""
+ formula
+ group
- """
- The column description.
- """
- description: String
- settings: CreateDropdownColumnSettingsInput
- ): DropdownManagedColumn
+ """Add times to manage and schedule tasks, shifts and more"""
+ hour
- """
- Create managed column of type status mutation.
- """
- create_status_managed_column(
- """
- The column title.
- """
- title: String!
+ """Integration is really cool..."""
+ integration
- """
- The column description.
- """
- description: String
- settings: CreateStatusColumnSettingsInput
- ): StatusManagedColumn
+ """Show all item's assignees"""
+ item_assignees
- """
- Update managed column of type dropdown mutation.
- """
- update_dropdown_managed_column(
- """
- The column id.
- """
- id: String!
+ """Show a unique ID for each item"""
+ item_id
+
+ """Add the person that last updated the item and the date"""
+ last_updated
+
+ """Simply hyperlink to any website"""
+ link
+
+ """Place multiple locations on a geographic map"""
+ location
+
+ """Add large amounts of text without changing column width"""
+ long_text
+
+ """Show and edit columns' data from connected boards"""
+ mirror
+
+ """Name is really cool..."""
+ name
- """
- The column title.
- """
- title: String
+ """Add revenue, costs, time estimations and more"""
+ numbers
- """
- The column description.
- """
- description: String
- settings: UpdateDropdownColumnSettingsInput
+ """Assign people to improve team work"""
+ people
- """
- The column revision.
- """
- revision: Int!
- ): DropdownManagedColumn
+ """Assign a person to increase ownership and accountability (deprecated)"""
+ person
- """
- Update managed column of type status mutation.
- """
- update_status_managed_column(
- """
- The column id.
- """
- id: String!
+ """Call your contacts directly from monday.com"""
+ phone
- """
- The column title.
- """
- title: String
+ """Show progress by combining status columns in a battery"""
+ progress
- """
- The column description.
- """
- description: String
- settings: UpdateStatusColumnSettingsInput
+ """Rate or rank anything visually"""
+ rating
- """
- The column revision.
- """
- revision: Int!
- ): StatusManagedColumn
+ """Get an instant overview of where things stand"""
+ status
- """
- Activate managed column mutation.
- """
- activate_managed_column(
- """
- The column id.
- """
- id: String!
- ): ManagedColumn
+ """Use the subtasks column to create another level of tasks"""
+ subtasks
- """
- Deactivate managed column mutation.
- """
- deactivate_managed_column(
- """
- The column id.
- """
- id: String!
- ): ManagedColumn
+ """Add tags to categorize items across multiple boards"""
+ tags
- """
- Delete managed column mutation.
- """
- delete_managed_column(
- """
- The column id.
- """
- id: String!
- ): ManagedColumn
- grant_marketplace_app_discount(
- """
- The id of an app
- """
- app_id: ID!
+ """Assign a full team to an item """
+ team
- """
- Slug of an account
- """
- account_slug: String!
- data: GrantMarketplaceAppDiscountData!
- ): GrantMarketplaceAppDiscountResult!
- delete_marketplace_app_discount(
- """
- The id of an app
- """
- app_id: ID!
+ """Add textual information e.g. addresses, names or keywords"""
+ text
- """
- Slug of an account
- """
- account_slug: String!
- ): DeleteMarketplaceAppDiscountResult!
+ """Easily track time spent on each item, group, and board"""
+ time_tracking
- """
- Add a file to a column value.
- """
- add_file_to_column(
- """
- The column to add the file to.
- """
- column_id: String!
+ """Visualize your item’s duration, with a start and end date"""
+ timeline
- """
- The file to upload.
- """
- file: File!
+ """Unsupported column type"""
+ unsupported
- """
- The item to add the file to.
- """
- item_id: ID!
- ): Asset
+ """Vote on an item e.g. pick a new feature or a favorite lunch place"""
+ vote
- """
- Add a file to an update.
- """
- add_file_to_update(
- """
- The file to upload.
- """
- file: File!
+ """Select the week on which each item should be completed"""
+ week
- """
- The update to add the file to.
- """
- update_id: ID!
- ): Asset
+ """Keep track of the time anywhere in the world"""
+ world_clock
+}
+
+interface ColumnValue {
+ """The column that this value belongs to."""
+ column: Column!
+
+ """The column's unique identifier."""
+ id: ID!
"""
- Add subscribers to a board.
+ Text representation of the column value. Note: Not all columns support textual value
"""
- add_subscribers_to_board(
- """
- The board's unique identifier.
- """
- board_id: ID!
+ text: String
- """
- Subscribers kind (subscriber / owner)
- """
- kind: BoardSubscriberKind = subscriber
+ """The column's type."""
+ type: ColumnType!
- """
- User ids to subscribe to a board
- """
- user_ids: [ID!]!
- ): [User] @deprecated(reason: "use add_users_to_board instead")
+ """The column's raw value in JSON format."""
+ value: JSON
+}
- """
- Add teams subscribers to a board.
- """
- add_teams_to_board(
- """
- The board's unique identifier.
- """
- board_id: ID!
+scalar CompareValue
- """
- Subscribers kind (subscriber / owner)
- """
- kind: BoardSubscriberKind = subscriber
+"""Complexity data."""
+type Complexity {
+ """The remainder of complexity after the query's execution."""
+ after: Int!
- """
- Team ids to subscribe to a board
- """
- team_ids: [ID!]!
- ): [Team]
+ """The remainder of complexity before the query's execution."""
+ before: Int!
- """
- Add teams to a workspace.
- """
- add_teams_to_workspace(
- """
- Subscribers kind (subscriber / owner)
- """
- kind: WorkspaceSubscriberKind = subscriber
+ """The specific query's complexity."""
+ query: Int!
- """
- Team ids to subscribe to a workspace
- """
- team_ids: [ID!]!
+ """How long in seconds before the complexity budget is reset"""
+ reset_in_x_seconds: Int!
+}
- """
- The workspace's unique identifier.
- """
- workspace_id: ID!
- ): [Team]
+type Country {
+ """The country's two-letter code."""
+ code: String!
- """
- Add subscribers to a board.
- """
- add_users_to_board(
- """
- The board's unique identifier.
- """
- board_id: ID!
+ """The country's name."""
+ name: String!
+}
- """
- Subscribers kind (subscriber / owner)
- """
- kind: BoardSubscriberKind = subscriber
+type CountryValue implements ColumnValue {
+ """The column that this value belongs to."""
+ column: Column!
- """
- User ids to subscribe to a board
- """
- user_ids: [ID!]!
- ): [User]
+ """The country value."""
+ country: Country
+
+ """The column's unique identifier."""
+ id: ID!
"""
- Add users to team.
+ Text representation of the column value. Note: Not all columns support textual value
"""
- add_users_to_team(
- """
- The team's unique identifier.
- """
- team_id: ID!
+ text: String
- """
- User ids to add to/remove from the team
- """
- user_ids: [ID!]!
- ): ChangeTeamMembershipsResult
+ """The column's type."""
+ type: ColumnType!
- """
- Add users to a workspace.
- """
- add_users_to_workspace(
- """
- Subscribers kind (subscriber / owner)
- """
- kind: WorkspaceSubscriberKind = subscriber
+ """The date when column value was last updated."""
+ updated_at: Date
- """
- User ids to subscribe to a workspace
- """
- user_ids: [ID!]!
+ """The column's raw value in JSON format."""
+ value: JSON
+}
- """
- The workspace's unique identifier.
- """
- workspace_id: ID!
- ): [User]
+input CreateDocBoardInput {
+ """Column id"""
+ column_id: String!
- """
- Archive a board.
- """
- archive_board(
- """
- The board's unique identifier
- """
- board_id: ID!
- ): Board
+ """Item id"""
+ item_id: ID!
+}
- """
- Archives a group in a specific board.
- """
- archive_group(
- """
- The board's unique identifier.
- """
- board_id: ID!
+input CreateDocInput {
+ board: CreateDocBoardInput
+ workspace: CreateDocWorkspaceInput
+}
- """
- The group's unique identifier.
- """
- group_id: String!
- ): Group
+input CreateDocWorkspaceInput {
+ """Optional board folder id"""
+ folder_id: ID
- """
- Archive an item.
- """
- archive_item(
- """
- The item's unique identifier.
- """
- item_id: ID
- ): Item
+ """The doc's kind (public / private / share)"""
+ kind: BoardKind
- """
- Extends trial period of an application to selected accounts
- """
- batch_extend_trial_period(
- """
- The accounts' slags. Max: 5
- """
- account_slugs: [String!]!
+ """The doc's name"""
+ name: String!
+
+ """Workspace id"""
+ workspace_id: ID!
+}
+
+type CreationLogValue implements ColumnValue {
+ """The column that this value belongs to."""
+ column: Column!
- """
- The id of an application.
- """
- app_id: ID!
+ """The date when the item was created."""
+ created_at: Date!
- """
- The amount of days to extend a trial period. Max: 365
- """
- duration_in_days: Int!
+ """User who created the item"""
+ creator: User!
- """
- The id of a payment plan.
- """
- plan_id: String!
- ): BatchExtendTrialPeriod
+ """ID of the user who created the item"""
+ creator_id: ID!
- """
- Change a column's properties
- """
- change_column_metadata(
- """
- The board's unique identifier.
- """
- board_id: ID!
+ """The column's unique identifier."""
+ id: ID!
+ text: String
- """
- The column's unique identifier.
- """
- column_id: String!
+ """The column's type."""
+ type: ColumnType!
- """
- The property name of the column to be changed (title / description).
- """
- column_property: ColumnProperty
+ """The column's raw value in JSON format."""
+ value: JSON
+}
- """
- The new description of the column.
- """
- value: String
- ): Column
+"""The custom fields meta data for user profile."""
+type CustomFieldMetas {
+ """The custom field meta's description."""
+ description: String
- """
- Change a column's title
- """
- change_column_title(
- """
- The board's unique identifier.
- """
- board_id: ID!
+ """Is the custom field meta editable or not."""
+ editable: Boolean
- """
- The column's unique identifier.
- """
- column_id: String!
+ """The custom field meta's type."""
+ field_type: String
- """
- The new title of the column.
- """
- title: String!
- ): Column
+ """Is the custom field meta flagged or not."""
+ flagged: Boolean
- """
- Change an item's column value.
- """
- change_column_value(
- """
- The board's unique identifier.
- """
- board_id: ID!
+ """The custom field meta's icon."""
+ icon: String
- """
- The column's unique identifier.
- """
- column_id: String!
+ """The custom field meta's unique identifier."""
+ id: String
- """
- Create Status/Dropdown labels if they're missing. (Requires permission to change board structure)
- """
- create_labels_if_missing: Boolean
+ """The custom field meta's position in the user profile page."""
+ position: String
- """
- The item's unique identifier.
- """
- item_id: ID
+ """The custom field meta's title."""
+ title: String
+}
- """
- The new value of the column.
- """
- value: JSON!
- ): Item
+"""A custom field value for user profile."""
+type CustomFieldValue {
+ """The custom field value's meta unique identifier."""
+ custom_field_meta_id: String
- """
- Changes the column values of a specific item.
- """
- change_multiple_column_values(
- """
- The board's unique identifier.
- """
- board_id: ID!
+ """The custom field value."""
+ value: String
+}
- """
- The column values updates.
- """
- column_values: JSON!
+type DateValue implements ColumnValue {
+ """The column that this value belongs to."""
+ column: Column!
- """
- Create Status/Dropdown labels if they're missing. (Requires permission to change board structure)
- """
- create_labels_if_missing: Boolean
+ """The column's date value."""
+ date: String
- """
- The item's unique identifier.
- """
- item_id: ID
- ): Item
+ """The string representation of selected icon."""
+ icon: String
- """
- Change an item's column with simple value.
- """
- change_simple_column_value(
- """
- The board's unique identifier.
- """
- board_id: ID!
+ """The column's unique identifier."""
+ id: ID!
- """
- The column's unique identifier.
- """
- column_id: String!
+ """The formatted date and time in user time zone."""
+ text: String
- """
- Create Status/Dropdown labels if they're missing. (Requires permission to change board structure)
- """
- create_labels_if_missing: Boolean
+ """The column's time value."""
+ time: String
- """
- The item's unique identifier.
- """
- item_id: ID
+ """The column's type."""
+ type: ColumnType!
- """
- The new simple value of the column (pass null to empty the column).
- """
- value: String
- ): Item
+ """The date when column value was last updated."""
+ updated_at: Date
- """
- Clear an item's updates.
- """
- clear_item_updates(
- """
- The item's unique identifier.
- """
- item_id: ID!
- ): Item
+ """The column's raw value in JSON format."""
+ value: JSON
+}
- """
- Get the complexity data of your mutations.
- """
- complexity: Complexity
+type DependencyValue implements ColumnValue {
+ """The column that this value belongs to."""
+ column: Column!
"""
- Create a new board.
+ A string representing all the names of the linked items, separated by commas
"""
- create_board(
- """
- The board's kind (public / private / share)
- """
- board_kind: BoardKind!
+ display_value: String!
- """
- The board's name
- """
- board_name: String!
+ """The column's unique identifier."""
+ id: ID!
- """
- Optional board owner user ids
- """
- board_owner_ids: [ID!]
+ """The linked items ids"""
+ linked_item_ids: [ID!]!
- """
- Optional board owner team ids
- """
- board_owner_team_ids: [ID!]
+ """The linked items."""
+ linked_items: [Item!]!
- """
- Optional board subscriber ids
- """
- board_subscriber_ids: [ID!]
+ """
+ Text representation of the column value. Note: Not all columns support textual value
+ """
+ text: String
- """
- Optional list of subscriber team ids
- """
- board_subscriber_teams_ids: [ID!]
+ """The column's type."""
+ type: ColumnType!
- """
- Optional board's description
- """
- description: String
+ """The date when column value was last updated."""
+ updated_at: Date
- """
- Optional flag to create an empty board (without any default items)
- """
- empty: Boolean = false
+ """The column's raw value in JSON format."""
+ value: JSON
+}
- """
- Optional board folder id
- """
- folder_id: ID
+"""Various documents blocks types, such as text."""
+enum DocBlockContentType {
+ """Bulleted list block"""
+ bulleted_list
- """
- Optional board template id
- """
- template_id: ID
+ """Check list block"""
+ check_list
- """
- Optional workspace id
- """
- workspace_id: ID
- ): Board
+ """Code block"""
+ code
- """
- Create a new column in board.
- """
- create_column(
- """
- The column's unique identifier after which the new column will be inserted.
- """
- after_column_id: ID
+ """Divider block"""
+ divider
- """
- The board's unique identifier.
- """
- board_id: ID!
+ """Image block"""
+ image
- """
- The type of column to create.
- """
- column_type: ColumnType!
+ """Large title block"""
+ large_title
- """
- The new column's defaults.
- """
- defaults: JSON
+ """Layout block"""
+ layout
- """
- The new column's description.
- """
- description: String
+ """Medium title block"""
+ medium_title
- """
- The column's user-specified unique identifier.
- """
- id: String
+ """Simple text block"""
+ normal_text
- """
- The new column's title.
- """
- title: String!
- ): Column
+ """Notice block"""
+ notice_box
- """
- Create a new doc.
- """
- create_doc(
- """
- new monday doc location
- """
- location: CreateDocInput!
- ): Document
+ """Numbered list block"""
+ numbered_list
- """
- Create new document block
- """
- create_doc_block(
- """
- After which block to insert this one. If not provided, will be inserted first in the document
- """
- after_block_id: String
+ """Page break block"""
+ page_break
- """
- The block's content.
- """
- content: JSON!
+ """Quote text block"""
+ quote
- """
- The doc's unique identifier.
- """
- doc_id: ID!
+ """Small title block"""
+ small_title
- """
- The parent block id to append the created block under.
- """
- parent_block_id: String
+ """Table block"""
+ table
- """
- The block's content type.
- """
- type: DocBlockContentType!
- ): DocumentBlock
+ """Video block"""
+ video
+}
- """
- Creates a folder in a specific workspace.
- """
- create_folder(
- """
- The folder's color.
- """
- color: FolderColor
+"""Options to order by."""
+enum DocsOrderBy {
+ """The rank order of the document creation time (desc)."""
+ created_at
- """
- The folder's custom icon.
- """
- custom_icon: FolderCustomIcon
+ """The last time the user making the request viewd the document (desc)."""
+ used_at
+}
- """
- The folder's font weight.
- """
- font_weight: FolderFontWeight
+"""A monday.com document."""
+type Document {
+ """The document's content blocks"""
+ blocks(
+ """Number of items to get, the default is 25."""
+ limit: Int = 25
- """
- The folder's name
- """
- name: String!
+ """Page number to get, starting at 1."""
+ page: Int = 1
+ ): [DocumentBlock]
- """
- The folder's parent folder unique identifier.
- """
- parent_folder_id: ID
+ """The document's creation date."""
+ created_at: Date
- """
- The unique identifier of the workspace to create this folder in
- """
- workspace_id: ID
- ): Folder
+ """The document's creator"""
+ created_by: User
- """
- Creates a new group in a specific board.
- """
- create_group(
- """
- The board's unique identifier.
- """
- board_id: ID!
+ """The document's folder unique identifier (null for first level)."""
+ doc_folder_id: ID
- """
- A hex representing the group's color
- """
- group_color: String
+ """The document's kind (public / private / share)."""
+ doc_kind: BoardKind!
- """
- The name of the new group.
- """
- group_name: String!
+ """The document's unique identifier."""
+ id: ID!
- """
- The group's position in the board. DEPRECATED! Replaced with relative position (position_relative_method, relative_to)
- """
- position: String
+ """The document's name."""
+ name: String!
- """
- The position relative method to another group (before_at / after_at)
- """
- position_relative_method: PositionRelative
+ """The associated board or object's unique identifier."""
+ object_id: ID!
- """
- The group to set the position next to.
- """
- relative_to: String
- ): Group
+ """The document's relative url"""
+ relative_url: String
- """
- Create a new item.
- """
- create_item(
- """
- The board's unique identifier.
- """
- board_id: ID!
+ """The document's settings."""
+ settings: JSON
- """
- The column values of the new item.
- """
- column_values: JSON
+ """The document's direct url"""
+ url: String
- """
- Create Status/Dropdown labels if they're missing. (Requires permission to change board structure)
- """
- create_labels_if_missing: Boolean
+ """The workspace that contains this document (null for main workspace)."""
+ workspace: Workspace
- """
- The group's unique identifier.
- """
- group_id: String
+ """The document's workspace unique identifier (null for main workspace)."""
+ workspace_id: ID
+}
- """
- The new item's name.
- """
- item_name: String!
+"""A monday.com document block."""
+type DocumentBlock {
+ """The block's content."""
+ content: JSON
- """
- The position relative method to another item (before_at / after_at)
- """
- position_relative_method: PositionRelative
+ """The block's creation date."""
+ created_at: Date
- """
- The item to set the position next to.
- """
- relative_to: ID
- ): Item
+ """The block's creator"""
+ created_by: User
- """
- Create a new notification.
- """
- create_notification(
- """
- The target's unique identifier.
- """
- target_id: ID!
+ """The block's document unique identifier."""
+ doc_id: ID
- """
- The target's type (Project / Post)
- """
- target_type: NotificationTargetType!
+ """The block's unique identifier."""
+ id: String!
- """
- The notification text.
- """
- text: String!
+ """The block's parent block unique identifier."""
+ parent_block_id: String
- """
- The user's unique identifier.
- """
- user_id: ID!
- ): Notification
+ """The block's position on the document."""
+ position: Float
- """
- Create a new tag or get it if it already exists.
- """
- create_or_get_tag(
- """
- The private board id to create the tag at (not needed for public boards)
- """
- board_id: ID
+ """The block content type."""
+ type: String
- """
- The new tag's name.
- """
- tag_name: String
- ): Tag
+ """The block's last updated date."""
+ updated_at: Date
+}
- """
- Create subitem.
- """
- create_subitem(
- """
- The column values of the new item.
- """
- column_values: JSON
+"""A monday.com doc block."""
+type DocumentBlockIdOnly {
+ """The block's unique identifier."""
+ id: String!
+}
- """
- Create Status/Dropdown labels if they're missing. (Requires permission to change board structure)
- """
- create_labels_if_missing: Boolean
+type DocValue implements ColumnValue {
+ """The column that this value belongs to."""
+ column: Column!
- """
- The new item's name.
- """
- item_name: String!
+ """The document file attached to the column."""
+ file: FileDocValue
- """
- The parent item's unique identifier.
- """
- parent_item_id: ID!
- ): Item
+ """The column's unique identifier."""
+ id: ID!
"""
- Create a new webhook.
+ Text representation of the column value. Note: Not all columns support textual value
"""
- create_webhook(
- """
- The board's unique identifier.
- """
- board_id: ID!
+ text: String
- """
- The webhook config
- """
- config: JSON
+ """The column's type."""
+ type: ColumnType!
- """
- The event to listen to
- """
- event: WebhookEventType!
+ """The column's raw value in JSON format."""
+ value: JSON
+}
- """
- The webhook URL.
- """
- url: String!
- ): Webhook
+type DropdownValue implements ColumnValue {
+ """The column that this value belongs to."""
+ column: Column!
- """
- Create a new workspace.
- """
- create_workspace(
- """
- The Workspace's description
- """
- description: String
+ """The column's unique identifier."""
+ id: ID!
+ text: String
- """
- The workspace's kind (open / closed)
- """
- kind: WorkspaceKind!
+ """The column's type."""
+ type: ColumnType!
- """
- The Workspace's name
- """
- name: String!
- ): Workspace
+ """The column's raw value in JSON format."""
+ value: JSON
- """
- Delete a board.
- """
- delete_board(
- """
- The board's unique identifier
- """
- board_id: ID!
- ): Board
+ """The selected dropdown values."""
+ values: [DropdownValueOption!]!
+}
- """
- Delete a column.
- """
- delete_column(
- """
- The board's unique identifier.
- """
- board_id: ID!
+type DropdownValueOption {
+ """The dropdown item's unique identifier."""
+ id: ID!
- """
- The column's unique identifier.
- """
- column_id: String!
- ): Column
+ """The dropdown item's label."""
+ label: String!
+}
- """
- Delete a document block
- """
- delete_doc_block(
- """
- The block's unique identifier.
- """
- block_id: String!
- ): DocumentBlockIdOnly
+"""The board duplicate types available."""
+enum DuplicateBoardType {
+ """Duplicate board with structure and items."""
+ duplicate_board_with_pulses
- """
- Deletes a folder in a specific workspace.
- """
- delete_folder(
- """
- The folder's unique identifier.
- """
- folder_id: ID!
- ): Folder
+ """Duplicate board with structure, items and updates."""
+ duplicate_board_with_pulses_and_updates
- """
- Deletes a group in a specific board.
- """
- delete_group(
- """
- The board's unique identifier.
- """
- board_id: ID!
+ """Duplicate board with structure."""
+ duplicate_board_with_structure
+}
- """
- The group's unique identifier.
- """
- group_id: String!
- ): Group
+type EmailValue implements ColumnValue {
+ """The column that this value belongs to."""
+ column: Column!
+
+ """The column's email value."""
+ email: String
+
+ """The column's unique identifier."""
+ id: ID!
"""
- Delete an item.
+ The column's text value. It can be the same as email when user didn't enter any text.
"""
- delete_item(
- """
- The item's unique identifier.
- """
- item_id: ID
- ): Item
+ label: String
"""
- Remove subscribers from the board.
+ Text representation of the column value. Note: Not all columns support textual value
"""
- delete_subscribers_from_board(
- """
- The board's unique identifier.
- """
- board_id: ID!
+ text: String
- """
- User ids to unsubscribe from a board
- """
- user_ids: [ID!]!
- ): [User]
+ """The column's type."""
+ type: ColumnType!
- """
- Remove team subscribers from the board.
- """
- delete_teams_from_board(
- """
- The board's unique identifier
- """
- board_id: ID!
+ """The date when column value was last updated."""
+ updated_at: Date
- """
- Team ids to unsubscribe from a workspace
- """
- team_ids: [ID!]!
- ): [Team]
+ """The column's raw value in JSON format."""
+ value: JSON
+}
- """
- Delete teams from a workspace.
- """
- delete_teams_from_workspace(
- """
- Team ids to unsubscribe from a workspace
- """
- team_ids: [ID!]!
+"""Result of a single operation"""
+type ExtendTrialPeriod {
+ """Account slug"""
+ account_slug: String!
- """
- The workspace's unique identifier.
- """
- workspace_id: ID!
- ): [Team]
+ """Reason of an error"""
+ reason: String
- """
- Delete users from a workspace.
- """
- delete_users_from_workspace(
- """
- User ids to unsubscribe from a workspace
- """
- user_ids: [ID!]!
+ """Result of a single operation"""
+ success: Boolean!
+}
- """
- The workspace's unique identifier.
- """
- workspace_id: ID!
- ): [User]
+"""A multipart file"""
+scalar File
- """
- Delete a new webhook.
- """
- delete_webhook(
- """
- The webhook's unique identifier.
- """
- id: ID!
- ): Webhook
+type FileAssetValue {
+ """The asset associated with the file."""
+ asset: Asset!
- """
- Delete workspace.
- """
- delete_workspace(
- """
- The workspace's unique identifier
- """
- workspace_id: ID!
- ): Workspace
+ """The asset's id."""
+ asset_id: ID!
- """
- Duplicate a board.
- """
- duplicate_board(
- """
- The board's unique identifier.
- """
- board_id: ID!
+ """The file's creation date."""
+ created_at: Date!
- """
- Optional the new board's name. If omitted then automatically generated
- """
- board_name: String
+ """The user who created the file."""
+ creator: User
- """
- The duplication type.
- """
- duplicate_type: DuplicateBoardType!
+ """The ID of user who created the file."""
+ creator_id: ID
- """
- Optional destination folder in destination workspace. Defaults to the original board folder.
- """
- folder_id: ID
+ """Whether the file is an image."""
+ is_image: Boolean!
- """
- Duplicate the subscribers to the new board. Defaults to false.
- """
- keep_subscribers: Boolean
+ """The file's name."""
+ name: String!
+}
- """
- Optional destination workspace. Defaults to the original board workspace.
- """
- workspace_id: ID
- ): BoardDuplication
+"""The type of a link value stored inside a file column"""
+enum FileColumnValue {
+ """Asset file"""
+ asset
- """
- Duplicate a group.
- """
- duplicate_group(
- """
- Should the new group be added to the top.
- """
- add_to_top: Boolean
+ """Box file"""
+ box
- """
- The board's unique identifier.
- """
- board_id: ID!
+ """Doc file"""
+ doc
- """
- The group's unique identifier.
- """
- group_id: String!
+ """Dropbox file"""
+ dropbox
- """
- The group's title.
- """
- group_title: String
- ): Group
+ """Google Drive file"""
+ google_drive
- """
- Duplicate an item.
- """
- duplicate_item(
- """
- The board's unique identifier.
- """
- board_id: ID!
+ """Generic link file"""
+ link
- """
- The item's unique identifier. *Required
- """
- item_id: ID
+ """OneDrive file"""
+ onedrive
+}
- """
- Duplicate with the item's updates.
- """
- with_updates: Boolean
- ): Item
+type FileDocValue {
+ """The file's creation date."""
+ created_at: Date!
- """
- Increase operations counter
- """
- increase_app_subscription_operations(
- """
- Must be positive number.
- """
- increment_by: Int = 1
+ """The user who created the file."""
+ creator: User
- """
- Operation name. A string of up to 14 characters containing alphanumeric characters and the symbols -_
- """
- kind: String = "global"
- ): AppSubscriptionOperationsCounter
+ """The ID of user who created the file."""
+ creator_id: ID
- """
- Move an item to a different board.
- """
- move_item_to_board(
- """
- The unique identifier of a target board.
- """
- board_id: ID!
+ """The doc associated with the file."""
+ doc: Document!
- """
- Mapping of columns between the original board and target board
- """
- columns_mapping: [ColumnMappingInput!]
+ """The file's unique identifier."""
+ file_id: ID!
- """
- The unique identifier of a target group.
- """
- group_id: ID!
+ """The associated board or object's unique identifier."""
+ object_id: ID!
- """
- The unique identifier of an item to move.
- """
- item_id: ID!
+ """The file's url."""
+ url: String
+}
- """
- Mapping of subitem columns between the original board and target board
- """
- subitems_columns_mapping: [ColumnMappingInput!]
- ): Item
+input FileInput {
+ """The asset's id."""
+ assetId: ID
- """
- Move an item to a different group.
- """
- move_item_to_group(
- """
- The group's unique identifier.
- """
- group_id: String!
+ """File kind"""
+ fileType: FileColumnValue!
- """
- The item's unique identifier.
- """
- item_id: ID
- ): Item
+ """File link"""
+ linkToFile: String
- """
- Remove mock app subscription for the current account
- """
- remove_mock_app_subscription(
- """
- The app id of the app to remove the mocked subscription for.
- """
- app_id: ID!
+ """File display name"""
+ name: String!
- """
- The last 10 characters of the app's signing secret.
- """
- partial_signing_secret: String!
- ): AppSubscription
+ """The doc's id"""
+ objectId: ID
+}
- """
- Remove users from team.
- """
- remove_users_from_team(
- """
- The team's unique identifier.
- """
- team_id: ID!
+type FileLinkValue {
+ """The file's creation date."""
+ created_at: Date!
- """
- User ids to add to/remove from the team
- """
- user_ids: [ID!]!
- ): ChangeTeamMembershipsResult
+ """The user who created the file."""
+ creator: User
- """
- Set mock app subscription for the current account
- """
- set_mock_app_subscription(
- """
- The app id of the app to mock subscription for.
- """
- app_id: ID!
+ """The ID of user who created the file."""
+ creator_id: ID
- """
- Billing period [monthly/yearly]
- """
- billing_period: String
+ """The file's id."""
+ file_id: ID!
- """
- Is the subscription a trial
- """
- is_trial: Boolean
+ """The file's kind."""
+ kind: FileLinkValueKind!
- """
- Maximum number of units for the mocked plan
- """
- max_units: Int
+ """The file's name."""
+ name: String!
- """
- The last 10 characters of the app's signing secret.
- """
- partial_signing_secret: String!
+ """The file's url."""
+ url: String
+}
- """
- The plan id for the mocked plan
- """
- plan_id: String
+"""The type of a link value stored inside a file column"""
+enum FileLinkValueKind {
+ """Box file"""
+ box
+
+ """Dropbox file"""
+ dropbox
+
+ """Google Drive file"""
+ google_drive
+
+ """Generic link file"""
+ link
- """
- Pricing plans version
- """
- pricing_version: Int
+ """OneDrive file"""
+ onedrive
+}
- """
- The subscription renewal date
- """
- renewal_date: Date
- ): AppSubscription
+type FileValue implements ColumnValue {
+ """The column that this value belongs to."""
+ column: Column!
- """
- Update item column value by existing assets
- """
- update_assets_on_item(
- """
- The board's unique identifier.
- """
- board_id: ID!
+ """The files attached to the column."""
+ files: [FileValueItem!]!
- """
- The column's unique identifier.
- """
- column_id: String!
+ """The column's unique identifier."""
+ id: ID!
+ text: String
- """
- Array of files values.
- """
- files: [FileInput!]!
+ """The column's type."""
+ type: ColumnType!
- """
- The item's unique identifier.
- """
- item_id: ID!
- ): Item
+ """The column's raw value in JSON format."""
+ value: JSON
+}
- """
- Update Board attribute.
- """
- update_board(
- """
- The board's attribute to update (name / description / communication)
- """
- board_attribute: BoardAttributes!
+"""A single file in a column."""
+union FileValueItem = FileAssetValue | FileDocValue | FileLinkValue
- """
- The board's unique identifier
- """
- board_id: ID!
+"""The first day of work week"""
+enum FirstDayOfTheWeek {
+ """Monday"""
+ monday
- """
- The new attribute value.
- """
- new_value: String!
- ): JSON
+ """Sunday"""
+ sunday
+}
+"""A workspace folder containing boards, docs, sub folders, etc."""
+type Folder {
"""
- Update a document block
+ The various items in the folder, not including sub-folders and dashboards.
"""
- update_doc_block(
- """
- The block's unique identifier.
- """
- block_id: String!
+ children: [Board]!
- """
- The block's content.
- """
- content: JSON!
- ): DocumentBlock
+ """The folder's color."""
+ color: FolderColor
- """
- Updates a folder.
- """
- update_folder(
- """
- The folder's color.
- """
- color: FolderColor
+ """The folder's creation date."""
+ created_at: Date!
- """
- The folder's custom icon.
- """
- custom_icon: FolderCustomIcon
+ """The folder's custom icon."""
+ custom_icon: FolderCustomIcon
- """
- The folder's unique identifier
- """
- folder_id: ID!
+ """The folder's font weight."""
+ font_weight: FolderFontWeight
- """
- The folder's font weight.
- """
- font_weight: FolderFontWeight
+ """The folder's unique identifier."""
+ id: ID!
- """
- The folder's name
- """
- name: String
+ """The folder's name."""
+ name: String!
- """
- The folder's parent folder.
- """
- parent_folder_id: ID
- ): Folder
+ """The folder's user owner unique identifier."""
+ owner_id: ID
- """
- Update an existing group.
- """
- update_group(
- """
- The board's unique identifier.
- """
- board_id: ID!
+ """The folder's parent folder."""
+ parent: Folder
- """
- The groups's attribute to update (title / color / position / relative_position_after / relative_position_before)
- """
- group_attribute: GroupAttributes!
+ """Sub-folders inside this folder."""
+ sub_folders: [Folder]!
- """
- The Group's unique identifier.
- """
- group_id: String!
+ """The workspace that contains this folder (null id for main workspace)."""
+ workspace: Workspace!
+}
- """
- The new attribute value.
- """
- new_value: String!
- ): Group
+"""One value out of a list of valid folder colors"""
+enum FolderColor {
+ """aquamarine"""
+ AQUAMARINE
- """
- Update an existing workspace.
- """
- update_workspace(
- """
- The attributes of the workspace to update
- """
- attributes: UpdateWorkspaceAttributesInput!
+ """bright-blue"""
+ BRIGHT_BLUE
- """
- The workspace ID.
- """
- id: ID
- ): Workspace
+ """bright-green"""
+ BRIGHT_GREEN
- """
- Use a template
- """
- use_template(
- """
- The board's kind (public / private / share)
- """
- board_kind: BoardKind
+ """chili-blue"""
+ CHILI_BLUE
- """
- Optional board owner user ids
- """
- board_owner_ids: [Int]
+ """dark-orange"""
+ DARK_ORANGE
- """
- Optional board owner team ids
- """
- board_owner_team_ids: [Int]
+ """dark_purple"""
+ DARK_PURPLE
- """
- Optional board subscriber ids
- """
- board_subscriber_ids: [Int]
+ """dark-red"""
+ DARK_RED
- """
- Optional list of subscriber team ids
- """
- board_subscriber_teams_ids: [Int]
+ """done-green"""
+ DONE_GREEN
- """
- The callback URL to send the workspace, boards and dashboards IDs result, after its completed in the background
- """
- callback_url_on_complete: String
+ """indigo"""
+ INDIGO
- """
- The folder ID to duplicate the template to.
- """
- destination_folder_id: Int
+ """lipstick"""
+ LIPSTICK
- """
- The folder name to duplicate the template to, in case of multiple boards template
- """
- destination_folder_name: String
+ """No color"""
+ NULL
- """
- The name of the instance
- """
- destination_name: String
+ """purple"""
+ PURPLE
- """
- The workspace ID to duplicate the template to, If not defined, it will be created in Main Workspace
- """
- destination_workspace_id: Int
+ """sofia_pink"""
+ SOFIA_PINK
- """
- Skips target folder creation in multiple entities templates
- """
- skip_target_folder_creation: Boolean
+ """stuck-red"""
+ STUCK_RED
- """
- Optional adding extra options
- """
- solution_extra_options: JSON
+ """sunset"""
+ SUNSET
- """
- The template ID
- """
- template_id: Int!
- ): Template
+ """working_orange"""
+ WORKING_ORANGE
+}
- """
- Creates a new team.
- """
- create_team(input: CreateTeamAttributesInput!, options: CreateTeamOptionsInput): Team
+"""One value out of a list of valid folder custom icons"""
+enum FolderCustomIcon {
+ """Folder"""
+ FOLDER
- """
- Activates the specified users.
- """
- activate_users(
- """
- The ids of the users to activate. (Limit: 200)
- """
- user_ids: [ID!]!
- ): ActivateUsersResult
+ """MoreBelow"""
+ MOREBELOW
- """
- Deactivates the specified users.
- """
- deactivate_users(
- """
- The ids of the users to deactivate. (Limit: 200)
- """
- user_ids: [ID!]!
- ): DeactivateUsersResult
+ """MoreBelowFilled"""
+ MOREBELOWFILLED
- """
- Deletes the specified team.
- """
- delete_team(
- """
- The team to be deleted.
- """
- team_id: ID!
- ): Team
+ """No custom icon"""
+ NULL
- """
- Updates the role of the specified users.
- """
- update_users_role(
- """
- The ids of the users to update. (Limit: 200)
- """
- user_ids: [ID!]!
+ """Work"""
+ WORK
+}
- """
- The base role name (e.g. admin, member, etc.)
- """
- new_role: BaseRoleName
+"""One value out of a list of valid folder font weights"""
+enum FolderFontWeight {
+ """font-weight-bold"""
+ FONT_WEIGHT_BOLD
- """
- The ID of a custom role
- """
- role_id: ID
- ): UpdateUsersRoleResult
+ """font-weight-light"""
+ FONT_WEIGHT_LIGHT
- """
- Assigns the specified users as owners of the specified team.
- """
- assign_team_owners(
- """
- The team identifier.
- """
- team_id: ID!
+ """font-weight-normal"""
+ FONT_WEIGHT_NORMAL
- """
- The user identifiers (max 200)
- """
- user_ids: [ID!]!
- ): AssignTeamOwnersResult
+ """font-weight-very-light"""
+ FONT_WEIGHT_VERY_LIGHT
- """
- Removes the specified users as owners of the specified team.
- """
- remove_team_owners(
- """
- The team identifier.
- """
- team_id: ID!
+ """No font weight"""
+ NULL
+}
+
+type FormulaValue implements ColumnValue {
+ """The column that this value belongs to."""
+ column: Column!
- """
- The user identifiers (max 200)
- """
- user_ids: [ID!]!
- ): RemoveTeamOwnersResult
+ """The column's unique identifier."""
+ id: ID!
"""
- Updates the email domain for the specified users.
+ Text representation of the column value. Note: Not all columns support textual value
"""
- update_email_domain(input: UpdateEmailDomainAttributesInput!): UpdateEmailDomainResult
+ text: String
- """
- Updates attributes for users.
- """
- update_multiple_users(
- """
- List of user updates, each containing an ID and attribute updates.
- """
- user_updates: [UserUpdateInput!]!
+ """The column's type."""
+ type: ColumnType!
- """
- Whether to bypass email confirmation for claimed domains.
- """
- bypass_confirmation_for_claimed_domains: Boolean
- ): UpdateUserAttributesResult
+ """The column's raw value in JSON format."""
+ value: JSON
- """
- Invite users to the account.
- """
- invite_users(
+ """A string representing all the formula values, separated by commas"""
+ display_value: String!
+}
+
+"""A group of items in a board."""
+type Group {
+ """Is the group archived or not."""
+ archived: Boolean
+
+ """The group's color."""
+ color: String!
+
+ """Is the group deleted or not."""
+ deleted: Boolean
+
+ """The group's unique identifier."""
+ id: ID!
+
+ """The items in the group."""
+ items_page(
"""
- The emails of the users to invite.
+ An opaque token representing the position in the result set from which to
+ resume fetching items. Use this to paginate through large result sets.
"""
- emails: [String!]!
+ cursor: String
"""
- The new role of the users.
+ The maximum number of items to fetch in a single request. Use this to
+ control the size of the result set and manage pagination. Maximum: 500.
"""
- user_role: UserRole
+ limit: Int! = 25
"""
- The product to invite the users to
+ A set of parameters to filter, sort, and control the scope of the items
+ query. Use this to customize the results based on specific criteria.
"""
- product: Product
- ): InviteUsersResult
-}
+ query_params: ItemsQuery
+ ): ItemsResponse!
-"""
-A notification.
-"""
-type Notification {
- """
- The notification's unique identifier.
- """
- id: ID!
+ """The group's position in the board."""
+ position: String!
- """
- The notification text.
- """
- text: String
+ """The group's title."""
+ title: String!
}
-"""
-The notification's target type.
-"""
-enum NotificationTargetType {
+"""The group attributes available."""
+enum GroupAttributes {
"""
- Update
+ Group color (one of the supported colors, check the API documentation).
"""
- Post
+ color
"""
- Item or Board.
+ The group's position in the board. Deprecated! - replaced with relative position
"""
- Project
+ position
+
+ """The group's relative position after another group in the board."""
+ relative_position_after
+
+ """The group's relative position before another group in the board."""
+ relative_position_before
+
+ """Group title."""
+ title
}
-type NumbersValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
+type GroupValue implements ColumnValue {
+ """The column that this value belongs to."""
column: Column!
- """
- Indicates where the symbol should be placed - on the right or left of the number
- """
- direction: NumberValueUnitDirection
+ """The group value."""
+ group: Group
- """
- The column's unique identifier.
- """
- id: ID!
+ """The group identifier."""
+ group_id: ID
- """
- Number
- """
- number: Float
+ """The column's unique identifier."""
+ id: ID!
"""
- The symbol of the unit
+ Text representation of the column value. Note: Not all columns support textual value
"""
- symbol: String
text: String
- """
- The column's type.
- """
+ """The column's type."""
type: ColumnType!
- """
- The column's raw value in JSON format.
- """
+ """The column's raw value in JSON format."""
value: JSON
}
-"""
-Indicates where the unit symbol should be placed in a number value
-"""
-enum NumberValueUnitDirection {
- """
- The symbol is placed on the left of the number
- """
- left
-
- """
- The symbol is placed on the right of the number
- """
- right
-}
-
-"""
-The working status of a user.
-"""
-type OutOfOffice {
- """
- Is the status active?
- """
- active: Boolean
+type HourValue implements ColumnValue {
+ """The column that this value belongs to."""
+ column: Column!
- """
- Are notification disabled?
- """
- disable_notifications: Boolean
+ """Hour"""
+ hour: Int
- """
- The status end date.
- """
- end_date: Date
+ """The column's unique identifier."""
+ id: ID!
- """
- The status start date.
- """
- start_date: Date
+ """Minute"""
+ minute: Int
+ text: String
- """
- Out of office type.
- """
- type: String
-}
+ """The column's type."""
+ type: ColumnType!
-type PeopleEntity {
- """
- Id of the entity: a person or a team
- """
- id: ID!
+ """The date when column value was last updated."""
+ updated_at: Date
- """
- Type of entity
- """
- kind: Kind
+ """The column's raw value in JSON format."""
+ value: JSON
}
-type PeopleValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
+type IntegrationValue implements ColumnValue {
+ """The column that this value belongs to."""
column: Column!
- """
- The column's unique identifier.
- """
+ """ID of the entity"""
+ entity_id: ID
+
+ """The column's unique identifier."""
id: ID!
+ """URL of the issue"""
+ issue_api_url: ID
+
+ """ID of the issue"""
+ issue_id: String
+
"""
- The people and teams assigned to the item.
+ Text representation of the column value. Note: Not all columns support textual value
"""
- persons_and_teams: [PeopleEntity!]
text: String
- """
- The column's type.
- """
+ """The column's type."""
type: ColumnType!
- """
- The date when column value was last updated.
- """
- updated_at: Date
-
- """
- The column's raw value in JSON format.
- """
+ """The column's raw value in JSON format."""
value: JSON
}
-type PersonValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
+type ItemIdValue implements ColumnValue {
+ """The column that this value belongs to."""
column: Column!
- """
- The column's unique identifier.
- """
+ """The column's unique identifier."""
id: ID!
- """
- The person assigned to the item.
- """
- person_id: ID
+ """ID of the item"""
+ item_id: ID!
text: String
- """
- The column's type.
- """
+ """The column's type."""
type: ColumnType!
- """
- The date when column value was last updated.
- """
- updated_at: Date
-
- """
- The column's raw value in JSON format.
- """
+ """The column's raw value in JSON format."""
value: JSON
}
-type PhoneValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
- column: Column!
+"""The direction to order the items by"""
+enum ItemsOrderByDirection {
+ """Ascending order"""
+ asc
- """
- ISO-2 country code
- """
- country_short_name: String
+ """Descending order"""
+ desc
+}
- """
- The column's unique identifier.
- """
- id: ID!
+input ItemsPageByColumnValuesQuery {
+ """The column's unique identifier."""
+ column_id: String!
- """
- Phone number
- """
- phone: String
- text: String
+ """The column values to search items by."""
+ column_values: [String]!
+}
- """
- The column's type.
- """
- type: ColumnType!
+input ItemsQuery {
+ """A list of rule groups"""
+ groups: [ItemsQueryGroup!]
"""
- The date when column value was last updated.
+ A list of item IDs to fetch. Use this to fetch a specific set of items by their IDs. Max: 100 IDs
"""
- updated_at: Date
+ ids: [ID!]
- """
- The column's raw value in JSON format.
- """
- value: JSON
+ """The operator to use for the query rules or rule groups"""
+ operator: ItemsQueryOperator = and
+ order_by: [ItemsQueryOrderBy!]
+
+ """A list of rules"""
+ rules: [ItemsQueryRule!]
+}
+
+input ItemsQueryGroup {
+ """A list of rule groups"""
+ groups: [ItemsQueryGroup!]
+
+ """The operator to use for the query rules or rule groups"""
+ operator: ItemsQueryOperator = and
+
+ """A list of rules"""
+ rules: [ItemsQueryRule!]
+}
+
+"""The condition between the query rules"""
+enum ItemsQueryOperator {
+ """Logical AND"""
+ and
+
+ """Logical OR"""
+ or
+}
+
+input ItemsQueryOrderBy {
+ column_id: String!
+ direction: ItemsOrderByDirection = asc
+}
+
+input ItemsQueryRule {
+ column_id: ID!
+ compare_attribute: String
+ compare_value: CompareValue!
+ operator: ItemsQueryRuleOperator = any_of
}
-"""
-A payment plan.
-"""
-type Plan {
- """
- The maximum users allowed in the plan.
- """
- max_users: Int!
+"""The operator to use for the value comparison"""
+enum ItemsQueryRuleOperator {
+ """Any of the values"""
+ any_of
+
+ """Between the two values"""
+ between
+
+ """Contains all the terms"""
+ contains_terms
- """
- The plan's time period.
- """
- period: String
+ """Contains the text"""
+ contains_text
- """
- The plan's tier.
- """
- tier: String
+ """Ends with the value"""
+ ends_with
- """
- The plan's version.
- """
- version: Int!
-}
+ """Greater than the value"""
+ greater_than
-"""
-The Platform API's data.
-"""
-type PlatformApi {
- """
- Platform API daily limit.
- """
- daily_limit: DailyLimit
+ """Greater than or equal to the value"""
+ greater_than_or_equals
- """
- API analytics.
- """
- daily_analytics: DailyAnalytics
-}
+ """Empty value"""
+ is_empty
-"""
-API usage per app.
-"""
-type PlatformApiDailyAnalyticsByApp {
- """
- Application.
- """
- app: AppType
+ """Not empty value"""
+ is_not_empty
- """
- API usage for the app.
- """
- usage: Int!
+ """Lower than the value"""
+ lower_than
- """
- API app id
- """
- api_app_id: ID!
-}
+ """Lower than or equal to the value"""
+ lower_than_or_equal
-"""
-API usage per day.
-"""
-type PlatformApiDailyAnalyticsByDay {
- """
- Day.
- """
- day: String!
+ """None of the values"""
+ not_any_of
- """
- API usage for the day.
- """
- usage: Int!
-}
+ """Does not contain the text"""
+ not_contains_text
-"""
-API usage per user.
-"""
-type PlatformApiDailyAnalyticsByUser {
- """
- User.
- """
- user: User!
+ """Starts with the value"""
+ starts_with
- """
- API usage for the user.
- """
- usage: Int!
+ """Within the last"""
+ within_the_last
+
+ """Within the next """
+ within_the_next
}
-"""
-The position relative method.
-"""
-enum PositionRelative {
+type ItemsResponse {
"""
- position after at the given entity.
+ An opaque cursor that represents the position in the list after the last
+ returned item. Use this cursor for pagination to fetch the next set of items.
+ If the cursor is null, there are no more items to fetch.
"""
- after_at
+ cursor: String
- """
- position before at the given entity.
- """
- before_at
+ """The items associated with the cursor."""
+ items: [Item!]!
}
-"""
-The product to invite the users to.
-"""
-enum Product {
- work_management
- crm
- dev
- service
- whiteboard
- knowledge
- forms
- workflows
+"""Kind of assignee"""
+enum Kind {
+ """Represents a person"""
+ person
+
+ """Represents a team"""
+ team
}
-type ProgressValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
+type LastUpdatedValue implements ColumnValue {
+ """The column that this value belongs to."""
column: Column!
- """
- The column's unique identifier.
- """
+ """The column's unique identifier."""
id: ID!
-
- """
- Text representation of the column value. Note: Not all columns support textual value
- """
text: String
- """
- The column's type.
- """
+ """The column's type."""
type: ColumnType!
- """
- The column's raw value in JSON format.
- """
- value: JSON
-}
-
-"""
-Get your data from monday.com
-"""
-type Query {
- """
- Get a collection of updates.
- """
- updates(
- """
- Number of items to get, the default is 25.
- """
- limit: Int = 25
-
- """
- Page number to get, starting at 1.
- """
- page: Int = 1
-
- """
- A list of items unique identifiers.
- """
- ids: [ID!]
- ): [Update!]
- custom_activity(
- """
- The ids of the custom activities to fetch
- """
- ids: [String!]
+ """Timestamp of the last time the item was updated"""
+ updated_at: Date
- """
- The name of the custom activity, case insensitive and partial match
- """
- name: String
+ """User who updated the item"""
+ updater: User
- """
- The icon of the custom activity
- """
- icon_id: CustomActivityIcon
+ """ID of the user who updated the item"""
+ updater_id: ID
- """
- The color of the custom activity
- """
- color: CustomActivityColor
- ): [CustomActivity!]
- timeline_item(
- """
- The id of the timeline item to delete
- """
- id: ID!
- ): TimelineItem
+ """The column's raw value in JSON format."""
+ value: JSON
+}
- """
- Fetches timeline items for a given item
- """
- timeline(
- """
- The id of the item
- """
- id: ID!
- ): TimelineResponse
+type LinkValue implements ColumnValue {
+ """The column that this value belongs to."""
+ column: Column!
- """
- Get managed column data.
- """
- managed_column(
- """
- The managed column ids.
- """
- id: [String!]
+ """The column's unique identifier."""
+ id: ID!
+ text: String
- """
- The state of the managed column.
- """
- state: [ManagedColumnState!]
- ): [ManagedColumn!]
- marketplace_app_discounts(
- """
- The id of an app
- """
- app_id: ID!
- ): [MarketplaceAppDiscount!]!
- app_subscriptions(
- """
- The ID of an app
- """
- app_id: ID!
- status: SubscriptionStatus
+ """The column's type."""
+ type: ColumnType!
- """
- The ID of an account
- """
- account_id: Int
+ """The date when column value was last updated."""
+ updated_at: Date
- """
- The value, which identifies the exact point to continue fetching the subscriptions from
- """
- cursor: String
+ """Url"""
+ url: String
- """
- The size of the requested page
- """
- limit: Int
- ): AppSubscriptions!
+ """Url text"""
+ url_text: String
- """
- Get an app by ID.
- """
- app(
- """
- The ID of the app
- """
- id: ID!
- ): AppType
+ """The column's raw value in JSON format."""
+ value: JSON
+}
- """
- Get the connected account's information.
- """
- account: Account
+type LocationValue implements ColumnValue {
+ """Address"""
+ address: String
- """
- Get a collection of installs of an app.
- """
- app_installs(
- """
- The id of an account to filter app installs by.
- """
- account_id: ID
+ """City"""
+ city: String
- """
- The id of an application.
- """
- app_id: ID!
+ """City"""
+ city_short: String
- """
- Number of items to get, the default is 25. Max: 100
- """
- limit: Int = 25
+ """The column that this value belongs to."""
+ column: Column!
- """
- Page number to get, starting at 1.
- """
- page: Int = 1
- ): [AppInstall]
+ """Country"""
+ country: String
- """
- Get the current app subscription. Note: This query does not work in the playground
- """
- app_subscription: [AppSubscription]
+ """Country short name (e.g. PE for Peru)"""
+ country_short: String
- """
- Get operations counter current value
- """
- app_subscription_operations(
- """
- Operation name. A string of up to 14 characters containing alphanumeric characters and the symbols -_
- """
- kind: String = "global"
- ): AppSubscriptionOperationsCounter
+ """The column's unique identifier."""
+ id: ID!
- """
- Get apps monetization information for an account
- """
- apps_monetization_info: AppsMonetizationInfo
+ """Latitude"""
+ lat: Float
- """
- Get apps monetization status for an account
- """
- apps_monetization_status: AppMonetizationStatus
+ """Longitude"""
+ lng: Float
- """
- Get a collection of assets by ids.
- """
- assets(
- """
- Ids of the assets/files you want to get
- """
- ids: [ID!]!
- ): [Asset]
+ """Place ID of the location"""
+ place_id: String
- """
- Get a collection of boards.
- """
- boards(
- """
- The board's kind (public / private / share)
- """
- board_kind: BoardKind
+ """Street"""
+ street: String
- """
- A list of boards unique identifiers.
- """
- ids: [ID!]
+ """Number of building in the street"""
+ street_number: String
- """
- Boolean that brings the latest data
- """
- latest: Boolean
+ """Short number of building in the street"""
+ street_number_short: String
- """
- Number of items to get, the default is 25.
- """
- limit: Int = 25
+ """Street"""
+ street_short: String
+ text: String
- """
- Property to order by (created_at / used_at).
- """
- order_by: BoardsOrderBy
+ """The column's type."""
+ type: ColumnType!
- """
- Page number to get, starting at 1.
- """
- page: Int = 1
+ """The date when column value was last updated."""
+ updated_at: Date
- """
- The state of the board (all / active / archived / deleted), the default is active.
- """
- state: State = active
+ """The column's raw value in JSON format."""
+ value: JSON
+}
- """
- A list of workspace ids the boards are contained in.
- """
- workspace_ids: [ID]
- ): [Board]
+type LongTextValue implements ColumnValue {
+ """The column that this value belongs to."""
+ column: Column!
- """
- Get the complexity data of your queries.
- """
- complexity: Complexity
+ """The column's unique identifier."""
+ id: ID!
"""
- Get a collection of docs.
+ Text representation of the column value. Note: Not all columns support textual value
"""
- docs(
- """
- A list of document unique identifiers.
- """
- ids: [ID!]
+ text: String
- """
- Number of items to get, the default is 25.
- """
- limit: Int = 25
+ """The column's type."""
+ type: ColumnType!
- """
- A list of associated board or object’s unique identifier.
- """
- object_ids: [ID!]
+ """The date when column value was last updated."""
+ updated_at: Date
- """
- Property to order by (created_at / used_at).
- """
- order_by: DocsOrderBy
+ """The column's raw value in JSON format."""
+ value: JSON
+}
- """
- Page number to get, starting at 1.
- """
- page: Int = 1
+type MirroredItem {
+ """The linked board."""
+ linked_board: Board!
- """
- A list of workspace ids the documents are contained in.
- """
- workspace_ids: [ID]
- ): [Document]
+ """The linked board's unique identifier."""
+ linked_board_id: ID!
- """
- Get a collection of folders. Note: This query won't return folders from closed workspaces to which you are not subscribed
- """
- folders(
- """
- A list of folders unique identifiers.
- """
- ids: [ID!]
+ """The linked item."""
+ linked_item: Item!
- """
- Number of items to get, the default is 25.
- """
- limit: Int = 25
+ """The mirrored values."""
+ mirrored_value: MirroredValue
+}
- """
- Page number to get, starting at 1.
- """
- page: Int = 1
+"""Represents a mirrored value (column value, group, or board)."""
+union MirroredValue = Board | BoardRelationValue | ButtonValue | CheckboxValue | ColorPickerValue | CountryValue | CreationLogValue | DateValue | DependencyValue | DocValue | DropdownValue | EmailValue | FileValue | FormulaValue | Group | GroupValue | HourValue | IntegrationValue | ItemIdValue | LastUpdatedValue | LinkValue | LocationValue | LongTextValue | MirrorValue | NumbersValue | PeopleValue | PersonValue | PhoneValue | ProgressValue | RatingValue | StatusValue | SubtasksValue | TagsValue | TeamValue | TextValue | TimeTrackingValue | TimelineValue | UnsupportedValue | VoteValue | WeekValue | WorldClockValue
- """
- A list of workspace unique identifiers to filter folders by workspaces. (pass null to include Main Workspace)
- """
- workspace_ids: [ID]
- ): [Folder]
+type MirrorValue implements ColumnValue {
+ """The column that this value belongs to."""
+ column: Column!
"""
- Get a collection of items.
+ A string representing all the names of the linked items, separated by commas
"""
- items(
- """
- Excludes items that are inactive, deleted or belong to deleted items
- """
- exclude_nonactive: Boolean
-
- """
- A list of items unique identifiers.
- """
- ids: [ID!]
-
- """
- Number of items to get, the default is 25.
- """
- limit: Int = 25
+ display_value: String!
- """
- Get the recently created items at the top of the list
- """
- newest_first: Boolean
+ """The column's unique identifier."""
+ id: ID!
- """
- Page number to get, starting at 1.
- """
- page: Int = 1
- ): [Item]
+ """The mirrored items."""
+ mirrored_items: [MirroredItem!]!
"""
- Search items by multiple columns and values.
+ Text representation of the column value. Note: Not all columns support textual value
"""
- items_page_by_column_values(
- """
- The board's unique identifier.
- """
- board_id: ID!
+ text: String
- """
- One or more columns, and their values to search items by.
- """
- columns: [ItemsPageByColumnValuesQuery!]
+ """The column's type."""
+ type: ColumnType!
- """
- An opaque token representing the position in the result set from which to
- resume fetching items. Use this to paginate through large result sets.
- """
- cursor: String
+ """The column's raw value in JSON format."""
+ value: JSON
+}
- """
- The maximum number of items to fetch in a single request. Use this to
- control the size of the result set and manage pagination. Maximum: 500.
- """
- limit: Int! = 25
- ): ItemsResponse!
+"""A notification."""
+type Notification {
+ """The notification's unique identifier."""
+ id: ID!
- """
- Get the connected user's information.
- """
- me: User
+ """The notification text."""
+ text: String
+}
- """
- Get next pages of board's items (rows) by cursor.
- """
- next_items_page(
- """
- An opaque token representing the position in the result set from which to
- resume fetching items. Use this to paginate through large result sets.
- """
- cursor: String!
+"""The notification's target type."""
+enum NotificationTargetType {
+ """Update"""
+ Post
- """
- The maximum number of items to fetch in a single request. Use this to
- control the size of the result set and manage pagination. Maximum: 500.
- """
- limit: Int! = 25
- ): ItemsResponse!
+ """Item or Board."""
+ Project
+}
- """
- Get a collection of tags.
- """
- tags(
- """
- A list of tags unique identifiers.
- """
- ids: [ID!]
- ): [Tag]
+type NumbersValue implements ColumnValue {
+ """The column that this value belongs to."""
+ column: Column!
"""
- Get a collection of teams.
+ Indicates where the symbol should be placed - on the right or left of the number
"""
- teams(
- """
- A list of teams unique identifiers.
- """
- ids: [ID!]
- ): [Team]
+ direction: NumberValueUnitDirection
- """
- Get a collection of users.
- """
- users(
- """
- A list of users' emails.
- """
- emails: [String]
+ """The column's unique identifier."""
+ id: ID!
- """
- A list of users' unique identifiers.
- """
- ids: [ID!]
+ """Number"""
+ number: Float
- """
- The kind to search users by (all / non_guests / guests / non_pending).
- """
- kind: UserKind
+ """The symbol of the unit"""
+ symbol: String
+ text: String
- """
- Number of users to get.
- """
- limit: Int
+ """The column's type."""
+ type: ColumnType!
- """
- Allows to fuzzy search by name
- """
- name: String
+ """The column's raw value in JSON format."""
+ value: JSON
+}
- """
- Get the recently created users at the top of the list
- """
- newest_first: Boolean
+"""Indicates where the unit symbol should be placed in a number value"""
+enum NumberValueUnitDirection {
+ """The symbol is placed on the left of the number"""
+ left
- """
- Return non active users in the account.
- """
- non_active: Boolean
+ """The symbol is placed on the right of the number"""
+ right
+}
- """
- Page number to get, starting at 1.
- """
- page: Int
- ): [User]
+"""The working status of a user."""
+type OutOfOffice {
+ """Is the status active?"""
+ active: Boolean
- """
- Get a collection of webhooks for the board
- """
- webhooks(
- """
- Filters webhooks that were created by the app initiating the request
- """
- app_webhooks_only: Boolean
+ """Are notification disabled?"""
+ disable_notifications: Boolean
+
+ """The status end date."""
+ end_date: Date
+
+ """The status start date."""
+ start_date: Date
+
+ """Out of office type."""
+ type: String
+}
+
+type PeopleEntity {
+ """Id of the entity: a person or a team"""
+ id: ID!
+
+ """Type of entity"""
+ kind: Kind
+}
- """
- Board unique identifier.
- """
- board_id: ID!
- ): [Webhook]
+type PeopleValue implements ColumnValue {
+ """The column that this value belongs to."""
+ column: Column!
- """
- Get a collection of workspaces.
- """
- workspaces(
- """
- A list of workspace unique identifiers.
- """
- ids: [ID!]
+ """The column's unique identifier."""
+ id: ID!
- """
- The workspace's kind (open / closed)
- """
- kind: WorkspaceKind
+ """The people and teams assigned to the item."""
+ persons_and_teams: [PeopleEntity!]
+ text: String
- """
- Number of items to get, the default is 25.
- """
- limit: Int = 25
+ """The column's type."""
+ type: ColumnType!
- """
- Property to order by (created_at).
- """
- order_by: WorkspacesOrderBy
+ """The date when column value was last updated."""
+ updated_at: Date
- """
- Page number to get, starting at 1.
- """
- page: Int = 1
+ """The column's raw value in JSON format."""
+ value: JSON
+}
- """
- The state of the workspace (all / active / archived / deleted), the default is active.
- """
- state: State = active
- ): [Workspace]
+type PersonValue implements ColumnValue {
+ """The column that this value belongs to."""
+ column: Column!
- """
- Get the API version in use
- """
- version: Version!
+ """The column's unique identifier."""
+ id: ID!
- """
- Get a list containing the versions of the API
- """
- versions: [Version!]
+ """The person assigned to the item."""
+ person_id: ID
+ text: String
- """
- Platform API data.
- """
- platform_api: PlatformApi
+ """The column's type."""
+ type: ColumnType!
- """
- Get all roles for the account
- """
- account_roles: [AccountRole!]
+ """The date when column value was last updated."""
+ updated_at: Date
+
+ """The column's raw value in JSON format."""
+ value: JSON
}
-type RatingValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
+type PhoneValue implements ColumnValue {
+ """The column that this value belongs to."""
column: Column!
- """
- The column's unique identifier.
- """
+ """ISO-2 country code"""
+ country_short_name: String
+
+ """The column's unique identifier."""
id: ID!
- """
- Rating value
- """
- rating: Int
+ """Phone number"""
+ phone: String
text: String
- """
- The column's type.
- """
+ """The column's type."""
type: ColumnType!
- """
- The date when column value was last updated.
- """
+ """The date when column value was last updated."""
updated_at: Date
- """
- The column's raw value in JSON format.
- """
+ """The column's raw value in JSON format."""
value: JSON
}
-"""
-Error that occurred while removing team owners.
-"""
-type RemoveTeamOwnersError {
- """
- The error message.
- """
- message: String
+"""A payment plan."""
+type Plan {
+ """The maximum users allowed in the plan."""
+ max_users: Int!
- """
- The error code.
- """
- code: RemoveTeamOwnersErrorCode
+ """The plan's time period."""
+ period: String
- """
- The id of the user that caused the error.
- """
- user_id: ID
-}
+ """The plan's tier."""
+ tier: String
-"""
-Error codes that can occur while removing team owners.
-"""
-enum RemoveTeamOwnersErrorCode {
- VIEWERS_OR_GUESTS
- USER_NOT_MEMBER_OF_TEAM
- EXCEEDS_BATCH_LIMIT
- INVALID_INPUT
- USER_NOT_FOUND
- CANNOT_UPDATE_SELF
- FAILED
+ """The plan's version."""
+ version: Int!
}
-"""
-Result of removing the team's ownership.
-"""
-type RemoveTeamOwnersResult {
- """
- The team for which the owners were removed.
- """
- team: Team
+"""The position relative method."""
+enum PositionRelative {
+ """position after at the given entity."""
+ after_at
- """
- Errors that occurred while removing team owners.
- """
- errors: [RemoveTeamOwnersError!]
+ """position before at the given entity."""
+ before_at
}
-"""
-A reply for an update.
-"""
-type Reply {
- """
- The reply's unique identifier.
- """
+type ProgressValue implements ColumnValue {
+ """The column that this value belongs to."""
+ column: Column!
+
+ """The column's unique identifier."""
id: ID!
"""
- The reply's html formatted body.
+ Text representation of the column value. Note: Not all columns support textual value
"""
- body: String!
- kind: String!
+ text: String
- """
- The unique identifier of the reply creator.
- """
- creator_id: String
- edited_at: Date!
+ """The column's type."""
+ type: ColumnType!
- """
- The reply's creator.
- """
- creator: User
- likes: [Like!]!
- pinned_to_top: [UpdatePin!]!
- viewers(
- """
- Number of items to get, the default is 100.
- """
- limit: Int = 100
+ """The column's raw value in JSON format."""
+ value: JSON
+}
- """
- Page number to get, starting at 1.
- """
- page: Int = 1
- ): [Watcher!]!
+type RatingValue implements ColumnValue {
+ """The column that this value belongs to."""
+ column: Column!
- """
- The reply's creation date.
- """
- created_at: Date
+ """The column's unique identifier."""
+ id: ID!
- """
- The reply's last edit date.
- """
+ """Rating value"""
+ rating: Int
+ text: String
+
+ """The column's type."""
+ type: ColumnType!
+
+ """The date when column value was last updated."""
updated_at: Date
- """
- The reply's text body.
- """
- text_body: String
+ """The column's raw value in JSON format."""
+ value: JSON
}
-"""
-The possible states for a board or item.
-"""
+"""The possible states for a board or item."""
enum State {
- """
- Active only (Default).
- """
+ """Active only (Default)."""
active
- """
- Active, Archived and Deleted.
- """
+ """Active, Archived and Deleted."""
all
- """
- Archived only.
- """
+ """Archived only."""
archived
- """
- Deleted only.
- """
+ """Deleted only."""
deleted
}
-enum StatusColumnColors {
- working_orange
- done_green
- stuck_red
- dark_blue
- purple
- explosive
- grass_green
- bright_blue
- saladish
- egg_yolk
- blackish
- dark_red
- sofia_pink
- lipstick
- dark_purple
- bright_green
- chili_blue
- american_gray
- brown
- dark_orange
- sunset
- bubble
- peach
- berry
- winter
- river
- navy
- aquamarine
- indigo
- dark_indigo
- pecan
- lavender
- royal
- steel
- orchid
- lilac
- tan
- sky
- coffee
- teal
-}
-
-type StatusColumnSettings {
- type: ManagedColumnTypes
- labels: [StatusLabel!]
-}
-
-type StatusLabel {
- id: Int
- label: String
- color: StatusColumnColors
- index: Int
- description: String
- is_deactivated: Boolean
- is_done: Boolean
-}
-
-"""
-A status label style.
-"""
+"""A status label style."""
type StatusLabelStyle {
- """
- The label's border color in hex format.
- """
- border: String!
-
- """
- The label's color in hex format.
- """
- color: String!
-}
-
-type StatusManagedColumn {
- id: String
- title: String
- description: String
- settings_json: JSON
- created_by: Int
- updated_by: Int
- revision: Int
- state: ManagedColumnState
- created_at: Date
- updated_at: Date
- settings: StatusColumnSettings
+ """The label's border color in hex format."""
+ border: String!
+
+ """The label's color in hex format."""
+ color: String!
}
type StatusValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
+ """The column that this value belongs to."""
column: Column!
- """
- The column's unique identifier.
- """
+ """The column's unique identifier."""
id: ID!
- """
- The index of the status in the board
- """
+ """The index of the status in the board"""
index: Int
- """
- Whether the status is done
- """
+ """Whether the status is done"""
is_done: Boolean
- """
- The label of the status
- """
+ """The label of the status"""
label: String
- """
- The style of the status label
- """
+ """The style of the status label"""
label_style: StatusLabelStyle
text: String
- """
- The column's type.
- """
+ """The column's type."""
type: ColumnType!
- """
- The ID of an update attached to the status
- """
+ """The ID of an update attached to the status"""
update_id: ID
- """
- The date when column value was last updated.
- """
+ """The date when column value was last updated."""
updated_at: Date
- """
- The column's raw value in JSON format.
- """
+ """The column's raw value in JSON format."""
value: JSON
}
-"""
-The discounts granted to the subscription
-"""
-type SubscriptionDiscount {
- """
- The value of the discount in percentage (e.g. the value 80 refers to 80%)
- """
- value: Int!
- discount_model_type: SubscriptionDiscountModelType!
- discount_type: SubscriptionDiscountType!
-}
-
-"""
-The information whether the discount is percentage or nominal
-"""
-enum SubscriptionDiscountModelType {
- percent
- nominal
-}
-
-"""
-The information whether the discount has been granted one time or recurring
-"""
-enum SubscriptionDiscountType {
- recurring
- one_time
-}
-
-"""
-The billing period of the subscription. Possible values: monthly, yearly
-"""
-enum SubscriptionPeriodType {
- monthly
- yearly
-}
-
-"""
-The status of the subscription. Possible values: active, inactive.
-"""
-enum SubscriptionStatus {
- active
- inactive
-}
-
type SubtasksValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
+ """The column that this value belongs to."""
column: Column!
"""
@@ -7007,19 +4495,13 @@ type SubtasksValue implements ColumnValue {
"""
display_value: String!
- """
- The column's unique identifier.
- """
+ """The column's unique identifier."""
id: ID!
- """
- The subitems
- """
+ """The subitems"""
subitems: [Item!]!
- """
- The subitems IDs
- """
+ """The subitems IDs"""
subitems_ids: [ID!]!
"""
@@ -7027,387 +4509,190 @@ type SubtasksValue implements ColumnValue {
"""
text: String
- """
- The column's type.
- """
+ """The column's type."""
type: ColumnType!
- """
- The column's raw value in JSON format.
- """
+ """The column's raw value in JSON format."""
value: JSON
}
-"""
-A tag
-"""
+"""A tag"""
type Tag {
- """
- The tag's color.
- """
+ """The tag's color."""
color: String!
- """
- The tag's unique identifier.
- """
+ """The tag's unique identifier."""
id: ID!
- """
- The tag's name.
- """
+ """The tag's name."""
name: String!
}
type TagsValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
+ """The column that this value belongs to."""
column: Column!
- """
- The column's unique identifier.
- """
+ """The column's unique identifier."""
id: ID!
- """
- Tag ID's
- """
+ """Tag ID's"""
tag_ids: [Int!]!
- """
- A list of tags
- """
+ """A list of tags"""
tags: [Tag!]!
text: String
- """
- The column's type.
- """
+ """The column's type."""
type: ColumnType!
- """
- The column's raw value in JSON format.
- """
+ """The column's raw value in JSON format."""
value: JSON
}
-"""
-A team of users.
-"""
+"""A team of users."""
type Team {
- """
- The team's unique identifier.
- """
+ """The team's unique identifier."""
id: ID!
- """
- The users who are the owners of the team.
- """
+ """The users who are the owners of the team."""
owners(
- """
- A list of users' unique identifiers.
- """
+ """A list of users' unique identifiers."""
ids: [ID!]
): [User!]!
- """
- The team's picture url.
- """
+ """The team's picture url."""
picture_url: String
- """
- The users in the team.
- """
+ """The users in the team."""
users(
- """
- A list of users' emails.
- """
+ """A list of users' emails."""
emails: [String]
- """
- A list of users' unique identifiers.
- """
+ """A list of users' unique identifiers."""
ids: [ID!]
- """
- The kind to search users by (all / non_guests / guests / non_pending).
- """
+ """The kind to search users by (all / non_guests / guests / non_pending)."""
kind: UserKind
- """
- Number of users to get.
- """
+ """Number of users to get."""
limit: Int
- """
- Allows to fuzzy search by name
- """
+ """Allows to fuzzy search by name"""
name: String
- """
- Get the recently created users at the top of the list
- """
+ """Get the recently created users at the top of the list"""
newest_first: Boolean
- """
- Return non active users in the account.
- """
+ """Return non active users in the account."""
non_active: Boolean
- """
- Page number to get, starting at 1.
- """
+ """Page number to get, starting at 1."""
page: Int
): [User]
- """
- The team's name.
- """
+ """The team's name."""
name: String!
- """
- Whether the team is a guest team
- """
+ """Whether the team is a guest team"""
is_guest: Boolean
}
type TeamValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
+ """The column that this value belongs to."""
column: Column!
- """
- The column's unique identifier.
- """
+ """The column's unique identifier."""
id: ID!
- """
- ID of the assigned team
- """
+ """ID of the assigned team"""
team_id: Int
text: String
- """
- The column's type.
- """
+ """The column's type."""
type: ColumnType!
- """
- The date when column value was last updated.
- """
+ """The date when column value was last updated."""
updated_at: Date
- """
- The column's raw value in JSON format.
- """
+ """The column's raw value in JSON format."""
value: JSON
}
-"""
-A monday.com template.
-"""
+"""A monday.com template."""
type Template {
- """
- The template process unique identifier for async operations.
- """
+ """The template process unique identifier for async operations."""
process_id: String
}
type TextValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
+ """The column that this value belongs to."""
column: Column!
- """
- The column's unique identifier.
- """
+ """The column's unique identifier."""
id: ID!
- """
- The column's textual value
- """
+ """The column's textual value"""
text: String
- """
- The column's type.
- """
+ """The column's type."""
type: ColumnType!
- """
- The column's raw value in JSON format.
- """
+ """The column's raw value in JSON format."""
value: JSON
}
-type TimelineItem {
- id: ID
- type: String
-
- """
- The item that the timeline item is on.
- """
- item: Item
-
- """
- The board that the timeline item is on.
- """
- board: Board
-
- """
- The user who created the timeline item.
- """
- user: User
-
- """
- The title of the timeline item.
- """
- title: String
-
- """
- The external ID of the custom activity of the timeline item.
- """
- custom_activity_id: String
-
- """
- The content of the timeline item.
- """
- content: String
-
- """
- The creation date of the timeline item.
- """
- created_at: Date!
-}
-
-type TimelineItemsPage {
- """
- The timeline items in the current page
- """
- timeline_items: [TimelineItem!]!
-
- """
- Cursor for fetching the next page
- """
- cursor: String
-}
-
-input TimelineItemTimeRange {
- """
- Start time
- """
- start_timestamp: ISO8601DateTime!
-
- """
- End time
- """
- end_timestamp: ISO8601DateTime!
-}
-
-type TimelineResponse {
- """
- Paginated set of timeline items and a cursor to get the next page
- """
- timeline_items_page(
- """
- The cursor for the next set of timeline items
- """
- cursor: String = null
-
- """
- The limit for the current page of timeline items
- """
- limit: Int = 25
- ): TimelineItemsPage!
-}
-
type TimelineValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
+ """The column that this value belongs to."""
column: Column!
- """
- The start date of the timeline
- """
+ """The start date of the timeline"""
from: Date
- """
- The column's unique identifier.
- """
+ """The column's unique identifier."""
id: ID!
- """
- The range of dates representing the timeline (YYYY-MM-DD)
- """
+ """The range of dates representing the timeline (YYYY-MM-DD)"""
text: String
- """
- The end date of the timeline
- """
+ """The end date of the timeline"""
to: Date
- """
- The column's type.
- """
+ """The column's type."""
type: ColumnType!
- """
- The date when column value was last updated.
- """
+ """The date when column value was last updated."""
updated_at: Date
- """
- The column's raw value in JSON format.
- """
+ """The column's raw value in JSON format."""
value: JSON
- """
- The visualization type for the timeline
- """
+ """The visualization type for the timeline"""
visualization_type: String
}
type TimeTrackingHistoryItem {
- """
- When the session was added to the cell
- """
+ """When the session was added to the cell"""
created_at: Date!
- """
- Only applicable if the session has ended
- """
+ """Only applicable if the session has ended"""
ended_at: Date
- """
- The identifier of an user which ended the tracking
- """
+ """The identifier of an user which ended the tracking"""
ended_user_id: ID
- """
- A unique session identifier
- """
+ """A unique session identifier"""
id: ID!
- """
- Is true if the session end date was manually entered
- """
+ """Is true if the session end date was manually entered"""
manually_entered_end_date: Boolean!
- """
- Is true if the session end time was manually entered
- """
+ """Is true if the session end time was manually entered"""
manually_entered_end_time: Boolean!
- """
- Is true if the session start date was manually entered
- """
+ """Is true if the session start date was manually entered"""
manually_entered_start_date: Boolean!
-
- """
- Is true if the session start time was manually entered
- """
+
+ """Is true if the session start time was manually entered"""
manually_entered_start_time: Boolean!
"""
@@ -7415,71 +4700,47 @@ type TimeTrackingHistoryItem {
"""
started_at: Date
- """
- The identifier of an user which started the tracking
- """
+ """The identifier of an user which started the tracking"""
started_user_id: ID
- """
- The status of the session
- """
+ """The status of the session"""
status: String!
- """
- When the session was updated
- """
+ """When the session was updated"""
updated_at: Date
}
type TimeTrackingValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
+ """The column that this value belongs to."""
column: Column!
- """
- Total duration of the time tracker
- """
+ """Total duration of the time tracker"""
duration: Int
history: [TimeTrackingHistoryItem!]!
- """
- The column's unique identifier.
- """
+ """The column's unique identifier."""
id: ID!
- """
- Whether the time tracker is running
- """
+ """Whether the time tracker is running"""
running: Boolean
- """
- The date when the time tracker was started
- """
+ """The date when the time tracker was started"""
started_at: Date
text: String
- """
- The column's type.
- """
+ """The column's type."""
type: ColumnType!
- """
- The date when column value was last updated.
- """
+ """The date when column value was last updated."""
updated_at: Date
value: JSON
}
type UnsupportedValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
+ """The column that this value belongs to."""
column: Column!
- """
- The column's unique identifier.
- """
+ """The column's unique identifier."""
id: ID!
"""
@@ -7487,1059 +4748,765 @@ type UnsupportedValue implements ColumnValue {
"""
text: String
- """
- The column's type.
- """
+ """The column's type."""
type: ColumnType!
- """
- The column's raw value in JSON format.
- """
+ """The column's raw value in JSON format."""
value: JSON
}
-"""
-An update.
-"""
-type Update {
- """
- The update's unique identifier.
- """
- id: ID!
-
- """
- The update's html formatted body.
- """
- body: String!
-
- """
- The unique identifier of the update creator.
- """
- creator_id: String
- edited_at: Date!
+"""Attributes of a workspace to update"""
+input UpdateWorkspaceAttributesInput {
+ """The description of the workspace to update"""
+ description: String
- """
- The update's creator.
- """
- creator: User
- likes: [Like!]!
- pinned_to_top: [UpdatePin!]!
- viewers(
- """
- Number of items to get, the default is 100.
- """
- limit: Int = 100
+ """The kind of the workspace to update (open / closed)"""
+ kind: WorkspaceKind
- """
- Page number to get, starting at 1.
- """
- page: Int = 1
- ): [Watcher!]!
+ """The name of the workspace to update"""
+ name: String
+}
- """
- The update's creation date.
- """
- created_at: Date
+"""The possibilities for a user kind."""
+enum UserKind {
+ """All users in account."""
+ all
- """
- The update's last edit date.
- """
- updated_at: Date
+ """Only guests."""
+ guests
- """
- The update's item ID.
- """
- item_id: String
- item: Item
+ """Only company members."""
+ non_guests
- """
- The update's replies.
- """
- replies: [Reply!]
+ """All non pending members."""
+ non_pending
+}
- """
- The update's assets/files.
- """
- assets: [Asset]
+"""An object containing the API version details"""
+type Version {
+ """The display name of the API version"""
+ display_name: String!
- """
- The update's text body.
- """
- text_body: String
-}
+ """The type of the API version"""
+ kind: VersionKind!
-input UpdateDropdownColumnSettingsInput {
- labels: [UpdateDropdownLabelInput!]!
+ """Version string that can be used in API-Version header"""
+ value: String!
}
-input UpdateDropdownLabelInput {
- label: String!
- id: Int
- is_deactivated: Boolean
-}
+"""All possible API version types"""
+enum VersionKind {
+ """Current version"""
+ current
-"""
-Attributes of the email domain to be updated.
-"""
-input UpdateEmailDomainAttributesInput {
"""
- The user identifiers (max 200)
+ No longer supported version. Migrate to current version as soon as possible
"""
- user_ids: [ID!]!
+ deprecated
- """
- The new email domain.
- """
- new_domain: String!
-}
+ """Bleeding-edge rolling version that constantly changes"""
+ dev
+
+ """Previous version. Migrate to current version as soon as possible"""
+ maintenance
-"""
-Error that occurred while changing email domain.
-"""
-type UpdateEmailDomainError {
"""
- The error message.
+ Old version that will be deprecated in January. Migrate to current version as soon as possible
"""
- message: String
+ old__maintenance
"""
- The error code.
+ Old version that will be deprecated in January. Migrate to current version as soon as possible
"""
- code: UpdateEmailDomainErrorCode
+ old_previous_maintenance
"""
- The id of the user that caused the error.
+ Older version that will be deprecated in January. Migrate to current version as soon as possible
"""
- user_id: ID
-}
+ previous_maintenance
-"""
-Error codes that can occur while changing email domain.
-"""
-enum UpdateEmailDomainErrorCode {
- UPDATE_EMAIL_DOMAIN_ERROR
- EXCEEDS_BATCH_LIMIT
- INVALID_INPUT
- USER_NOT_FOUND
- CANNOT_UPDATE_SELF
- FAILED
+ """Next version"""
+ release_candidate
}
-"""
-Result of updating the email domain for the specified users.
-"""
-type UpdateEmailDomainResult {
- """
- The users for which the email domain was updated.
- """
- updated_users: [User!]
+type VoteValue implements ColumnValue {
+ """The column that this value belongs to."""
+ column: Column!
- """
- Errors that occurred during the update.
- """
- errors: [UpdateEmailDomainError!]
-}
+ """The column's unique identifier."""
+ id: ID!
+ text: String
-"""
-The pin to top data of the update.
-"""
-type UpdatePin {
- item_id: ID!
-}
+ """The column's type."""
+ type: ColumnType!
-input UpdateStatusColumnSettingsInput {
- labels: [UpdateStatusLabelInput!]!
-}
+ """The date when column value was last updated."""
+ updated_at: Date
-input UpdateStatusLabelInput {
- label: String!
- color: StatusColumnColors!
- index: Int!
- description: String
- is_done: Boolean
- id: Int
- is_deactivated: Boolean
-}
+ """The column's raw value in JSON format."""
+ value: JSON
-"""
-Error that occurred while updating users attributes.
-"""
-type UpdateUserAttributesError {
- """
- The error message.
- """
- message: String
+ """The total number of votes"""
+ vote_count: Int!
- """
- The error code.
- """
- code: UpdateUserAttributesErrorCode
+ """A list of IDs of users who voted"""
+ voter_ids: [ID!]!
- """
- The id of the user that caused the error.
- """
- user_id: ID
+ """A list of users who voted"""
+ voters: [User!]!
}
-"""
-Error codes that can occur while updating user attributes.
-"""
-enum UpdateUserAttributesErrorCode {
- INVALID_FIELD
-}
+"""Monday webhooks"""
+type Webhook {
+ """The webhooks's board id."""
+ board_id: ID!
-"""
-The result of updating users attributes.
-"""
-type UpdateUserAttributesResult {
- """
- The users that were updated.
- """
- updated_users: [User!]
+ """The webhooks's config."""
+ config: String
- """
- Errors that occurred during the update.
- """
- errors: [UpdateUserAttributesError!]
+ """The event webhook will listen to"""
+ event: WebhookEventType!
+
+ """The webhooks's unique identifier."""
+ id: ID!
}
-"""
-Error that occurred during updating users role.
-"""
-type UpdateUsersRoleError {
- """
- The error message.
- """
- message: String
+"""The webhook's target type."""
+enum WebhookEventType {
+ """Column value changed on board"""
+ change_column_value
- """
- The error code.
- """
- code: UpdateUsersRoleErrorCode
+ """An item name changed on board"""
+ change_name
- """
- The id of the user that caused the error.
- """
- user_id: ID
-}
+ """Specific Column value changed on board"""
+ change_specific_column_value
-"""
-Error codes for updating users roles.
-"""
-enum UpdateUsersRoleErrorCode {
- EXCEEDS_BATCH_LIMIT
- INVALID_INPUT
- USER_NOT_FOUND
- CANNOT_UPDATE_SELF
- FAILED
-}
+ """Status column value changed on board"""
+ change_status_column_value
-"""
-Result of updating users role.
-"""
-type UpdateUsersRoleResult {
- """
- The users that were updated.
- """
- updated_users: [User!]
+ """Column value changed on board subitem"""
+ change_subitem_column_value
- """
- Errors that occurred during updating users role.
- """
- errors: [UpdateUsersRoleError!]
-}
+ """An subitem name changed on board"""
+ change_subitem_name
-"""
-Attributes of a workspace to update
-"""
-input UpdateWorkspaceAttributesInput {
- """
- The description of the workspace to update
- """
- description: String
+ """Column created on a board"""
+ create_column
+
+ """An item was created on board"""
+ create_item
+
+ """A subitem was created on a board"""
+ create_subitem
- """
- The kind of the workspace to update (open / closed)
- """
- kind: WorkspaceKind
+ """An update was posted on board subitem"""
+ create_subitem_update
- """
- The name of the workspace to update
- """
- name: String
-}
+ """An update was posted on board item"""
+ create_update
-"""
-A monday.com user.
-"""
-type User {
- """
- The user's unique identifier.
- """
- id: ID!
+ """An update was deleted from board item"""
+ delete_update
- """
- The user's account.
- """
- account: Account!
+ """An update was edited on board item"""
+ edit_update
- """
- The products the user is assigned to.
- """
- account_products: [AccountProduct!]
+ """An item was archived on a board"""
+ item_archived
- """
- The user's birthday.
- """
- birthday: Date
+ """An item was deleted from a board"""
+ item_deleted
- """
- The user's country code.
- """
- country_code: String
+ """An item is moved to any group"""
+ item_moved_to_any_group
- """
- The user's creation date.
- """
- created_at: Date
+ """An item is moved to a specific group"""
+ item_moved_to_specific_group
- """
- The current user's language
- """
- current_language: String
+ """An item restored back to board"""
+ item_restored
- """
- The custom field metas of the user profile.
- """
- custom_field_metas: [CustomFieldMetas]
+ """A subitem is moved from one parent to another"""
+ move_subitem
- """
- The custom field values of the user profile.
- """
- custom_field_values: [CustomFieldValue]
+ """A subitem was archived on a board"""
+ subitem_archived
- """
- The user's email.
- """
- email: String!
+ """A subitem was deleted from a board"""
+ subitem_deleted
+}
- """
- Is the user enabled or not.
- """
- enabled: Boolean!
+type WeekValue implements ColumnValue {
+ """The column that this value belongs to."""
+ column: Column!
- """
- The token of the user for email to board.
- """
- encrypt_api_token: String
+ """The end date of the week"""
+ end_date: Date
- """
- Is the user an account admin.
- """
- is_admin: Boolean
+ """The column's unique identifier."""
+ id: ID!
- """
- Is the user a guest or not.
- """
- is_guest: Boolean
+ """The start date of the week"""
+ start_date: Date
- """
- Is the user a pending user
- """
- is_pending: Boolean
+ """The range of dates representing the week (YYYY-MM-DD)"""
+ text: String
- """
- Is user verified his email.
- """
- is_verified: Boolean
+ """The column's type."""
+ type: ColumnType!
- """
- Is the user a view only user or not.
- """
- is_view_only: Boolean
+ """The column's raw value in JSON format."""
+ value: JSON
+}
- """
- The date the user joined the account.
- """
- join_date: Date
+"""A monday.com workspace."""
+type Workspace {
+ """The account product that contains workspace."""
+ account_product: AccountProduct
- """
- Last date & time when user was active
- """
- last_activity: Date
+ """The workspace's creation date."""
+ created_at: Date
- """
- The user's location.
- """
- location: String
+ """The workspace's description."""
+ description: String
- """
- The user's mobile phone number.
- """
- mobile_phone: String
+ """The workspace's unique identifier."""
+ id: ID
- """
- The user's name.
- """
- name: String!
+ """Returns true if it is the default workspace of the product or account"""
+ is_default_workspace: Boolean
- """
- The user's out of office status.
- """
- out_of_office: OutOfOffice
+ """The workspace's kind (open / closed)."""
+ kind: WorkspaceKind
- """
- The user's phone number.
- """
- phone: String
+ """The workspace's name."""
+ name: String!
- """
- The user's photo in the original size.
- """
- photo_original: String
+ """The workspace's user owners."""
+ owners_subscribers(
+ """Number of items to get, the default is 25."""
+ limit: Int = 25
- """
- The user's photo in small size (150x150).
- """
- photo_small: String
+ """Page number to get, starting at 1."""
+ page: Int = 1
+ ): [User]
- """
- The user's photo in thumbnail size (100x100).
- """
- photo_thumb: String
+ """The workspace's settings."""
+ settings: WorkspaceSettings
- """
- The user's photo in small thumbnail size (50x50).
- """
- photo_thumb_small: String
+ """The workspace's state (all / active / archived / deleted)."""
+ state: State
- """
- The user's photo in tiny size (30x30).
- """
- photo_tiny: String
+ """The workspace's team owners."""
+ team_owners_subscribers(
+ """Number of items to get, the default is 25."""
+ limit: Int = 25
- """
- The product to which the user signed up to first.
- """
- sign_up_product_kind: String
+ """Page number to get, starting at 1."""
+ page: Int = 1
+ ): [Team!]
- """
- The teams the user is a member in.
- """
- teams(
- """
- A list of teams unique identifiers.
- """
- ids: [ID!]
+ """The teams subscribed to the workspace."""
+ teams_subscribers(
+ """Number of items to get, the default is 25."""
+ limit: Int = 25
+
+ """Page number to get, starting at 1."""
+ page: Int = 1
): [Team]
- """
- The user's timezone identifier.
- """
- time_zone_identifier: String
+ """The users subscribed to the workspace"""
+ users_subscribers(
+ """Number of items to get, the default is 25."""
+ limit: Int = 25
- """
- The user's title.
- """
- title: String
+ """Page number to get, starting at 1."""
+ page: Int = 1
+ ): [User]
+}
- """
- The user's profile url.
- """
- url: String!
+"""The workspace's icon."""
+type WorkspaceIcon {
+ """The icon color in hex value. Used as a background for the image."""
+ color: String
"""
- The user’s utc hours difference.
+ The public image URL, which is temporary in the case of a file that was
+ uploaded by the user, so you'll need to pull a new version at least once an hour.
+ In case it is null, you can use the first letter of the workspace name.
"""
- utc_hours_diff: Int
+ image: String
}
-"""
-The attributes to update for a user.
-"""
-input UserAttributesInput {
- """
- The birthday of the user.
- """
- birthday: String
+"""The workspace kinds available."""
+enum WorkspaceKind {
+ """Closed workspace, available to enterprise only."""
+ closed
- """
- The email of the user.
- """
- email: String
+ """Open workspace."""
+ open
+}
- """
- The join date of the user.
- """
- join_date: String
+"""The workspace's settings."""
+type WorkspaceSettings {
+ """The workspace icon."""
+ icon: WorkspaceIcon
+}
- """
- The name of the user.
- """
- name: String
+"""Options to order by."""
+enum WorkspacesOrderBy {
+ """The rank order of the workspace creation time (desc)."""
+ created_at
+}
- """
- The location of the user.
- """
- location: String
+"""The workspace subscriber kind."""
+enum WorkspaceSubscriberKind {
+ """Workspace owner."""
+ owner
- """
- The mobile phone of the user.
- """
- mobile_phone: String
+ """Workspace subscriber."""
+ subscriber
+}
- """
- The phone of the user.
- """
- phone: String
+type WorldClockValue implements ColumnValue {
+ """The column that this value belongs to."""
+ column: Column!
- """
- The title of the user.
- """
- title: String
+ """The column's unique identifier."""
+ id: ID!
+ text: String
- """
- The department of the user.
- """
- department: String
+ """Timezone"""
+ timezone: String
+
+ """The column's type."""
+ type: ColumnType!
+
+ """The date when column value was last updated."""
+ updated_at: Date
+
+ """The column's raw value in JSON format."""
+ value: JSON
}
-"""
-The possibilities for a user kind.
-"""
-enum UserKind {
- """
- All users in account.
- """
- all
+"""API usage data."""
+type DailyAnalytics {
+ """Last time the API usage data was updated."""
+ last_updated: ISO8601DateTime
- """
- Only guests.
- """
- guests
+ """API usage per day."""
+ by_day: [PlatformApiDailyAnalyticsByDay!]!
- """
- Only company members.
- """
- non_guests
+ """API usage per app."""
+ by_app: [PlatformApiDailyAnalyticsByApp!]!
- """
- All non pending members.
- """
- non_pending
+ """API usage per user."""
+ by_user: [PlatformApiDailyAnalyticsByUser!]!
}
-"""
-The role of the user.
-"""
-enum UserRole {
- PORTAL_USER
- GUEST
- VIEW_ONLY
- MEMBER
- ADMIN
+"""Platform API daily limit."""
+type DailyLimit {
+ """Base daily limit."""
+ base: Int
+
+ """Total daily limit."""
+ total: Int
}
-input UserUpdateInput {
- user_id: ID!
- user_attribute_updates: UserAttributesInput!
+"""The Platform API's data."""
+type PlatformApi {
+ """Platform API daily limit."""
+ daily_limit: DailyLimit
+
+ """API analytics."""
+ daily_analytics: DailyAnalytics
}
-"""
-An object containing the API version details
-"""
-type Version {
- """
- The display name of the API version
- """
- display_name: String!
+"""API usage per app."""
+type PlatformApiDailyAnalyticsByApp {
+ """Application."""
+ app: AppType
- """
- The type of the API version
- """
- kind: VersionKind!
+ """API usage for the app."""
+ usage: Int!
- """
- Version string that can be used in API-Version header
- """
- value: String!
+ """API app id"""
+ api_app_id: ID!
}
-"""
-All possible API version types
-"""
-enum VersionKind {
- """
- Current version
- """
- current
+"""API usage per day."""
+type PlatformApiDailyAnalyticsByDay {
+ """Day."""
+ day: String!
- """
- No longer supported version. Migrate to current version as soon as possible
- """
- deprecated
+ """API usage for the day."""
+ usage: Int!
+}
- """
- Bleeding-edge rolling version that constantly changes
- """
- dev
+"""API usage per user."""
+type PlatformApiDailyAnalyticsByUser {
+ """User."""
+ user: User!
- """
- Previous version. Migrate to current version as soon as possible
- """
- maintenance
+ """API usage for the user."""
+ usage: Int!
+}
- """
- Old version that will be deprecated in January. Migrate to current version as soon as possible
- """
- old__maintenance
+type ConnectProjectResult {
+ """The unique identifier of the operation."""
+ request_id: ID
- """
- Old version that will be deprecated in January. Migrate to current version as soon as possible
- """
- old_previous_maintenance
+ """Indicates if the operation was successful."""
+ success: Boolean
- """
- Older version that will be deprecated in January. Migrate to current version as soon as possible
- """
- previous_maintenance
+ """A message describing the result of the operation."""
+ message: String
- """
- Next version
- """
- release_candidate
+ """The ID of the created portfolio item, if successful."""
+ portfolio_item_id: String
}
-type VoteValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
- column: Column!
-
- """
- The column's unique identifier.
- """
- id: ID!
- text: String
-
- """
- The column's type.
- """
- type: ColumnType!
+"""A role in the account"""
+type AccountRole {
+ """The ID of the role"""
+ id: ID
- """
- The date when column value was last updated.
- """
- updated_at: Date
+ """The name of the role"""
+ name: String
- """
- The column's raw value in JSON format.
- """
- value: JSON
+ """The type of the role"""
+ roleType: String
+}
- """
- The total number of votes
- """
- vote_count: Int!
+"""Error that occurred during activation."""
+type ActivateUsersError {
+ """The error message."""
+ message: String
- """
- A list of IDs of users who voted
- """
- voter_ids: [ID!]!
+ """The error code."""
+ code: ActivateUsersErrorCode
- """
- A list of users who voted
- """
- voters: [User!]!
+ """The id of the user that caused the error."""
+ user_id: ID
}
-"""
-The viewer of the update.
-"""
-type Watcher {
- user_id: ID!
- medium: String!
- user: User
+"""Error codes for activating users."""
+enum ActivateUsersErrorCode {
+ EXCEEDS_BATCH_LIMIT
+ INVALID_INPUT
+ USER_NOT_FOUND
+ CANNOT_UPDATE_SELF
+ FAILED
}
-"""
-Monday webhooks
-"""
-type Webhook {
- """
- The webhooks's board id.
- """
- board_id: ID!
+"""Result of activating users."""
+type ActivateUsersResult {
+ """The users that were activated."""
+ activated_users: [User!]
- """
- The webhooks's config.
- """
- config: String
+ """Errors that occurred during activation."""
+ errors: [ActivateUsersError!]
+}
- """
- The event webhook will listen to
- """
- event: WebhookEventType!
+"""Error that occurred while changing team owners."""
+type AssignTeamOwnersError {
+ """The error message."""
+ message: String
- """
- The webhooks's unique identifier.
- """
- id: ID!
+ """The error code."""
+ code: AssignTeamOwnersErrorCode
+
+ """The id of the user that caused the error."""
+ user_id: ID
}
-"""
-The webhook's target type.
-"""
-enum WebhookEventType {
- """
- Column value changed on board
- """
- change_column_value
+"""Error codes that can occur while changing team owners."""
+enum AssignTeamOwnersErrorCode {
+ VIEWERS_OR_GUESTS
+ USER_NOT_MEMBER_OF_TEAM
+ EXCEEDS_BATCH_LIMIT
+ INVALID_INPUT
+ USER_NOT_FOUND
+ CANNOT_UPDATE_SELF
+ FAILED
+}
- """
- An item name changed on board
- """
- change_name
+"""Result of changing the team's ownership."""
+type AssignTeamOwnersResult {
+ """The team for which the owners were changed."""
+ team: Team
- """
- Specific Column value changed on board
- """
- change_specific_column_value
+ """Errors that occurred while changing team owners."""
+ errors: [AssignTeamOwnersError!]
+}
- """
- Status column value changed on board
- """
- change_status_column_value
+"""The role of the user."""
+enum BaseRoleName {
+ PORTAL_USER
+ GUEST
+ VIEW_ONLY
+ MEMBER
+ ADMIN
+}
- """
- Column value changed on board subitem
- """
- change_subitem_column_value
+"""Attributes of the team to be created."""
+input CreateTeamAttributesInput {
+ """The team's name."""
+ name: String!
- """
- An subitem name changed on board
- """
- change_subitem_name
+ """Whether the team can contain guest users."""
+ is_guest_team: Boolean
- """
- Column created on a board
- """
- create_column
+ """The parent team identifier."""
+ parent_team_id: ID
- """
- An item was created on board
- """
- create_item
+ """The team members. Must not be empty, unless allow_empty_team is set."""
+ subscriber_ids: [ID!]
+}
- """
- A subitem was created on a board
- """
- create_subitem
+"""Options for creating a team."""
+input CreateTeamOptionsInput {
+ """Whether to allow a team without any subscribers."""
+ allow_empty_team: Boolean
+}
- """
- An update was posted on board subitem
- """
- create_subitem_update
+"""Error that occurred during deactivation."""
+type DeactivateUsersError {
+ """The error message."""
+ message: String
- """
- An update was posted on board item
- """
- create_update
+ """The error code."""
+ code: DeactivateUsersErrorCode
- """
- An update was deleted from board item
- """
- delete_update
+ """The id of the user that caused the error."""
+ user_id: ID
+}
- """
- An update was edited on board item
- """
- edit_update
+"""Error codes for deactivating users."""
+enum DeactivateUsersErrorCode {
+ EXCEEDS_BATCH_LIMIT
+ INVALID_INPUT
+ USER_NOT_FOUND
+ CANNOT_UPDATE_SELF
+ FAILED
+}
- """
- An item was archived on a board
- """
- item_archived
+"""Result of deactivating users."""
+type DeactivateUsersResult {
+ """The users that were deactivated."""
+ deactivated_users: [User!]
- """
- An item was deleted from a board
- """
- item_deleted
+ """Errors that occurred during deactivation."""
+ errors: [DeactivateUsersError!]
+}
- """
- An item is moved to any group
- """
- item_moved_to_any_group
+"""Error that occurred while inviting users"""
+type InviteUsersError {
+ """The error message."""
+ message: String
- """
- An item is moved to a specific group
- """
- item_moved_to_specific_group
+ """The error code."""
+ code: InviteUsersErrorCode
- """
- An item restored back to board
- """
- item_restored
+ """The email address for the user that caused the error."""
+ email: ID
+}
- """
- A subitem is moved from one parent to another
- """
- move_subitem
+"""Error codes that can occur while changing email domain."""
+enum InviteUsersErrorCode {
+ ERROR
+}
- """
- A subitem was archived on a board
- """
- subitem_archived
+"""Result of inviting users to the account."""
+type InviteUsersResult {
+ """The users that were successfully invited."""
+ invited_users: [User!]
- """
- A subitem was deleted from a board
- """
- subitem_deleted
+ """Errors that occurred while inviting users"""
+ errors: [InviteUsersError!]
}
-type WeekValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
- column: Column!
+"""The product to invite the users to."""
+enum Product {
+ work_management
+ crm
+ dev
+ service
+ whiteboard
+ knowledge
+ forms
+ workflows
+}
- """
- The end date of the week
- """
- end_date: Date
+"""Error that occurred while removing team owners."""
+type RemoveTeamOwnersError {
+ """The error message."""
+ message: String
- """
- The column's unique identifier.
- """
- id: ID!
+ """The error code."""
+ code: RemoveTeamOwnersErrorCode
- """
- The start date of the week
- """
- start_date: Date
+ """The id of the user that caused the error."""
+ user_id: ID
+}
- """
- The range of dates representing the week (YYYY-MM-DD)
- """
- text: String
+"""Error codes that can occur while removing team owners."""
+enum RemoveTeamOwnersErrorCode {
+ VIEWERS_OR_GUESTS
+ USER_NOT_MEMBER_OF_TEAM
+ EXCEEDS_BATCH_LIMIT
+ INVALID_INPUT
+ USER_NOT_FOUND
+ CANNOT_UPDATE_SELF
+ FAILED
+}
- """
- The column's type.
- """
- type: ColumnType!
+"""Result of removing the team's ownership."""
+type RemoveTeamOwnersResult {
+ """The team for which the owners were removed."""
+ team: Team
- """
- The column's raw value in JSON format.
- """
- value: JSON
+ """Errors that occurred while removing team owners."""
+ errors: [RemoveTeamOwnersError!]
}
-"""
-A monday.com workspace.
-"""
-type Workspace {
- """
- The account product that contains workspace.
- """
- account_product: AccountProduct
+"""Attributes of the email domain to be updated."""
+input UpdateEmailDomainAttributesInput {
+ """The user identifiers (max 200)"""
+ user_ids: [ID!]!
- """
- The workspace's creation date.
- """
- created_at: Date
+ """The new email domain."""
+ new_domain: String!
+}
- """
- The workspace's description.
- """
- description: String
+"""Error that occurred while changing email domain."""
+type UpdateEmailDomainError {
+ """The error message."""
+ message: String
- """
- The workspace's unique identifier.
- """
- id: ID
+ """The error code."""
+ code: UpdateEmailDomainErrorCode
- """
- Returns true if it is the default workspace of the product or account
- """
- is_default_workspace: Boolean
+ """The id of the user that caused the error."""
+ user_id: ID
+}
- """
- The workspace's kind (open / closed).
- """
- kind: WorkspaceKind
+"""Error codes that can occur while changing email domain."""
+enum UpdateEmailDomainErrorCode {
+ UPDATE_EMAIL_DOMAIN_ERROR
+ EXCEEDS_BATCH_LIMIT
+ INVALID_INPUT
+ USER_NOT_FOUND
+ CANNOT_UPDATE_SELF
+ FAILED
+}
- """
- The workspace's name.
- """
- name: String!
+"""Result of updating the email domain for the specified users."""
+type UpdateEmailDomainResult {
+ """The users for which the email domain was updated."""
+ updated_users: [User!]
- """
- The workspace's user owners.
- """
- owners_subscribers(
- """
- Number of items to get, the default is 25.
- """
- limit: Int = 25
+ """Errors that occurred during the update."""
+ errors: [UpdateEmailDomainError!]
+}
- """
- Page number to get, starting at 1.
- """
- page: Int = 1
- ): [User]
+"""Error that occurred while updating users attributes."""
+type UpdateUserAttributesError {
+ """The error message."""
+ message: String
- """
- The workspace's settings.
- """
- settings: WorkspaceSettings
+ """The error code."""
+ code: UpdateUserAttributesErrorCode
- """
- The workspace's state (all / active / archived / deleted).
- """
- state: State
+ """The id of the user that caused the error."""
+ user_id: ID
+}
- """
- The workspace's team owners.
- """
- team_owners_subscribers(
- """
- Number of items to get, the default is 25.
- """
- limit: Int = 25
+"""Error codes that can occur while updating user attributes."""
+enum UpdateUserAttributesErrorCode {
+ INVALID_FIELD
+}
- """
- Page number to get, starting at 1.
- """
- page: Int = 1
- ): [Team!]
+"""The result of updating users attributes."""
+type UpdateUserAttributesResult {
+ """The users that were updated."""
+ updated_users: [User!]
- """
- The teams subscribed to the workspace.
- """
- teams_subscribers(
- """
- Number of items to get, the default is 25.
- """
- limit: Int = 25
+ """Errors that occurred during the update."""
+ errors: [UpdateUserAttributesError!]
+}
- """
- Page number to get, starting at 1.
- """
- page: Int = 1
- ): [Team]
+"""Error that occurred during updating users role."""
+type UpdateUsersRoleError {
+ """The error message."""
+ message: String
- """
- The users subscribed to the workspace
- """
- users_subscribers(
- """
- Number of items to get, the default is 25.
- """
- limit: Int = 25
+ """The error code."""
+ code: UpdateUsersRoleErrorCode
- """
- Page number to get, starting at 1.
- """
- page: Int = 1
- ): [User]
+ """The id of the user that caused the error."""
+ user_id: ID
}
-"""
-The workspace's icon.
-"""
-type WorkspaceIcon {
- """
- The icon color in hex value. Used as a background for the image.
- """
- color: String
-
- """
- The public image URL, which is temporary in the case of a file that was
- uploaded by the user, so you'll need to pull a new version at least once an hour.
- In case it is null, you can use the first letter of the workspace name.
- """
- image: String
+"""Error codes for updating users roles."""
+enum UpdateUsersRoleErrorCode {
+ EXCEEDS_BATCH_LIMIT
+ INVALID_INPUT
+ USER_NOT_FOUND
+ CANNOT_UPDATE_SELF
+ FAILED
}
-"""
-The workspace kinds available.
-"""
-enum WorkspaceKind {
- """
- Closed workspace, available to enterprise only.
- """
- closed
+"""Result of updating users role."""
+type UpdateUsersRoleResult {
+ """The users that were updated."""
+ updated_users: [User!]
- """
- Open workspace.
- """
- open
+ """Errors that occurred during updating users role."""
+ errors: [UpdateUsersRoleError!]
}
-"""
-The workspace's settings.
-"""
-type WorkspaceSettings {
- """
- The workspace icon.
- """
- icon: WorkspaceIcon
-}
+"""The attributes to update for a user."""
+input UserAttributesInput {
+ """The birthday of the user."""
+ birthday: String
-"""
-Options to order by.
-"""
-enum WorkspacesOrderBy {
- """
- The rank order of the workspace creation time (desc).
- """
- created_at
-}
+ """The email of the user."""
+ email: String
-"""
-The workspace subscriber kind.
-"""
-enum WorkspaceSubscriberKind {
- """
- Workspace owner.
- """
- owner
+ """The join date of the user."""
+ join_date: String
- """
- Workspace subscriber.
- """
- subscriber
-}
+ """The name of the user."""
+ name: String
-type WorldClockValue implements ColumnValue {
- """
- The column that this value belongs to.
- """
- column: Column!
+ """The location of the user."""
+ location: String
- """
- The column's unique identifier.
- """
- id: ID!
- text: String
+ """The mobile phone of the user."""
+ mobile_phone: String
- """
- Timezone
- """
- timezone: String
+ """The phone of the user."""
+ phone: String
- """
- The column's type.
- """
- type: ColumnType!
+ """The title of the user."""
+ title: String
- """
- The date when column value was last updated.
- """
- updated_at: Date
+ """The department of the user."""
+ department: String
+}
- """
- The column's raw value in JSON format.
- """
- value: JSON
+"""The role of the user."""
+enum UserRole {
+ PORTAL_USER
+ GUEST
+ VIEW_ONLY
+ MEMBER
+ ADMIN
}
+
+input UserUpdateInput {
+ user_id: ID!
+ user_attribute_updates: UserAttributesInput!
+}
\ No newline at end of file
diff --git a/packages/agent-toolkit/tests/core/platform-api-tools/list-board-items-tool.test.ts b/packages/agent-toolkit/tests/core/platform-api-tools/list-board-items-tool.test.ts
new file mode 100644
index 00000000..ddcf9390
--- /dev/null
+++ b/packages/agent-toolkit/tests/core/platform-api-tools/list-board-items-tool.test.ts
@@ -0,0 +1,370 @@
+import { ListBoardItemsTool, listBoardItemsToolSchema } from '../../../src/core/platform-api-tools/list-board-items-tool';
+import { ApiClient } from '@mondaydotcomorg/api';
+import {
+ ListBoardItemsQuery,
+ ItemsQueryRuleOperator,
+ // ItemsQuery, // Not directly needed for mocks if we construct queryParams manually
+} from '../../../src/monday-graphql/generated/graphql';
+import { listBoardItems } from '../../../src/monday-graphql/queries.graphql';
+
+// Mock the ApiClient
+jest.mock('@mondaydotcomorg/api');
+
+const MockApiClient = ApiClient as jest.MockedClass;
+
+describe('ListBoardItemsTool', () => {
+ let tool: ListBoardItemsTool;
+ let mockRequest: jest.Mock;
+
+ beforeEach(() => {
+ MockApiClient.mockClear();
+ mockRequest = jest.fn();
+ MockApiClient.prototype.request = mockRequest;
+ tool = new ListBoardItemsTool(new MockApiClient({ token: 'test-token' }));
+ });
+
+ describe('execute method', () => {
+ it('should fetch the first page of items without filters', async () => {
+ const boardId = 12345;
+ const limit = 2;
+ const mockApiResponse: ListBoardItemsQuery = {
+ boards: [
+ {
+ name: 'Test Board',
+ items_page: {
+ cursor: 'next_cursor_abc',
+ items: [
+ { id: 'item1', name: 'Item One', group: { id: 'group1', title: 'Group 1' } },
+ { id: 'item2', name: 'Item Two', group: { id: 'group1', title: 'Group 1' } },
+ ],
+ },
+ },
+ ],
+ };
+ mockRequest.mockResolvedValue(mockApiResponse);
+
+ const input = { boardId, limit };
+ const result = await tool.execute(input);
+
+ expect(mockRequest).toHaveBeenCalledWith(listBoardItems, {
+ boardId: boardId.toString(),
+ limit,
+ cursor: undefined,
+ queryParams: undefined, // No filters applied
+ });
+
+ const expectedResponse = {
+ boardName: 'Test Board',
+ items: mockApiResponse.boards![0]!.items_page.items,
+ cursor: 'next_cursor_abc',
+ };
+ expect(JSON.parse(result.content)).toEqual(expectedResponse);
+ });
+
+ it('should fetch the next page of items using a cursor', async () => {
+ const boardId = 12345;
+ const limit = 2;
+ const cursor = 'next_cursor_abc';
+ const mockApiResponse: ListBoardItemsQuery = {
+ boards: [
+ {
+ name: 'Test Board',
+ items_page: {
+ cursor: 'next_cursor_def', // Cursor for the page after this one
+ items: [
+ { id: 'item3', name: 'Item Three', group: { id: 'group2', title: 'Group 2' } },
+ { id: 'item4', name: 'Item Four', group: { id: 'group2', title: 'Group 2' } },
+ ],
+ },
+ },
+ ],
+ };
+ mockRequest.mockResolvedValue(mockApiResponse);
+
+ const input = { boardId, limit, cursor };
+ const result = await tool.execute(input);
+
+ expect(mockRequest).toHaveBeenCalledWith(listBoardItems, {
+ boardId: boardId.toString(),
+ limit,
+ cursor,
+ queryParams: undefined, // No filters applied
+ });
+
+ const expectedResponse = {
+ boardName: 'Test Board',
+ items: mockApiResponse.boards![0]!.items_page.items,
+ cursor: 'next_cursor_def',
+ };
+ expect(JSON.parse(result.content)).toEqual(expectedResponse);
+ });
+
+ it('should filter items by nameQuery', async () => {
+ const boardId = 12345;
+ const nameQuery = 'Special Item';
+ const mockApiResponse: ListBoardItemsQuery = {
+ boards: [
+ {
+ name: 'Test Board',
+ items_page: {
+ cursor: null,
+ items: [
+ { id: 'itemSpecial1', name: 'Special Item Alpha', group: { id: 'group1', title: 'Group 1' } },
+ ],
+ },
+ },
+ ],
+ };
+ mockRequest.mockResolvedValue(mockApiResponse);
+
+ const input = { boardId, nameQuery, limit: 25 };
+ const result = await tool.execute(input);
+
+ expect(mockRequest).toHaveBeenCalledWith(listBoardItems, {
+ boardId: boardId.toString(),
+ limit: 25,
+ cursor: undefined,
+ queryParams: {
+ rules: [
+ {
+ column_id: 'name',
+ compare_value: nameQuery,
+ operator: ItemsQueryRuleOperator.ContainsText,
+ },
+ ],
+ },
+ });
+
+ const expectedResponse = {
+ boardName: 'Test Board',
+ items: mockApiResponse.boards![0]!.items_page.items,
+ cursor: null,
+ };
+ expect(JSON.parse(result.content)).toEqual(expectedResponse);
+ });
+
+ it('should not filter by name if nameQuery is an empty string', async () => {
+ const boardId = 12345;
+ const mockApiResponse: ListBoardItemsQuery = {
+ boards: [
+ {
+ name: 'Test Board',
+ items_page: {
+ cursor: null,
+ items: [
+ { id: 'item1', name: 'Item One', group: { id: 'group1', title: 'Group 1' } },
+ { id: 'item2', name: 'Item Two', group: { id: 'group1', title: 'Group 1' } },
+ ],
+ },
+ },
+ ],
+ };
+ mockRequest.mockResolvedValue(mockApiResponse);
+
+ const input = { boardId, nameQuery: '', limit: 25 };
+ const result = await tool.execute(input);
+
+ expect(mockRequest).toHaveBeenCalledWith(listBoardItems, {
+ boardId: boardId.toString(),
+ limit: 25,
+ cursor: undefined,
+ queryParams: undefined,
+ });
+ const expectedResponse = {
+ boardName: 'Test Board',
+ items: mockApiResponse.boards![0]!.items_page.items,
+ cursor: null,
+ };
+ expect(JSON.parse(result.content)).toEqual(expectedResponse);
+ });
+
+ it('should filter items by groupId', async () => {
+ const boardId = 12345;
+ const groupId = 'test_group_1';
+ const mockApiResponse: ListBoardItemsQuery = {
+ boards: [
+ {
+ name: 'Test Board',
+ items_page: {
+ cursor: null,
+ items: [
+ { id: 'itemInGroup1', name: 'Item in Group 1', group: { id: groupId, title: 'Test Group 1' } },
+ ],
+ },
+ },
+ ],
+ };
+ mockRequest.mockResolvedValue(mockApiResponse);
+
+ const input = { boardId, groupId, limit: 25 };
+ const result = await tool.execute(input);
+
+ expect(mockRequest).toHaveBeenCalledWith(listBoardItems, {
+ boardId: boardId.toString(),
+ limit: 25,
+ cursor: undefined,
+ queryParams: {
+ rules: [
+ {
+ column_id: 'group', // This matches the assumption in the tool
+ compare_value: [groupId],
+ operator: ItemsQueryRuleOperator.AnyOf,
+ },
+ ],
+ },
+ });
+
+ const expectedResponse = {
+ boardName: 'Test Board',
+ items: mockApiResponse.boards![0]!.items_page.items,
+ cursor: null,
+ };
+ expect(JSON.parse(result.content)).toEqual(expectedResponse);
+ });
+
+ it('should filter items by both nameQuery and groupId', async () => {
+ const boardId = 12345;
+ const nameQuery = 'Specific';
+ const groupId = 'test_group_2';
+ const mockApiResponse: ListBoardItemsQuery = {
+ boards: [
+ {
+ name: 'Test Board',
+ items_page: {
+ cursor: null,
+ items: [
+ { id: 'specificItemInGroup2', name: 'Specific Item in Group 2', group: { id: groupId, title: 'Test Group 2' } },
+ ],
+ },
+ },
+ ],
+ };
+ mockRequest.mockResolvedValue(mockApiResponse);
+
+ const input = { boardId, nameQuery, groupId, limit: 25 };
+ const result = await tool.execute(input);
+
+ expect(mockRequest).toHaveBeenCalledWith(listBoardItems, {
+ boardId: boardId.toString(),
+ limit: 25,
+ cursor: undefined,
+ queryParams: {
+ rules: [
+ {
+ column_id: 'name',
+ compare_value: nameQuery,
+ operator: ItemsQueryRuleOperator.ContainsText,
+ },
+ {
+ column_id: 'group',
+ compare_value: [groupId],
+ operator: ItemsQueryRuleOperator.AnyOf,
+ },
+ ],
+ // operator: ItemsQueryOperator.And, // Default behavior if multiple rules, usually AND
+ },
+ });
+
+ const expectedResponse = {
+ boardName: 'Test Board',
+ items: mockApiResponse.boards![0]!.items_page.items,
+ cursor: null,
+ };
+ expect(JSON.parse(result.content)).toEqual(expectedResponse);
+ });
+
+ it('should handle API errors gracefully', async () => {
+ const boardId = 67890;
+ const errorMessage = 'API Error Occurred';
+ mockRequest.mockRejectedValue(new Error(errorMessage));
+
+ const input = { boardId, limit: 10 };
+ const result = await tool.execute(input);
+
+ expect(mockRequest).toHaveBeenCalledWith(listBoardItems, {
+ boardId: boardId.toString(),
+ limit: 10,
+ cursor: undefined,
+ queryParams: undefined,
+ });
+ expect(result.content).toEqual(`Failed to list items for board ${boardId}. Error: ${errorMessage}`);
+ });
+
+ it('should handle board not found or access denied', async () => {
+ const boardId = 11111;
+ const mockApiResponse: ListBoardItemsQuery = {
+ boards: null, // Simulate board not found or no access by API returning null for boards array
+ };
+ mockRequest.mockResolvedValue(mockApiResponse);
+
+ const input = { boardId, limit: 10 };
+ const result = await tool.execute(input);
+ expect(result.content).toEqual(`Board with ID ${boardId} not found or access denied.`);
+ });
+
+ it('should return an empty items array if board items_page has empty items and null cursor', async () => {
+ const boardId = 22222;
+ const mockApiResponse: ListBoardItemsQuery = {
+ boards: [
+ {
+ name: 'Empty Board Items',
+ // items_page itself is an object, its content can be empty/null
+ items_page: { items: [], cursor: null },
+ },
+ ],
+ };
+ mockRequest.mockResolvedValue(mockApiResponse);
+ const input = { boardId, limit: 10 };
+ const result = await tool.execute(input);
+ const expectedResponse = {
+ boardName: 'Empty Board Items',
+ items: [],
+ cursor: null,
+ };
+ expect(JSON.parse(result.content)).toEqual(expectedResponse);
+ });
+
+ it('should return an empty items array if items_page.items is explicitly null or empty array', async () => {
+ const boardId = 33333;
+ const input = { boardId, limit: 10 };
+
+ // Scenario 1: items_page.items is empty array
+ const mockApiResponseEmpty: ListBoardItemsQuery = {
+ boards: [
+ {
+ name: 'Board With Empty Items Array',
+ items_page: { items: [], cursor: null },
+ },
+ ],
+ };
+ mockRequest.mockResolvedValue(mockApiResponseEmpty);
+ let result = await tool.execute(input);
+ const expectedResponseEmpty: any = {
+ boardName: 'Board With Empty Items Array',
+ items: [],
+ cursor: null,
+ };
+ expect(JSON.parse(result.content)).toEqual(expectedResponseEmpty);
+
+ // Scenario 2: items_page.items is null (robustness test)
+ const mockApiResponseItemsNull: ListBoardItemsQuery = {
+ boards: [
+ {
+ name: 'Board With Null Items Field (Robustness Test)',
+ items_page: { items: null as any, cursor: null },
+ },
+ ],
+ };
+ mockRequest.mockResolvedValue(mockApiResponseItemsNull);
+ result = await tool.execute(input);
+ const expectedResponseItemsNull: any = {
+ boardName: 'Board With Null Items Field (Robustness Test)',
+ items: [],
+ cursor: null,
+ };
+ expect(JSON.parse(result.content)).toEqual(expectedResponseItemsNull);
+ });
+
+ // More test cases will be added here for pagination, filters, errors, etc.
+ });
+});
\ No newline at end of file
diff --git a/packages/agent-toolkit/tests/core/platform-api-tools/manage-item-updates-tool.test.ts b/packages/agent-toolkit/tests/core/platform-api-tools/manage-item-updates-tool.test.ts
new file mode 100644
index 00000000..9456f40e
--- /dev/null
+++ b/packages/agent-toolkit/tests/core/platform-api-tools/manage-item-updates-tool.test.ts
@@ -0,0 +1,558 @@
+import { ManageItemUpdatesTool, manageItemUpdatesToolSchema } from '../../../src/core/platform-api-tools/manage-item-updates-tool';
+import { ApiClient } from '@mondaydotcomorg/api';
+import { FetchItemUpdatesQuery, CreateUpdateMutation, DeleteUpdateMutation, Item } from '../../../src/monday-graphql/generated/graphql';
+import { fetchItemUpdates, createUpdate as createUpdateMutation, deleteUpdate as deleteUpdateMutation } from '../../../src/monday-graphql/queries.graphql';
+
+// Mock the ApiClient
+jest.mock('@mondaydotcomorg/api');
+
+const MockApiClient = ApiClient as jest.MockedClass;
+
+describe('ManageItemUpdatesTool', () => {
+ let tool: ManageItemUpdatesTool;
+ let mockRequest: jest.Mock;
+ let consoleWarnSpy: jest.SpyInstance;
+
+ beforeEach(() => {
+ // Reset mocks before each test
+ MockApiClient.mockClear();
+ mockRequest = jest.fn();
+ MockApiClient.prototype.request = mockRequest;
+ // Instantiate the tool with the mocked ApiClient instance
+ // The actual token value doesn't matter here as ApiClient is mocked
+ tool = new ManageItemUpdatesTool(new MockApiClient({ token: 'test-token' }));
+ consoleWarnSpy = jest.spyOn(console, 'warn').mockImplementation(() => {}); // Mock console.warn
+ });
+
+ afterEach(() => {
+ consoleWarnSpy.mockRestore(); // Restore console.warn
+ });
+
+ describe('fetch operation', () => {
+ it('should successfully fetch updates for a single item ID using schema default limit', async () => {
+ const mockItemId = 123;
+ const schemaDefaultLimit = 25;
+ const mockApiResponse: FetchItemUpdatesQuery = {
+ items: [
+ {
+ id: mockItemId.toString(),
+ name: 'Item 123',
+ updates: [
+ { id: 'update1', body: 'Update 1 body', text_body: 'Update 1 text', created_at: '2023-01-01T12:00:00Z', creator: { id: 'user1', name: 'User One' } },
+ ],
+ },
+ ],
+ };
+ mockRequest.mockResolvedValue(mockApiResponse);
+
+ // To test the tool's internal default when user omits limit, we need to see how Zod handles it.
+ // The type ToolInputType makes limit: number (non-optional due to .default()).
+ // So, if the user called the tool via MCP and omitted limit, Zod would fill it with 25 before execute is called.
+ // Thus, our input to execute() should reflect this post-Zod-parsing state.
+ const input = {
+ itemId: [mockItemId],
+ operation: 'fetch' as const,
+ limit: schemaDefaultLimit, // Simulate Zod having applied the default
+ };
+
+ const result = await tool.execute(input);
+
+ expect(mockRequest).toHaveBeenCalledWith(fetchItemUpdates, {
+ itemIds: [mockItemId.toString()],
+ limit: schemaDefaultLimit,
+ });
+ expect(JSON.parse(result.content)).toEqual(mockApiResponse.items);
+ });
+
+ it('should successfully fetch updates when itemId is an array with a single number', async () => {
+ const mockItemId = 777;
+ const schemaDefaultLimit = 25;
+ const mockApiResponse: FetchItemUpdatesQuery = {
+ items: [
+ {
+ id: mockItemId.toString(),
+ name: 'Item 777',
+ updates: [
+ { id: 'updateSingle777', body: 'Update for single item ID', text_body: 'Text for single item ID', created_at: '2023-01-03T12:00:00Z', creator: { id: 'user3', name: 'User Three' } },
+ ],
+ },
+ ],
+ };
+ mockRequest.mockResolvedValue(mockApiResponse);
+
+ const input = {
+ itemId: [mockItemId],
+ operation: 'fetch' as const,
+ limit: schemaDefaultLimit,
+ };
+
+ const result = await tool.execute(input);
+
+ expect(mockRequest).toHaveBeenCalledWith(fetchItemUpdates, {
+ itemIds: [mockItemId.toString()],
+ limit: schemaDefaultLimit,
+ });
+ expect(JSON.parse(result.content)).toEqual(mockApiResponse.items);
+ });
+
+ it('should cap the limit at 100 if a higher limit is provided', async () => {
+ const mockItemId = 124;
+ const mockApiResponse: FetchItemUpdatesQuery = {
+ items: [
+ {
+ id: mockItemId.toString(),
+ name: 'Item 124',
+ updates: [/* ... some updates ... */],
+ },
+ ],
+ };
+ mockRequest.mockResolvedValue(mockApiResponse);
+ const consoleWarnSpy = jest.spyOn(console, 'warn').mockImplementation(() => {});
+
+ const input = {
+ itemId: [mockItemId],
+ operation: 'fetch' as const,
+ limit: 150,
+ };
+
+ await tool.execute(input);
+
+ expect(mockRequest).toHaveBeenCalledWith(fetchItemUpdates, {
+ itemIds: [mockItemId.toString()],
+ limit: 100,
+ });
+ // expect(consoleWarnSpy).toHaveBeenCalledWith('[ManageItemUpdatesTool] Requested limit 150 exceeds API max of 100. Using 100 instead.');
+ consoleWarnSpy.mockRestore();
+ });
+
+ it('should use provided limit if it is under 100', async () => {
+ const mockItemId = 125;
+ const providedLimit = 15;
+ const mockApiResponse: FetchItemUpdatesQuery = {
+ items: [
+ {
+ id: mockItemId.toString(),
+ name: 'Item 125',
+ updates: [/* ... some updates ... */],
+ },
+ ],
+ };
+ mockRequest.mockResolvedValue(mockApiResponse);
+
+ const input = {
+ itemId: [mockItemId],
+ operation: 'fetch' as const,
+ limit: providedLimit,
+ };
+
+ await tool.execute(input);
+
+ expect(mockRequest).toHaveBeenCalledWith(fetchItemUpdates, {
+ itemIds: [mockItemId.toString()],
+ limit: providedLimit,
+ });
+ });
+
+ it('should successfully fetch updates for multiple item IDs', async () => {
+ const mockItemIds = [123, 456];
+ const mockLimit = 3;
+ const mockApiResponse: FetchItemUpdatesQuery = {
+ items: [
+ {
+ id: '123',
+ name: 'Test Item 123',
+ updates: [
+ { id: 'update1', body: 'Update 1 for 123', text_body: 'Text 1 for 123', created_at: '2023-01-01T12:00:00Z', creator: { id: 'user1', name: 'User One' } },
+ ],
+ } as any as Item, // Cast to any then Item
+ {
+ id: '456',
+ name: 'Test Item 456',
+ updates: [
+ { id: 'update2', body: 'Update 1 for 456', text_body: 'Text 1 for 456', created_at: '2023-01-02T12:00:00Z', creator: { id: 'user2', name: 'User Two' } },
+ ],
+ } as any as Item, // Cast to any then Item
+ ],
+ };
+ mockRequest.mockResolvedValue(mockApiResponse);
+
+ const input = {
+ itemId: mockItemIds, // Array of IDs
+ operation: 'fetch' as const,
+ limit: mockLimit,
+ };
+ const result = await tool.execute(input);
+
+ expect(mockRequest).toHaveBeenCalledWith(fetchItemUpdates, {
+ itemIds: mockItemIds.map(id => id.toString()),
+ limit: mockLimit,
+ });
+ expect(result.content).toEqual(JSON.stringify(mockApiResponse.items, null, 2));
+ });
+
+ it('should return the item structure when items are found but have no updates for multiple IDs', async () => {
+ const mockItemIds = [112, 113];
+ const mockApiResponse: FetchItemUpdatesQuery = {
+ items: [
+ { id: '112', name: 'Item 112', updates: [] }, // Empty updates
+ { id: '113', name: 'Item 113', updates: null }, // Null updates
+ ],
+ };
+ mockRequest.mockResolvedValue(mockApiResponse);
+
+ const input = {
+ itemId: mockItemIds,
+ operation: 'fetch' as const,
+ limit: 5,
+ };
+ const result = await tool.execute(input);
+ expect(mockRequest).toHaveBeenCalledWith(fetchItemUpdates, {
+ itemIds: mockItemIds.map(id => id.toString()),
+ limit: 5,
+ });
+ // Expect the JSON string of the items array
+ expect(result.content).toEqual(JSON.stringify(mockApiResponse.items, null, 2));
+ });
+
+ it('should return the item structure when no updates are found for a single item', async () => {
+ const mockItemId = 456;
+ const mockLimit = 5;
+
+ const input = {
+ itemId: [mockItemId],
+ operation: 'fetch' as const,
+ limit: mockLimit,
+ };
+
+ // Scenario 1: Item found, updates array is null
+ let mockApiResponse: FetchItemUpdatesQuery = {
+ items: [
+ { id: mockItemId.toString(), name: 'Test Item', updates: null },
+ ],
+ };
+ mockRequest.mockResolvedValue(mockApiResponse);
+ let result = await tool.execute(input);
+ expect(mockRequest).toHaveBeenCalledWith(fetchItemUpdates, {
+ itemIds: [mockItemId.toString()],
+ limit: mockLimit,
+ });
+ expect(result.content).toEqual(JSON.stringify(mockApiResponse.items, null, 2));
+
+ // Scenario 2: Item found, updates array is empty
+ mockApiResponse = {
+ items: [
+ { id: mockItemId.toString(), name: 'Test Item', updates: [] },
+ ],
+ };
+ mockRequest.mockResolvedValue(mockApiResponse);
+ result = await tool.execute(input);
+ expect(mockRequest).toHaveBeenCalledWith(fetchItemUpdates, {
+ itemIds: [mockItemId.toString()],
+ limit: mockLimit,
+ });
+ expect(result.content).toEqual(JSON.stringify(mockApiResponse.items, null, 2));
+ });
+
+ it('should handle API errors when fetching updates for multiple IDs', async () => {
+ const mockItemIds = [789, 101112];
+ const mockLimit = 10;
+ const errorMessage = 'Network Error with multiple IDs';
+ mockRequest.mockRejectedValue(new Error(errorMessage));
+
+ const input = {
+ itemId: mockItemIds,
+ operation: 'fetch' as const,
+ limit: mockLimit,
+ };
+ const result = await tool.execute(input);
+ expect(mockRequest).toHaveBeenCalledWith(fetchItemUpdates, {
+ itemIds: mockItemIds.map(id => id.toString()),
+ limit: mockLimit,
+ });
+ expect(result.content).toEqual(`Failed to fetch updates for item ID(s) ${mockItemIds.join(', ')}. Error: ${errorMessage}`);
+ });
+
+ it('should handle API errors when fetching updates', async () => {
+ const mockItemId = 789;
+ const mockLimit = 10;
+ const errorMessage = 'Network Error';
+ mockRequest.mockRejectedValue(new Error(errorMessage));
+
+ const input = {
+ itemId: [mockItemId],
+ operation: 'fetch' as const,
+ limit: mockLimit,
+ };
+
+ const result = await tool.execute(input);
+
+ expect(mockRequest).toHaveBeenCalledWith(fetchItemUpdates, {
+ itemIds: [mockItemId.toString()],
+ limit: mockLimit,
+ });
+ expect(result.content).toEqual(`Failed to fetch updates for item ID(s) ${mockItemId}. Error: ${errorMessage}`);
+ });
+ });
+
+ describe('create operation', () => {
+ it('should successfully create an update (no parentId)', async () => {
+ const mockItemId = 123;
+ const mockBody = 'This is a new update!';
+ const mockCreatedUpdateId = 'update_new_123';
+ const mockApiResponse: CreateUpdateMutation = {
+ create_update: {
+ id: mockCreatedUpdateId,
+ },
+ };
+ mockRequest.mockResolvedValue(mockApiResponse);
+
+ const input = {
+ itemId: [mockItemId],
+ operation: 'create' as const,
+ body: mockBody,
+ limit: 25, // Satisfy type, not used by create op
+ // parentId is omitted
+ };
+ const result = await tool.execute(input);
+ expect(mockRequest).toHaveBeenCalledWith(createUpdateMutation, {
+ itemId: mockItemId.toString(),
+ body: mockBody,
+ parentId: undefined, // Explicitly check it's undefined if not passed
+ });
+ expect(result.content).toEqual(`Successfully created update with ID ${mockCreatedUpdateId} for item ${mockItemId}.`);
+ });
+
+ it('should successfully create a reply (with parentId)', async () => {
+ const mockItemId = 124;
+ const mockBody = 'This is a reply!';
+ const mockParentId = 987;
+ const mockCreatedReplyId = 'reply_new_456';
+ const mockApiResponse: CreateUpdateMutation = {
+ create_update: {
+ id: mockCreatedReplyId,
+ },
+ };
+ mockRequest.mockResolvedValue(mockApiResponse);
+
+ const input = {
+ itemId: [mockItemId],
+ operation: 'create' as const,
+ body: mockBody,
+ parentId: mockParentId,
+ limit: 25, // Satisfy type
+ };
+ const result = await tool.execute(input);
+ expect(mockRequest).toHaveBeenCalledWith(createUpdateMutation, {
+ itemId: mockItemId.toString(),
+ body: mockBody,
+ parentId: mockParentId.toString(),
+ });
+ expect(result.content).toEqual(`Successfully created update with ID ${mockCreatedReplyId} for item ${mockItemId}.`);
+ });
+
+ it('should successfully create an update using the first item ID if an array is provided, and warn', async () => {
+ const mockItemIds = [123, 456, 789];
+ const mockBody = 'This is a new update from array!';
+ const mockCreatedUpdateId = 'update_new_multi_123';
+ const mockApiResponse: CreateUpdateMutation = {
+ create_update: {
+ id: mockCreatedUpdateId,
+ },
+ };
+
+ mockRequest.mockResolvedValue(mockApiResponse);
+
+ const input = {
+ itemId: mockItemIds, // Array of IDs
+ operation: 'create' as const,
+ body: mockBody,
+ limit: 10, // limit is not used by create but often included in tests
+ };
+
+ const result = await tool.execute(input);
+
+ // expect(consoleWarnSpy).toHaveBeenCalledWith(
+ // `[ManageItemUpdatesTool] For 'create' operation, only the first item ID (${mockItemIds[0]}) from the provided array [${mockItemIds.join(', ')}] will be used.`
+ // );
+ expect(mockRequest).toHaveBeenCalledWith(createUpdateMutation, {
+ itemId: mockItemIds[0].toString(), // Uses the first ID
+ body: mockBody,
+ });
+ expect(result.content).toEqual(`Successfully created update with ID ${mockCreatedUpdateId} for item ${mockItemIds[0]}.`);
+ });
+
+ it('should return an error if body is not provided for create operation', async () => {
+ const mockItemId = 456;
+ const input = {
+ itemId: [mockItemId],
+ operation: 'create' as const,
+ // body is intentionally omitted
+ limit: 10,
+ };
+
+ const result = await tool.execute(input as any);
+
+ expect(mockRequest).not.toHaveBeenCalled();
+ expect(result.content).toEqual('Error: Update body is required for the "create" operation.');
+ });
+
+ it('should handle API errors when creating an update', async () => {
+ const mockItemId = 789;
+ const mockBody = 'Another update';
+ const errorMessage = 'API Error on create';
+ mockRequest.mockRejectedValue(new Error(errorMessage));
+
+ const input = {
+ itemId: [mockItemId],
+ operation: 'create' as const,
+ body: mockBody,
+ limit: 10,
+ };
+
+ const result = await tool.execute(input);
+
+ expect(mockRequest).toHaveBeenCalledWith(createUpdateMutation, {
+ itemId: mockItemId.toString(),
+ body: mockBody,
+ });
+ expect(result.content).toEqual(`Failed to create update for item ${mockItemId}. Error: ${errorMessage}`);
+ });
+
+ it('should handle API response not returning an ID when creating an update', async () => {
+ const mockItemId = 101;
+ const mockBody = 'Update with no ID return';
+ const mockApiResponse: CreateUpdateMutation = {
+ create_update: null, // Simulate API not returning an ID or returning null for create_update
+ };
+
+ mockRequest.mockResolvedValue(mockApiResponse);
+
+ const input = {
+ itemId: [mockItemId],
+ operation: 'create' as const,
+ body: mockBody,
+ limit: 10,
+ };
+
+ const result = await tool.execute(input);
+ expect(result.content).toEqual(`Failed to create update for item ${mockItemId}. No update ID returned.`);
+ });
+ });
+
+ describe('delete operation', () => {
+ it('should successfully delete an update for an item when a single itemId is provided', async () => {
+ const mockItemId = 123;
+ const mockUpdateId = 987;
+ const mockApiResponse: DeleteUpdateMutation = {
+ delete_update: {
+ id: mockUpdateId.toString(),
+ },
+ };
+
+ mockRequest.mockResolvedValue(mockApiResponse);
+
+ const input = {
+ itemId: [mockItemId],
+ operation: 'delete' as const,
+ updateId: mockUpdateId,
+ limit: 10,
+ };
+
+ const result = await tool.execute(input);
+
+ expect(mockRequest).toHaveBeenCalledWith(deleteUpdateMutation, {
+ updateId: mockUpdateId.toString(),
+ });
+ expect(result.content).toEqual(`Successfully deleted update with ID ${mockUpdateId} from item ${mockItemId}.`);
+ });
+
+ it('should successfully delete an update using the first item ID if an array is provided (for context message), and warn', async () => {
+ const mockItemIds = [123, 777];
+ const mockUpdateId = 987;
+ const mockApiResponse: DeleteUpdateMutation = {
+ delete_update: {
+ id: mockUpdateId.toString(),
+ },
+ };
+
+ mockRequest.mockResolvedValue(mockApiResponse);
+
+ const input = {
+ itemId: mockItemIds, // Array of IDs
+ operation: 'delete' as const,
+ updateId: mockUpdateId,
+ limit: 10, // limit is not used by delete
+ };
+
+ const result = await tool.execute(input);
+
+ // expect(consoleWarnSpy).toHaveBeenCalledWith(
+ // `[ManageItemUpdatesTool] For 'delete' operation, only the first item ID (${mockItemIds[0]}) from the provided array [${mockItemIds.join(', ')}] will be used.`
+ // );
+ expect(mockRequest).toHaveBeenCalledWith(deleteUpdateMutation, {
+ updateId: mockUpdateId.toString(), // delete uses updateId directly for the mutation
+ });
+ // The message uses the first item ID for context
+ expect(result.content).toEqual(`Successfully deleted update with ID ${mockUpdateId} from item ${mockItemIds[0]}.`);
+ });
+
+ it('should return an error if updateId is not provided for delete operation', async () => {
+ const mockItemId = 456;
+ const input = {
+ itemId: [mockItemId],
+ operation: 'delete' as const,
+ // updateId is intentionally omitted
+ limit: 10,
+ };
+
+ const result = await tool.execute(input as any); // Cast to any to bypass TS check for this test
+
+ expect(mockRequest).not.toHaveBeenCalled();
+ expect(result.content).toEqual('Error: Update ID (updateId) is required for the "delete" operation.');
+ });
+
+ it('should handle API errors when deleting an update', async () => {
+ const mockItemId = 789;
+ const mockUpdateId = 654;
+ const errorMessage = 'API Error on delete';
+ mockRequest.mockRejectedValue(new Error(errorMessage));
+
+ const input = {
+ itemId: [mockItemId],
+ operation: 'delete' as const,
+ updateId: mockUpdateId,
+ limit: 10,
+ };
+
+ const result = await tool.execute(input);
+
+ expect(mockRequest).toHaveBeenCalledWith(deleteUpdateMutation, {
+ updateId: mockUpdateId.toString(),
+ });
+ expect(result.content).toEqual(`Failed to delete update ${mockUpdateId} for item ${mockItemId}. Error: ${errorMessage}`);
+ });
+
+ it('should handle API response not returning an ID when deleting an update', async () => {
+ const mockItemId = 101;
+ const mockUpdateId = 321;
+ const mockApiResponse: DeleteUpdateMutation = {
+ delete_update: null, // Simulate API not returning an ID or returning null
+ };
+
+ mockRequest.mockResolvedValue(mockApiResponse);
+
+ const input = {
+ itemId: [mockItemId],
+ operation: 'delete' as const,
+ updateId: mockUpdateId,
+ limit: 10,
+ };
+
+ const result = await tool.execute(input);
+ expect(mockRequest).toHaveBeenCalledWith(deleteUpdateMutation, {
+ updateId: mockUpdateId.toString(),
+ });
+ expect(result.content).toEqual(`Failed to delete update ${mockUpdateId} for item ${mockItemId}. Update may not exist or an API error occurred.`);
+ });
+ });
+});
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index a23384bb..a7ffd5bf 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -26,114 +26,114 @@
relay-runtime "12.0.0"
signedsource "^1.0.0"
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.26.2":
- version "7.26.2"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85"
- integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.27.1":
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be"
+ integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==
dependencies:
- "@babel/helper-validator-identifier" "^7.25.9"
+ "@babel/helper-validator-identifier" "^7.27.1"
js-tokens "^4.0.0"
- picocolors "^1.0.0"
+ picocolors "^1.1.1"
-"@babel/compat-data@^7.26.8":
- version "7.26.8"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.8.tgz#821c1d35641c355284d4a870b8a4a7b0c141e367"
- integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==
+"@babel/compat-data@^7.27.2":
+ version "7.27.2"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.2.tgz#4183f9e642fd84e74e3eea7ffa93a412e3b102c9"
+ integrity sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==
"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9", "@babel/core@^7.26.10":
- version "7.26.10"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.10.tgz#5c876f83c8c4dcb233ee4b670c0606f2ac3000f9"
- integrity sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.27.1.tgz#89de51e86bd12246003e3524704c49541b16c3e6"
+ integrity sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==
dependencies:
"@ampproject/remapping" "^2.2.0"
- "@babel/code-frame" "^7.26.2"
- "@babel/generator" "^7.26.10"
- "@babel/helper-compilation-targets" "^7.26.5"
- "@babel/helper-module-transforms" "^7.26.0"
- "@babel/helpers" "^7.26.10"
- "@babel/parser" "^7.26.10"
- "@babel/template" "^7.26.9"
- "@babel/traverse" "^7.26.10"
- "@babel/types" "^7.26.10"
+ "@babel/code-frame" "^7.27.1"
+ "@babel/generator" "^7.27.1"
+ "@babel/helper-compilation-targets" "^7.27.1"
+ "@babel/helper-module-transforms" "^7.27.1"
+ "@babel/helpers" "^7.27.1"
+ "@babel/parser" "^7.27.1"
+ "@babel/template" "^7.27.1"
+ "@babel/traverse" "^7.27.1"
+ "@babel/types" "^7.27.1"
convert-source-map "^2.0.0"
debug "^4.1.0"
gensync "^1.0.0-beta.2"
json5 "^2.2.3"
semver "^6.3.1"
-"@babel/generator@^7.18.13", "@babel/generator@^7.26.10", "@babel/generator@^7.27.0", "@babel/generator@^7.7.2":
- version "7.27.0"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.0.tgz#764382b5392e5b9aff93cadb190d0745866cbc2c"
- integrity sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==
+"@babel/generator@^7.18.13", "@babel/generator@^7.26.10", "@babel/generator@^7.27.1", "@babel/generator@^7.7.2":
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.1.tgz#862d4fad858f7208edd487c28b58144036b76230"
+ integrity sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==
dependencies:
- "@babel/parser" "^7.27.0"
- "@babel/types" "^7.27.0"
+ "@babel/parser" "^7.27.1"
+ "@babel/types" "^7.27.1"
"@jridgewell/gen-mapping" "^0.3.5"
"@jridgewell/trace-mapping" "^0.3.25"
jsesc "^3.0.2"
-"@babel/helper-compilation-targets@^7.26.5":
- version "7.27.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz#de0c753b1cd1d9ab55d473c5a5cf7170f0a81880"
- integrity sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==
+"@babel/helper-compilation-targets@^7.27.1":
+ version "7.27.2"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d"
+ integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==
dependencies:
- "@babel/compat-data" "^7.26.8"
- "@babel/helper-validator-option" "^7.25.9"
+ "@babel/compat-data" "^7.27.2"
+ "@babel/helper-validator-option" "^7.27.1"
browserslist "^4.24.0"
lru-cache "^5.1.1"
semver "^6.3.1"
-"@babel/helper-module-imports@^7.25.9":
- version "7.25.9"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715"
- integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==
+"@babel/helper-module-imports@^7.27.1":
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204"
+ integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==
dependencies:
- "@babel/traverse" "^7.25.9"
- "@babel/types" "^7.25.9"
+ "@babel/traverse" "^7.27.1"
+ "@babel/types" "^7.27.1"
-"@babel/helper-module-transforms@^7.26.0":
- version "7.26.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae"
- integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==
+"@babel/helper-module-transforms@^7.27.1":
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz#e1663b8b71d2de948da5c4fb2a20ca4f3ec27a6f"
+ integrity sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==
dependencies:
- "@babel/helper-module-imports" "^7.25.9"
- "@babel/helper-validator-identifier" "^7.25.9"
- "@babel/traverse" "^7.25.9"
+ "@babel/helper-module-imports" "^7.27.1"
+ "@babel/helper-validator-identifier" "^7.27.1"
+ "@babel/traverse" "^7.27.1"
-"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.8.0":
- version "7.26.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz#18580d00c9934117ad719392c4f6585c9333cc35"
- integrity sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0":
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c"
+ integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==
-"@babel/helper-string-parser@^7.25.9":
- version "7.25.9"
- resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c"
- integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==
+"@babel/helper-string-parser@^7.27.1":
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687"
+ integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==
-"@babel/helper-validator-identifier@^7.25.9":
- version "7.25.9"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7"
- integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
+"@babel/helper-validator-identifier@^7.27.1":
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8"
+ integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==
-"@babel/helper-validator-option@^7.25.9":
- version "7.25.9"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72"
- integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==
+"@babel/helper-validator-option@^7.27.1":
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f"
+ integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==
-"@babel/helpers@^7.26.10":
- version "7.27.0"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.0.tgz#53d156098defa8243eab0f32fa17589075a1b808"
- integrity sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==
+"@babel/helpers@^7.27.1":
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.1.tgz#ffc27013038607cdba3288e692c3611c06a18aa4"
+ integrity sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==
dependencies:
- "@babel/template" "^7.27.0"
- "@babel/types" "^7.27.0"
+ "@babel/template" "^7.27.1"
+ "@babel/types" "^7.27.1"
-"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.26.10", "@babel/parser@^7.27.0":
- version "7.27.0"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.0.tgz#3d7d6ee268e41d2600091cbd4e145ffee85a44ec"
- integrity sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==
+"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.26.10", "@babel/parser@^7.27.1", "@babel/parser@^7.27.2":
+ version "7.27.2"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.2.tgz#577518bedb17a2ce4212afd052e01f7df0941127"
+ integrity sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==
dependencies:
- "@babel/types" "^7.27.0"
+ "@babel/types" "^7.27.1"
"@babel/plugin-syntax-async-generators@^7.8.4":
version "7.8.4"
@@ -164,18 +164,18 @@
"@babel/helper-plugin-utils" "^7.14.5"
"@babel/plugin-syntax-import-assertions@^7.26.0":
- version "7.26.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz#620412405058efa56e4a564903b79355020f445f"
- integrity sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz#88894aefd2b03b5ee6ad1562a7c8e1587496aecd"
+ integrity sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-syntax-import-attributes@^7.24.7":
- version "7.26.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7"
- integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz#34c017d54496f9b11b61474e7ea3dfd5563ffe07"
+ integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-syntax-import-meta@^7.10.4":
version "7.10.4"
@@ -192,11 +192,11 @@
"@babel/helper-plugin-utils" "^7.8.0"
"@babel/plugin-syntax-jsx@^7.7.2":
- version "7.25.9"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290"
- integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz#2f9beb5eff30fa507c5532d107daac7b888fa34c"
+ integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.27.1"
"@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
version "7.10.4"
@@ -255,48 +255,46 @@
"@babel/helper-plugin-utils" "^7.14.5"
"@babel/plugin-syntax-typescript@^7.7.2":
- version "7.25.9"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz#67dda2b74da43727cf21d46cf9afef23f4365399"
- integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz#5147d29066a793450f220c63fa3a9431b7e6dd18"
+ integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.25.9"
+ "@babel/helper-plugin-utils" "^7.27.1"
"@babel/runtime@^7.0.0", "@babel/runtime@^7.26.10":
- version "7.27.0"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.27.0.tgz#fbee7cf97c709518ecc1f590984481d5460d4762"
- integrity sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==
- dependencies:
- regenerator-runtime "^0.14.0"
-
-"@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.26.9", "@babel/template@^7.27.0", "@babel/template@^7.3.3":
- version "7.27.0"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.0.tgz#b253e5406cc1df1c57dcd18f11760c2dbf40c0b4"
- integrity sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==
- dependencies:
- "@babel/code-frame" "^7.26.2"
- "@babel/parser" "^7.27.0"
- "@babel/types" "^7.27.0"
-
-"@babel/traverse@^7.25.9", "@babel/traverse@^7.26.10":
- version "7.27.0"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.0.tgz#11d7e644779e166c0442f9a07274d02cd91d4a70"
- integrity sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==
- dependencies:
- "@babel/code-frame" "^7.26.2"
- "@babel/generator" "^7.27.0"
- "@babel/parser" "^7.27.0"
- "@babel/template" "^7.27.0"
- "@babel/types" "^7.27.0"
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.27.1.tgz#9fce313d12c9a77507f264de74626e87fd0dc541"
+ integrity sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==
+
+"@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.27.1", "@babel/template@^7.3.3":
+ version "7.27.2"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d"
+ integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==
+ dependencies:
+ "@babel/code-frame" "^7.27.1"
+ "@babel/parser" "^7.27.2"
+ "@babel/types" "^7.27.1"
+
+"@babel/traverse@^7.26.10", "@babel/traverse@^7.27.1":
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.1.tgz#4db772902b133bbddd1c4f7a7ee47761c1b9f291"
+ integrity sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==
+ dependencies:
+ "@babel/code-frame" "^7.27.1"
+ "@babel/generator" "^7.27.1"
+ "@babel/parser" "^7.27.1"
+ "@babel/template" "^7.27.1"
+ "@babel/types" "^7.27.1"
debug "^4.3.1"
globals "^11.1.0"
-"@babel/types@^7.0.0", "@babel/types@^7.18.13", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.10", "@babel/types@^7.27.0", "@babel/types@^7.3.3":
- version "7.27.0"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.0.tgz#ef9acb6b06c3173f6632d993ecb6d4ae470b4559"
- integrity sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==
+"@babel/types@^7.0.0", "@babel/types@^7.18.13", "@babel/types@^7.20.7", "@babel/types@^7.26.10", "@babel/types@^7.27.1", "@babel/types@^7.3.3":
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.1.tgz#9defc53c16fc899e46941fc6901a9eea1c9d8560"
+ integrity sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==
dependencies:
- "@babel/helper-string-parser" "^7.25.9"
- "@babel/helper-validator-identifier" "^7.25.9"
+ "@babel/helper-string-parser" "^7.27.1"
+ "@babel/helper-validator-identifier" "^7.27.1"
"@bcoe/v8-coverage@^0.2.3":
version "0.2.3"
@@ -336,10 +334,10 @@
"@whatwg-node/promise-helpers" "^1.0.0"
tslib "^2.5.0"
-"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
- version "4.5.1"
- resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz#b0fc7e06d0c94f801537fd4237edc2706d3b8e4c"
- integrity sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==
+"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.7.0":
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a"
+ integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==
dependencies:
eslint-visitor-keys "^3.4.3"
@@ -368,6 +366,11 @@
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2"
integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==
+"@fastify/busboy@^3.1.1":
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-3.1.1.tgz#af3aea7f1e52ec916d8b5c9dcc0f09d4c060a3fc"
+ integrity sha512-5DGmA8FTdB2XbDeEwc/5ZXBl6UbBAyBOOLlPuBnZ/N1SwdH9Ii+cOX3tBROlDgcTXxjOYnLMVoKk9+FXAw0CJw==
+
"@graphql-codegen/add@^5.0.3":
version "5.0.3"
resolved "https://registry.yarnpkg.com/@graphql-codegen/add/-/add-5.0.3.tgz#1ede6bac9a93661ed7fa5808b203d079e1b1d215"
@@ -377,14 +380,14 @@
tslib "~2.6.0"
"@graphql-codegen/cli@^5.0.5":
- version "5.0.5"
- resolved "https://registry.yarnpkg.com/@graphql-codegen/cli/-/cli-5.0.5.tgz#9a29b2c7a459e333fbae025dff951927fafe5d2f"
- integrity sha512-9p9SI5dPhJdyU+O6p1LUqi5ajDwpm6pUhutb1fBONd0GZltLFwkgWFiFtM6smxkYXlYVzw61p1kTtwqsuXO16w==
+ version "5.0.6"
+ resolved "https://registry.yarnpkg.com/@graphql-codegen/cli/-/cli-5.0.6.tgz#586bd45ef7620406950687d0ed080ff383340e0a"
+ integrity sha512-1r5dtZ2l1jiCF/4qLMTcT7mEoWWWeqQlmn7HcPHgnV/OXIEodwox7XRGAmOKUygoabRjFF3S0jd0TWbkq5Otsw==
dependencies:
"@babel/generator" "^7.18.13"
"@babel/template" "^7.18.10"
"@babel/types" "^7.18.13"
- "@graphql-codegen/client-preset" "^4.6.0"
+ "@graphql-codegen/client-preset" "^4.8.1"
"@graphql-codegen/core" "^4.0.2"
"@graphql-codegen/plugin-helpers" "^5.0.3"
"@graphql-tools/apollo-engine-loader" "^8.0.0"
@@ -393,7 +396,7 @@
"@graphql-tools/github-loader" "^8.0.0"
"@graphql-tools/graphql-file-loader" "^8.0.0"
"@graphql-tools/json-file-loader" "^8.0.0"
- "@graphql-tools/load" "^8.0.0"
+ "@graphql-tools/load" "^8.1.0"
"@graphql-tools/prisma-loader" "^8.0.0"
"@graphql-tools/url-loader" "^8.0.0"
"@graphql-tools/utils" "^10.0.0"
@@ -417,10 +420,10 @@
yaml "^2.3.1"
yargs "^17.0.0"
-"@graphql-codegen/client-preset@^4.6.0":
- version "4.8.0"
- resolved "https://registry.yarnpkg.com/@graphql-codegen/client-preset/-/client-preset-4.8.0.tgz#600f5fa5a1326fa765743268cefe08fae7678ce9"
- integrity sha512-IVtTl7GsPMbQihk5+l5fDYksnPPOoC52sKxzquyIyuecZLEB7W3nNLV29r6+y+tjXTRPA774FR7CHGA2adzhjw==
+"@graphql-codegen/client-preset@^4.8.1":
+ version "4.8.1"
+ resolved "https://registry.yarnpkg.com/@graphql-codegen/client-preset/-/client-preset-4.8.1.tgz#2743875bb4884f9936c875d903f507c6aa77a5e6"
+ integrity sha512-XLF2V7WKLnepvrGE44JP+AvjS+Oz9AT0oYgTl/6d9btQ+2VYFcmwQPjNAuMVHipqE9I6h8hSEfH9hUrzUptB1g==
dependencies:
"@babel/helper-plugin-utils" "^7.20.2"
"@babel/template" "^7.20.7"
@@ -429,7 +432,7 @@
"@graphql-codegen/plugin-helpers" "^5.1.0"
"@graphql-codegen/typed-document-node" "^5.1.1"
"@graphql-codegen/typescript" "^4.1.6"
- "@graphql-codegen/typescript-operations" "^4.6.0"
+ "@graphql-codegen/typescript-operations" "^4.6.1"
"@graphql-codegen/visitor-plugin-common" "^5.8.0"
"@graphql-tools/documents" "^1.0.0"
"@graphql-tools/utils" "^10.0.0"
@@ -489,10 +492,10 @@
change-case-all "1.0.15"
tslib "~2.6.0"
-"@graphql-codegen/typescript-operations@^4.6.0":
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-operations/-/typescript-operations-4.6.0.tgz#29b277647ec16b00019e03c083a93262b79d978a"
- integrity sha512-/EltSdE/uPoEAblRTVLABVDhsrE//Kl3pCflyG1PWl4gWL9/OzQXYGjo6TF6bPMVn/QBWoO0FeboWf+bk84SXA==
+"@graphql-codegen/typescript-operations@^4.6.0", "@graphql-codegen/typescript-operations@^4.6.1":
+ version "4.6.1"
+ resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-operations/-/typescript-operations-4.6.1.tgz#763eda28c77fddee2b9ae9bd7baad050cffff0a5"
+ integrity sha512-k92laxhih7s0WZ8j5WMIbgKwhe64C0As6x+PdcvgZFMudDJ7rPJ/hFqJ9DCRxNjXoHmSjnr6VUuQZq4lT1RzCA==
dependencies:
"@graphql-codegen/plugin-helpers" "^5.1.0"
"@graphql-codegen/typescript" "^4.1.6"
@@ -713,10 +716,10 @@
tslib "^2.4.0"
unixify "^1.0.0"
-"@graphql-tools/load@^8.0.0":
- version "8.0.19"
- resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-8.0.19.tgz#d01258388cd80f9356535c203ff6dfb1c309c1fc"
- integrity sha512-YA3T9xTy2B6dNTnqsCzqSclA23j4v3p3A2Vdn0jEbZPGLMRPzWW8MJu2nlgQ8uua1IpYD/J8xgyrFxxAo3qPmQ==
+"@graphql-tools/load@^8.1.0":
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-8.1.0.tgz#4aa03f071a8777e314b10289b7d6097daaaf8783"
+ integrity sha512-OGfOm09VyXdNGJS/rLqZ6ztCiG2g6AMxhwtET8GZXTbnjptFc17GtKwJ3Jv5w7mjJ8dn0BHydvIuEKEUK4ciYw==
dependencies:
"@graphql-tools/schema" "^10.0.23"
"@graphql-tools/utils" "^10.8.6"
@@ -1099,9 +1102,9 @@
"@jridgewell/sourcemap-codec" "^1.4.14"
"@modelcontextprotocol/sdk@^1.7.0":
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/@modelcontextprotocol/sdk/-/sdk-1.9.0.tgz#1bf7a4843870b81da26983b8e69bf398d87055f1"
- integrity sha512-Jq2EUCQpe0iyO5FGpzVYDNFR6oR53AIrwph9yWl7uSc7IWUMsrmpmSaTGra5hQNunXpM+9oit85p924jWuHzUA==
+ version "1.11.2"
+ resolved "https://registry.yarnpkg.com/@modelcontextprotocol/sdk/-/sdk-1.11.2.tgz#d81784c140d1a9cc937f61af9f071d8b78befe30"
+ integrity sha512-H9vwztj5OAqHg9GockCQC06k1natgcxWQSRpQcPJf6i5+MWBzfKkRtxGbjQf0X2ihii0ffLZCRGbYV2f2bjNCQ==
dependencies:
content-type "^1.0.5"
cors "^2.8.5"
@@ -1330,23 +1333,23 @@
form-data "^4.0.0"
"@types/node@*":
- version "22.14.0"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-22.14.0.tgz#d3bfa3936fef0dbacd79ea3eb17d521c628bb47e"
- integrity sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==
+ version "22.15.18"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-22.15.18.tgz#2f8240f7e932f571c2d45f555ba0b6c3f7a75963"
+ integrity sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg==
dependencies:
undici-types "~6.21.0"
"@types/node@^18.11.18":
- version "18.19.86"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.86.tgz#a7e1785289c343155578b9d84a0e3e924deb948b"
- integrity sha512-fifKayi175wLyKyc5qUfyENhQ1dCNI1UNjp653d8kuYcPQN5JhX3dGuP/XmvPTg/xRBn1VTLpbmi+H/Mr7tLfQ==
+ version "18.19.100"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.100.tgz#7f3aefbb6911099ab7e0902a1f373b1a4d2c1947"
+ integrity sha512-ojmMP8SZBKprc3qGrGk8Ujpo80AXkrP7G2tOT4VWr5jlr5DHjsJF+emXJz+Wm0glmy4Js62oKMdZZ6B9Y+tEcA==
dependencies:
undici-types "~5.26.4"
"@types/node@^20.11.18":
- version "20.17.30"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.17.30.tgz#1d93f656d3b869dbef7b796568ac457606ba58d0"
- integrity sha512-7zf4YyHA+jvBNfVrk2Gtvs6x7E8V+YDW05bNfG2XkWDJfYRXrTiP/DsB2zSYTaHX0bGIujTBQdMVAhb+j7mwpg==
+ version "20.17.47"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.17.47.tgz#f9cb375993fffdae609c8e17d2b3dd8d3c4bfa14"
+ integrity sha512-3dLX0Upo1v7RvUimvxLeXqwrfyKxUINk0EAM83swP2mlSUcwV73sZy8XhNz8bcZ3VbsfQyC/y6jRdL5tgCNpDQ==
dependencies:
undici-types "~6.19.2"
@@ -1380,84 +1383,84 @@
"@types/yargs-parser" "*"
"@typescript-eslint/eslint-plugin@^8.29.0":
- version "8.29.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.29.1.tgz#593639d9bb5239b2d877d65757b7e2c9100a2e84"
- integrity sha512-ba0rr4Wfvg23vERs3eB+P3lfj2E+2g3lhWcCVukUuhtcdUx5lSIFZlGFEBHKr+3zizDa/TvZTptdNHVZWAkSBg==
+ version "8.32.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.1.tgz#9185b3eaa3b083d8318910e12d56c68b3c4f45b4"
+ integrity sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg==
dependencies:
"@eslint-community/regexpp" "^4.10.0"
- "@typescript-eslint/scope-manager" "8.29.1"
- "@typescript-eslint/type-utils" "8.29.1"
- "@typescript-eslint/utils" "8.29.1"
- "@typescript-eslint/visitor-keys" "8.29.1"
+ "@typescript-eslint/scope-manager" "8.32.1"
+ "@typescript-eslint/type-utils" "8.32.1"
+ "@typescript-eslint/utils" "8.32.1"
+ "@typescript-eslint/visitor-keys" "8.32.1"
graphemer "^1.4.0"
- ignore "^5.3.1"
+ ignore "^7.0.0"
natural-compare "^1.4.0"
- ts-api-utils "^2.0.1"
+ ts-api-utils "^2.1.0"
"@typescript-eslint/parser@^8.29.0":
- version "8.29.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.29.1.tgz#10bf37411be0a199c27b6515726e22fe8d3df8d0"
- integrity sha512-zczrHVEqEaTwh12gWBIJWj8nx+ayDcCJs06yoNMY0kwjMWDM6+kppljY+BxWI06d2Ja+h4+WdufDcwMnnMEWmg==
- dependencies:
- "@typescript-eslint/scope-manager" "8.29.1"
- "@typescript-eslint/types" "8.29.1"
- "@typescript-eslint/typescript-estree" "8.29.1"
- "@typescript-eslint/visitor-keys" "8.29.1"
+ version "8.32.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.32.1.tgz#18b0e53315e0bc22b2619d398ae49a968370935e"
+ integrity sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==
+ dependencies:
+ "@typescript-eslint/scope-manager" "8.32.1"
+ "@typescript-eslint/types" "8.32.1"
+ "@typescript-eslint/typescript-estree" "8.32.1"
+ "@typescript-eslint/visitor-keys" "8.32.1"
debug "^4.3.4"
-"@typescript-eslint/scope-manager@8.29.1":
- version "8.29.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.29.1.tgz#cfdfd4144f20c38b9d3e430efd6480e297ef52f6"
- integrity sha512-2nggXGX5F3YrsGN08pw4XpMLO1Rgtnn4AzTegC2MDesv6q3QaTU5yU7IbS1tf1IwCR0Hv/1EFygLn9ms6LIpDA==
+"@typescript-eslint/scope-manager@8.32.1":
+ version "8.32.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.32.1.tgz#9a6bf5fb2c5380e14fe9d38ccac6e4bbe17e8afc"
+ integrity sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==
dependencies:
- "@typescript-eslint/types" "8.29.1"
- "@typescript-eslint/visitor-keys" "8.29.1"
+ "@typescript-eslint/types" "8.32.1"
+ "@typescript-eslint/visitor-keys" "8.32.1"
-"@typescript-eslint/type-utils@8.29.1":
- version "8.29.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.29.1.tgz#653dfff5c1711bc920a6a46a5a2c274899f00179"
- integrity sha512-DkDUSDwZVCYN71xA4wzySqqcZsHKic53A4BLqmrWFFpOpNSoxX233lwGu/2135ymTCR04PoKiEEEvN1gFYg4Tw==
+"@typescript-eslint/type-utils@8.32.1":
+ version "8.32.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.32.1.tgz#b9292a45f69ecdb7db74d1696e57d1a89514d21e"
+ integrity sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==
dependencies:
- "@typescript-eslint/typescript-estree" "8.29.1"
- "@typescript-eslint/utils" "8.29.1"
+ "@typescript-eslint/typescript-estree" "8.32.1"
+ "@typescript-eslint/utils" "8.32.1"
debug "^4.3.4"
- ts-api-utils "^2.0.1"
+ ts-api-utils "^2.1.0"
-"@typescript-eslint/types@8.29.1":
- version "8.29.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.29.1.tgz#984ed1283fedbfb41d3993a9abdcb7b299971500"
- integrity sha512-VT7T1PuJF1hpYC3AGm2rCgJBjHL3nc+A/bhOp9sGMKfi5v0WufsX/sHCFBfNTx2F+zA6qBc/PD0/kLRLjdt8mQ==
+"@typescript-eslint/types@8.32.1":
+ version "8.32.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.32.1.tgz#b19fe4ac0dc08317bae0ce9ec1168123576c1d4b"
+ integrity sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==
-"@typescript-eslint/typescript-estree@8.29.1":
- version "8.29.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.1.tgz#4ac085665ed5390d11c0e3426427978570e3b747"
- integrity sha512-l1enRoSaUkQxOQnbi0KPUtqeZkSiFlqrx9/3ns2rEDhGKfTa+88RmXqedC1zmVTOWrLc2e6DEJrTA51C9iLH5g==
+"@typescript-eslint/typescript-estree@8.32.1":
+ version "8.32.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.1.tgz#9023720ca4ecf4f59c275a05b5fed69b1276face"
+ integrity sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==
dependencies:
- "@typescript-eslint/types" "8.29.1"
- "@typescript-eslint/visitor-keys" "8.29.1"
+ "@typescript-eslint/types" "8.32.1"
+ "@typescript-eslint/visitor-keys" "8.32.1"
debug "^4.3.4"
fast-glob "^3.3.2"
is-glob "^4.0.3"
minimatch "^9.0.4"
semver "^7.6.0"
- ts-api-utils "^2.0.1"
+ ts-api-utils "^2.1.0"
-"@typescript-eslint/utils@8.29.1":
- version "8.29.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.29.1.tgz#3d206c8c8def3527a8eb0588e94e3e60f7e167c9"
- integrity sha512-QAkFEbytSaB8wnmB+DflhUPz6CLbFWE2SnSCrRMEa+KnXIzDYbpsn++1HGvnfAsUY44doDXmvRkO5shlM/3UfA==
+"@typescript-eslint/utils@8.32.1":
+ version "8.32.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.32.1.tgz#4d6d5d29b9e519e9a85e9a74e9f7bdb58abe9704"
+ integrity sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==
dependencies:
- "@eslint-community/eslint-utils" "^4.4.0"
- "@typescript-eslint/scope-manager" "8.29.1"
- "@typescript-eslint/types" "8.29.1"
- "@typescript-eslint/typescript-estree" "8.29.1"
+ "@eslint-community/eslint-utils" "^4.7.0"
+ "@typescript-eslint/scope-manager" "8.32.1"
+ "@typescript-eslint/types" "8.32.1"
+ "@typescript-eslint/typescript-estree" "8.32.1"
-"@typescript-eslint/visitor-keys@8.29.1":
- version "8.29.1"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.1.tgz#9b74e5098c71138d42bbf2178fbe4dfad45d6b9a"
- integrity sha512-RGLh5CRaUEf02viP5c1Vh1cMGffQscyHe7HPAzGpfmfflFg1wUz2rYxd+OZqwpeypYvZ8UxSxuIpF++fmOzEcg==
+"@typescript-eslint/visitor-keys@8.32.1":
+ version "8.32.1"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.1.tgz#4321395cc55c2eb46036cbbb03e101994d11ddca"
+ integrity sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==
dependencies:
- "@typescript-eslint/types" "8.29.1"
+ "@typescript-eslint/types" "8.32.1"
eslint-visitor-keys "^4.2.0"
"@ungap/structured-clone@^1.2.0":
@@ -1474,27 +1477,27 @@
tslib "^2.6.3"
"@whatwg-node/fetch@^0.10.0", "@whatwg-node/fetch@^0.10.4":
- version "0.10.5"
- resolved "https://registry.yarnpkg.com/@whatwg-node/fetch/-/fetch-0.10.5.tgz#8537e50d32bac0f2e9cecff206588ca41d836df5"
- integrity sha512-+yFJU3hmXPAHJULwx0VzCIsvr/H0lvbPvbOH3areOH3NAuCxCwaJsQ8w6/MwwMcvEWIynSsmAxoyaH04KeosPg==
+ version "0.10.7"
+ resolved "https://registry.yarnpkg.com/@whatwg-node/fetch/-/fetch-0.10.7.tgz#f5f6839ba4af694259480f191d528ffef91e0361"
+ integrity sha512-sL31zX8BqZovZc38ovBFmKEfao9AzZ/24sWSHKNhDhcnzIO/PYAX2xF6vYtgU9hinrEGlvScTTyKSMynHGdfEA==
dependencies:
- "@whatwg-node/node-fetch" "^0.7.11"
+ "@whatwg-node/node-fetch" "^0.7.19"
urlpattern-polyfill "^10.0.0"
-"@whatwg-node/node-fetch@^0.7.11":
- version "0.7.17"
- resolved "https://registry.yarnpkg.com/@whatwg-node/node-fetch/-/node-fetch-0.7.17.tgz#86adaaddf06d7d098f17dfa504cd91562d81f89e"
- integrity sha512-Ni8A2H/r6brNf4u8Y7ATxmWUD0xltsQ6a4NnjWSbw4PgaT34CbY+u4QtVsFj9pTC3dBKJADKjac3AieAig+PZA==
+"@whatwg-node/node-fetch@^0.7.19":
+ version "0.7.19"
+ resolved "https://registry.yarnpkg.com/@whatwg-node/node-fetch/-/node-fetch-0.7.19.tgz#b8c09eb785782512972137f3bc7e0dad78667cbc"
+ integrity sha512-ippPt75epj7Tg6H5znI9lBBQ4gi+x23QsIF7UN1Z02MUqzhbkjhGsUtNnYGS3osrqvyKtbGKmEya6IqIPRmtdw==
dependencies:
+ "@fastify/busboy" "^3.1.1"
"@whatwg-node/disposablestack" "^0.0.6"
- "@whatwg-node/promise-helpers" "^1.2.5"
- busboy "^1.6.0"
+ "@whatwg-node/promise-helpers" "^1.3.2"
tslib "^2.6.3"
-"@whatwg-node/promise-helpers@^1.0.0", "@whatwg-node/promise-helpers@^1.2.1", "@whatwg-node/promise-helpers@^1.2.4", "@whatwg-node/promise-helpers@^1.2.5", "@whatwg-node/promise-helpers@^1.3.0":
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/@whatwg-node/promise-helpers/-/promise-helpers-1.3.0.tgz#33629c853cfa309009b1329d3cb6208241ec2bf0"
- integrity sha512-486CouizxHXucj8Ky153DDragfkMcHtVEToF5Pn/fInhUUSiCmt9Q4JVBa6UK5q4RammFBtGQ4C9qhGlXU9YbA==
+"@whatwg-node/promise-helpers@^1.0.0", "@whatwg-node/promise-helpers@^1.2.1", "@whatwg-node/promise-helpers@^1.2.4", "@whatwg-node/promise-helpers@^1.3.0", "@whatwg-node/promise-helpers@^1.3.2":
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/@whatwg-node/promise-helpers/-/promise-helpers-1.3.2.tgz#3b54987ad6517ef6db5920c66a6f0dada606587d"
+ integrity sha512-Nst5JdK47VIl9UcGwtv2Rcgyn5lWtZ0/mhRQ4G8NN2isxpq2TO30iqHzmwoJycjWuyUfg3GFXqP/gFHXeV57IA==
dependencies:
tslib "^2.6.3"
@@ -1759,14 +1762,14 @@ braces@^3.0.3:
fill-range "^7.1.1"
browserslist@^4.24.0:
- version "4.24.4"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b"
- integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==
+ version "4.24.5"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.5.tgz#aa0f5b8560fe81fde84c6dcb38f759bafba0e11b"
+ integrity sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==
dependencies:
- caniuse-lite "^1.0.30001688"
- electron-to-chromium "^1.5.73"
+ caniuse-lite "^1.0.30001716"
+ electron-to-chromium "^1.5.149"
node-releases "^2.0.19"
- update-browserslist-db "^1.1.1"
+ update-browserslist-db "^1.1.3"
bs-logger@^0.2.6:
version "0.2.6"
@@ -1795,13 +1798,6 @@ buffer@^5.5.0:
base64-js "^1.3.1"
ieee754 "^1.1.13"
-busboy@^1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893"
- integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==
- dependencies:
- streamsearch "^1.1.0"
-
bytes@3.1.2, bytes@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
@@ -1846,10 +1842,10 @@ camelcase@^6.2.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
-caniuse-lite@^1.0.30001688:
- version "1.0.30001712"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001712.tgz#41ee150f12de11b5f57c5889d4f30deb451deedf"
- integrity sha512-MBqPpGYYdQ7/hfKiet9SCI+nmN5/hp4ZzveOJubl5DTAMa5oggjAuoi0Z4onBpKPFI2ePGnQuQIzF3VxDjDJig==
+caniuse-lite@^1.0.30001716:
+ version "1.0.30001718"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz#dae13a9c80d517c30c6197515a96131c194d8f82"
+ integrity sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==
capital-case@^1.0.4:
version "1.0.4"
@@ -2131,16 +2127,16 @@ debounce@^1.2.0:
integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==
debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a"
- integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b"
+ integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==
dependencies:
ms "^2.1.3"
dedent@^1.0.0:
- version "1.5.3"
- resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a"
- integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.6.0.tgz#79d52d6389b1ffa67d2bcef59ba51847a9d503b2"
+ integrity sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==
deep-is@^0.1.3:
version "0.1.4"
@@ -2231,9 +2227,9 @@ dot-case@^3.0.4:
tslib "^2.0.3"
dotenv@^16.0.0, dotenv@^16.4.7:
- version "16.4.7"
- resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26"
- integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==
+ version "16.5.0"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.5.0.tgz#092b49f25f808f020050051d1ff258e404c78692"
+ integrity sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==
dset@^3.1.2, dset@^3.1.4:
version "3.1.4"
@@ -2261,10 +2257,10 @@ ejs@^3.1.10:
dependencies:
jake "^10.8.5"
-electron-to-chromium@^1.5.73:
- version "1.5.134"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.134.tgz#d90008c4f8a506c1a6d1b329f922d83e18904101"
- integrity sha512-zSwzrLg3jNP3bwsLqWHmS5z2nIOQ5ngMnfMZOWWtXnqqQkPVyOipxK98w+1beLw1TB+EImPNcG8wVP/cLVs2Og==
+electron-to-chromium@^1.5.149:
+ version "1.5.152"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.152.tgz#bcdd39567e291b930ec26b930031137a05593695"
+ integrity sha512-xBOfg/EBaIlVsHipHl2VdTPJRSvErNUaqW8ejTq5OlOlIYx1wOllCHsAvAIrr55jD1IYEfdR86miUEt8H5IeJg==
emittery@^0.13.1:
version "0.13.1"
@@ -2461,9 +2457,9 @@ eventsource-parser@^3.0.1:
integrity sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==
eventsource@^3.0.2:
- version "3.0.6"
- resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-3.0.6.tgz#5c4b24cd70c0323eed2651a5ee07bd4bc391e656"
- integrity sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==
+ version "3.0.7"
+ resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-3.0.7.tgz#1157622e2f5377bb6aef2114372728ba0c156989"
+ integrity sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==
dependencies:
eventsource-parser "^3.0.1"
@@ -2857,13 +2853,13 @@ graphemer@^1.4.0:
integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
graphql-config@^5.1.1:
- version "5.1.3"
- resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-5.1.3.tgz#343e2867dafd5b009cd97fe6b29a5e9604001819"
- integrity sha512-RBhejsPjrNSuwtckRlilWzLVt2j8itl74W9Gke1KejDTz7oaA5kVd6wRn9zK9TS5mcmIYGxf7zN7a1ORMdxp1Q==
+ version "5.1.5"
+ resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-5.1.5.tgz#34e0bfba88e74b6eefd889716a9378086f595f7f"
+ integrity sha512-mG2LL1HccpU8qg5ajLROgdsBzx/o2M6kgI3uAmoaXiSH9PCUbtIyLomLqUtCFaAeG2YCFsl0M5cfQ9rKmDoMVA==
dependencies:
"@graphql-tools/graphql-file-loader" "^8.0.0"
"@graphql-tools/json-file-loader" "^8.0.0"
- "@graphql-tools/load" "^8.0.0"
+ "@graphql-tools/load" "^8.1.0"
"@graphql-tools/merge" "^9.0.0"
"@graphql-tools/url-loader" "^8.0.0"
"@graphql-tools/utils" "^10.0.0"
@@ -2889,9 +2885,9 @@ graphql-tag@^2.11.0, graphql-tag@^2.12.6:
tslib "^2.1.0"
graphql-ws@^6.0.3:
- version "6.0.4"
- resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-6.0.4.tgz#f0376170965f9535576b2d3e897db38b463a31f0"
- integrity sha512-8b4OZtNOvv8+NZva8HXamrc0y1jluYC0+13gdh7198FKjVzXyTvVc95DCwGzaKEfn3YuWZxUqjJlHe3qKM/F2g==
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-6.0.5.tgz#24adcf444602df83477b9e07cd4b57f411ada024"
+ integrity sha512-HzYw057ch0hx2gZjkbgk1pur4kAtgljlWRP+Gccudqm3BRrTpExjWCQ9OHdIsq47Y6lHL++1lTvuQHhgRRcevw==
graphql@16.8.2:
version "16.8.2"
@@ -2993,11 +2989,16 @@ ieee754@^1.1.13:
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
-ignore@^5.2.0, ignore@^5.3.1:
+ignore@^5.2.0:
version "5.3.2"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
+ignore@^7.0.0:
+ version "7.0.4"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.4.tgz#a12c70d0f2607c5bf508fb65a40c75f037d7a078"
+ integrity sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==
+
immutable@~3.7.6:
version "3.7.6"
resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b"
@@ -4086,9 +4087,9 @@ onetime@^5.1.0, onetime@^5.1.2:
mimic-fn "^2.1.0"
openai@^4.93.0:
- version "4.93.0"
- resolved "https://registry.yarnpkg.com/openai/-/openai-4.93.0.tgz#12e74a5bff0b15fdb12e523232af1a8d5ee11e3f"
- integrity sha512-2kONcISbThKLfm7T9paVzg+QCE1FOZtNMMUfXyXckUAoXRRS/mTP89JSDHPMp8uM5s0bz28RISbvQjArD6mgUQ==
+ version "4.98.0"
+ resolved "https://registry.yarnpkg.com/openai/-/openai-4.98.0.tgz#81d8228e06e5d9195bac3b170af42a5454391999"
+ integrity sha512-TmDKur1WjxxMPQAtLG5sgBSCJmX7ynTsGmewKzoDwl1fRxtbLOsiR0FA/AOAAtYUmP6azal+MYQuOENfdU+7yg==
dependencies:
"@types/node" "^18.11.18"
"@types/node-fetch" "^2.6.4"
@@ -4267,7 +4268,7 @@ path-type@^4.0.0:
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
-picocolors@^1.0.0, picocolors@^1.1.1:
+picocolors@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
@@ -4406,11 +4407,6 @@ rechoir@^0.6.2:
dependencies:
resolve "^1.1.6"
-regenerator-runtime@^0.14.0:
- version "0.14.1"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
- integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
-
relay-runtime@12.0.0:
version "12.0.0"
resolved "https://registry.yarnpkg.com/relay-runtime/-/relay-runtime-12.0.0.tgz#1e039282bdb5e0c1b9a7dc7f6b9a09d4f4ff8237"
@@ -4569,10 +4565,10 @@ semver@^6.3.0, semver@^6.3.1:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
-semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.7.1:
- version "7.7.1"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f"
- integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==
+semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.7.2:
+ version "7.7.2"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58"
+ integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==
send@^1.1.0, send@^1.2.0:
version "1.2.0"
@@ -4802,11 +4798,6 @@ statuses@2.0.1, statuses@^2.0.1:
resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
-streamsearch@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764"
- integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==
-
string-env-interpolation@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz#ad4397ae4ac53fe6c91d1402ad6f6a52862c7152"
@@ -4894,9 +4885,9 @@ sync-fetch@0.6.0-2:
whatwg-mimetype "^4.0.0"
terser@^5.17.4:
- version "5.39.0"
- resolved "https://registry.yarnpkg.com/terser/-/terser-5.39.0.tgz#0e82033ed57b3ddf1f96708d123cca717d86ca3a"
- integrity sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==
+ version "5.39.1"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.39.1.tgz#1c80e6bde2b362c6f9f3e79e295c228a3882d983"
+ integrity sha512-Mm6+uad0ZuDtcV8/4uOZQDQ8RuiC5Pu+iZRedJtF7yA/27sPL7d++In/AJKpWZlU3SYMPPkVfwetn6sgZ66pUA==
dependencies:
"@jridgewell/source-map" "^0.3.3"
acorn "^8.8.2"
@@ -4963,15 +4954,15 @@ tr46@~0.0.3:
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
-ts-api-utils@^2.0.1:
+ts-api-utils@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91"
integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==
ts-jest@^29.1.2, ts-jest@^29.3.1:
- version "29.3.1"
- resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.3.1.tgz#2e459e1f94a833bd8216ba4b045fac948e265937"
- integrity sha512-FT2PIRtZABwl6+ZCry8IY7JZ3xMuppsEV9qFVHOVe8jDzggwUZ9TsM4chyJxL9yi6LvkqcZYU3LmapEE454zBQ==
+ version "29.3.3"
+ resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.3.3.tgz#c24c31a9d12268f88899e3eeb05912cab42c574c"
+ integrity sha512-y6jLm19SL4GroiBmHwFK4dSHUfDNmOrJbRfp6QmDIlI9p5tT5Q8ItccB4pTIslCIqOZuQnBwpTR0bQ5eUMYwkw==
dependencies:
bs-logger "^0.2.6"
ejs "^3.1.10"
@@ -4980,8 +4971,8 @@ ts-jest@^29.1.2, ts-jest@^29.3.1:
json5 "^2.2.3"
lodash.memoize "^4.1.2"
make-error "^1.3.6"
- semver "^7.7.1"
- type-fest "^4.38.0"
+ semver "^7.7.2"
+ type-fest "^4.41.0"
yargs-parser "^21.1.1"
ts-log@^2.2.3:
@@ -5018,47 +5009,47 @@ tslib@~2.6.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0"
integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==
-turbo-darwin-64@2.5.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/turbo-darwin-64/-/turbo-darwin-64-2.5.0.tgz#3d966d03b98b9b41dd5abf80bc792e251195a905"
- integrity sha512-fP1hhI9zY8hv0idym3hAaXdPi80TLovmGmgZFocVAykFtOxF+GlfIgM/l4iLAV9ObIO4SUXPVWHeBZQQ+Hpjag==
+turbo-darwin-64@2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/turbo-darwin-64/-/turbo-darwin-64-2.5.3.tgz#e1f19e816f76e0d636e31e66f8238c43bf870f45"
+ integrity sha512-YSItEVBUIvAGPUDpAB9etEmSqZI3T6BHrkBkeSErvICXn3dfqXUfeLx35LfptLDEbrzFUdwYFNmt8QXOwe9yaw==
-turbo-darwin-arm64@2.5.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/turbo-darwin-arm64/-/turbo-darwin-arm64-2.5.0.tgz#94bf89c6f2d942eadad08741a11ef36601980b58"
- integrity sha512-p9sYq7kXH7qeJwIQE86cOWv/xNqvow846l6c/qWc26Ib1ci5W7V0sI5thsrP3eH+VA0d+SHalTKg5SQXgNQBWA==
+turbo-darwin-arm64@2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/turbo-darwin-arm64/-/turbo-darwin-arm64-2.5.3.tgz#f80074fd786f703bcb0415e13df225ba781950fc"
+ integrity sha512-5PefrwHd42UiZX7YA9m1LPW6x9YJBDErXmsegCkVp+GjmWrADfEOxpFrGQNonH3ZMj77WZB2PVE5Aw3gA+IOhg==
-turbo-linux-64@2.5.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/turbo-linux-64/-/turbo-linux-64-2.5.0.tgz#878dae794436581d781c4573ff7975deab5b9d67"
- integrity sha512-1iEln2GWiF3iPPPS1HQJT6ZCFXynJPd89gs9SkggH2EJsj3eRUSVMmMC8y6d7bBbhBFsiGGazwFIYrI12zs6uQ==
+turbo-linux-64@2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/turbo-linux-64/-/turbo-linux-64-2.5.3.tgz#93bfe009a24a76295c8164896845b5098c293293"
+ integrity sha512-M9xigFgawn5ofTmRzvjjLj3Lqc05O8VHKuOlWNUlnHPUltFquyEeSkpQNkE/vpPdOR14AzxqHbhhxtfS4qvb1w==
-turbo-linux-arm64@2.5.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/turbo-linux-arm64/-/turbo-linux-arm64-2.5.0.tgz#c2d84b11a340d480fd0a44bfd7c8cece2383d6fb"
- integrity sha512-bKBcbvuQHmsX116KcxHJuAcppiiBOfivOObh2O5aXNER6mce7YDDQJy00xQQNp1DhEfcSV2uOsvb3O3nN2cbcA==
+turbo-linux-arm64@2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/turbo-linux-arm64/-/turbo-linux-arm64-2.5.3.tgz#bf4664561094711aa289d92b9443de2aefca5d6e"
+ integrity sha512-auJRbYZ8SGJVqvzTikpg1bsRAsiI9Tk0/SDkA5Xgg0GdiHDH/BOzv1ZjDE2mjmlrO/obr19Dw+39OlMhwLffrw==
-turbo-windows-64@2.5.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/turbo-windows-64/-/turbo-windows-64-2.5.0.tgz#104dbe9466e98196dd2c9f5b0fcad223c3c05fb6"
- integrity sha512-9BCo8oQ7BO7J0K913Czbc3tw8QwLqn2nTe4E47k6aVYkM12ASTScweXPTuaPFP5iYXAT6z5Dsniw704Ixa5eGg==
+turbo-windows-64@2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/turbo-windows-64/-/turbo-windows-64-2.5.3.tgz#acbc2db093c7a74f0e692b899e649284285a2e7b"
+ integrity sha512-arLQYohuHtIEKkmQSCU9vtrKUg+/1TTstWB9VYRSsz+khvg81eX6LYHtXJfH/dK7Ho6ck+JaEh5G+QrE1jEmCQ==
-turbo-windows-arm64@2.5.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/turbo-windows-arm64/-/turbo-windows-arm64-2.5.0.tgz#a7b4b5efea74001253ccf08f0edf004d9620e73e"
- integrity sha512-OUHCV+ueXa3UzfZ4co/ueIHgeq9B2K48pZwIxKSm5VaLVuv8M13MhM7unukW09g++dpdrrE1w4IOVgxKZ0/exg==
+turbo-windows-arm64@2.5.3:
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/turbo-windows-arm64/-/turbo-windows-arm64-2.5.3.tgz#78e8cfdb49b69fbadf03031532f1524be3661729"
+ integrity sha512-3JPn66HAynJ0gtr6H+hjY4VHpu1RPKcEwGATvGUTmLmYSYBQieVlnGDRMMoYN066YfyPqnNGCfhYbXfH92Cm0g==
turbo@^2.1.0:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/turbo/-/turbo-2.5.0.tgz#6ea89f4511e7fb68b866c51e709bfbace7efc62a"
- integrity sha512-PvSRruOsitjy6qdqwIIyolv99+fEn57gP6gn4zhsHTEcCYgXPhv6BAxzAjleS8XKpo+Y582vTTA9nuqYDmbRuA==
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/turbo/-/turbo-2.5.3.tgz#657dcae430552d9bb237e9e1d91f711c465c9f28"
+ integrity sha512-iHuaNcq5GZZnr3XDZNuu2LSyCzAOPwDuo5Qt+q64DfsTP1i3T2bKfxJhni2ZQxsvAoxRbuUK5QetJki4qc5aYA==
optionalDependencies:
- turbo-darwin-64 "2.5.0"
- turbo-darwin-arm64 "2.5.0"
- turbo-linux-64 "2.5.0"
- turbo-linux-arm64 "2.5.0"
- turbo-windows-64 "2.5.0"
- turbo-windows-arm64 "2.5.0"
+ turbo-darwin-64 "2.5.3"
+ turbo-darwin-arm64 "2.5.3"
+ turbo-linux-64 "2.5.3"
+ turbo-linux-arm64 "2.5.3"
+ turbo-windows-64 "2.5.3"
+ turbo-windows-arm64 "2.5.3"
type-check@^0.4.0, type-check@~0.4.0:
version "0.4.0"
@@ -5082,10 +5073,10 @@ type-fest@^0.21.3:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
-type-fest@^4.38.0:
- version "4.39.1"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.39.1.tgz#7521f6944e279abaf79cf60cfbc4823f4858083e"
- integrity sha512-uW9qzd66uyHYxwyVBYiwS4Oi0qZyUqwjU+Oevr6ZogYiXt99EOYtwvzMSLw1c3lYo2HzJsep/NB23iEVEgjG/w==
+type-fest@^4.41.0:
+ version "4.41.0"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.41.0.tgz#6ae1c8e5731273c2bf1f58ad39cbae2c91a46c58"
+ integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==
type-is@^2.0.0, type-is@^2.0.1:
version "2.0.1"
@@ -5143,7 +5134,7 @@ unpipe@1.0.0:
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
-update-browserslist-db@^1.1.1:
+update-browserslist-db@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420"
integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==
@@ -5173,9 +5164,9 @@ uri-js@^4.2.2:
punycode "^2.1.0"
urlpattern-polyfill@^10.0.0:
- version "10.0.0"
- resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz#f0a03a97bfb03cdf33553e5e79a2aadd22cac8ec"
- integrity sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==
+ version "10.1.0"
+ resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-10.1.0.tgz#1b2517e614136c73ba32948d5e7a3a063cba8e74"
+ integrity sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==
util-deprecate@^1.0.1:
version "1.0.2"
@@ -5287,9 +5278,9 @@ write-file-atomic@^4.0.2:
signal-exit "^3.0.7"
ws@^8.17.1:
- version "8.18.1"
- resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.1.tgz#ea131d3784e1dfdff91adb0a4a116b127515e3cb"
- integrity sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==
+ version "8.18.2"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.2.tgz#42738b2be57ced85f46154320aabb51ab003705a"
+ integrity sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==
y18n@^5.0.5:
version "5.0.8"
@@ -5345,6 +5336,6 @@ zod-to-json-schema@^3.24.1, zod-to-json-schema@^3.24.5:
integrity sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==
zod@^3.23.8, zod@^3.24.2:
- version "3.24.2"
- resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.2.tgz#8efa74126287c675e92f46871cfc8d15c34372b3"
- integrity sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==
+ version "3.24.4"
+ resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.4.tgz#e2e2cca5faaa012d76e527d0d36622e0a90c315f"
+ integrity sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==