diff --git a/packages/agent-toolkit/package.json b/packages/agent-toolkit/package.json index 7d29ebd8..9da9e2ca 100644 --- a/packages/agent-toolkit/package.json +++ b/packages/agent-toolkit/package.json @@ -1,6 +1,6 @@ { "name": "@mondaydotcomorg/agent-toolkit", - "version": "5.14.0", + "version": "5.15.0", "description": "monday.com agent toolkit", "exports": { "./mcp": { diff --git a/packages/agent-toolkit/src/core/tools/platform-api-tools/index.ts b/packages/agent-toolkit/src/core/tools/platform-api-tools/index.ts index 645d58d4..fa923969 100644 --- a/packages/agent-toolkit/src/core/tools/platform-api-tools/index.ts +++ b/packages/agent-toolkit/src/core/tools/platform-api-tools/index.ts @@ -73,6 +73,7 @@ import { DeleteAgentTool } from './agents-tools/delete-agent/delete-agent-tool'; import { ListAutomationsTool } from './workflows-tools/list-workflows/list-workflows-tool'; import { ManageWorkflowsTool } from './workflows-tools/manage-workflows/manage-workflows-tool'; import { CreateAutomationTool } from './workflows-tools/create-automation/create-automation-tool'; +import { CreateWorkflowBuilderTool } from './workflow-builder-tools/create-workflow/create-workflow-tool'; export const allGraphqlApiTools: BaseMondayApiToolConstructor[] = [ DeleteItemTool, @@ -153,6 +154,8 @@ export const allGraphqlApiTools: BaseMondayApiToolConstructor[] = [ ManageWorkflowsTool, // Cast: ctor signature (api, apiToken, context?) doesn't match BaseMondayApiToolConstructor. CreateAutomationTool as unknown as BaseMondayApiToolConstructor, + // Workflow Builder Tools + CreateWorkflowBuilderTool, ]; export * from './all-monday-api-tool'; @@ -225,6 +228,8 @@ export * from './fetch-file-content-tool/fetch-file-content-tool'; export * from './agents-tools'; // Workflows export * from './workflows-tools'; +// Workflow Builder Tools +export * from './workflow-builder-tools/create-workflow/create-workflow-tool'; // Dashboard Tools export * from './dashboard-tools'; // Monday Dev Tools diff --git a/packages/agent-toolkit/src/core/tools/platform-api-tools/workflow-builder-tools/create-workflow/create-workflow-tool.test.ts b/packages/agent-toolkit/src/core/tools/platform-api-tools/workflow-builder-tools/create-workflow/create-workflow-tool.test.ts new file mode 100644 index 00000000..db185b4a --- /dev/null +++ b/packages/agent-toolkit/src/core/tools/platform-api-tools/workflow-builder-tools/create-workflow/create-workflow-tool.test.ts @@ -0,0 +1,149 @@ +import { MondayAgentToolkit } from 'src/mcp/toolkit'; +import { callToolByNameRawAsync, createMockApiClient, parseToolResult } from '../../test-utils/mock-api-client'; +import { CreateWorkflowMutation } from '../../../../../monday-graphql/generated/graphql.dev/graphql'; + +describe('CreateWorkflowBuilderTool', () => { + let mocks: ReturnType; + + beforeEach(() => { + mocks = createMockApiClient(); + jest.spyOn(MondayAgentToolkit.prototype as any, 'createApiClient').mockReturnValue(mocks.mockApiClient); + }); + + const mockResponse: CreateWorkflowMutation = { + create_workflow: { + workflow_object_id: '999', + workflow_draft_id: '111', + }, + }; + + it('should return workflowObjectId and workflowDraftId on success', async () => { + mocks.setResponseOnce(mockResponse); + + const result = await callToolByNameRawAsync('create_workflow_builder', { workspaceId: '42' }); + const parsed = parseToolResult(result); + + expect(parsed.workflowObjectId).toBe('999'); + expect(parsed.workflowDraftId).toBe('111'); + expect(parsed.message).toContain('42'); + }); + + it('should call the mutation with workspace_id and versionOverride dev', async () => { + mocks.setResponseOnce(mockResponse); + + await callToolByNameRawAsync('create_workflow_builder', { workspaceId: '42' }); + + expect(mocks.getMockRequest()).toHaveBeenCalledWith( + expect.stringContaining('createWorkflow'), + expect.objectContaining({ workspace_id: '42' }), + expect.objectContaining({ versionOverride: 'dev' }), + ); + }); + + it('should pass title when provided', async () => { + mocks.setResponseOnce(mockResponse); + + await callToolByNameRawAsync('create_workflow_builder', { workspaceId: '42', title: 'My Workflow' }); + + expect(mocks.getMockRequest()).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ title: 'My Workflow' }), + expect.anything(), + ); + }); + + it('should pass privacy_kind when provided', async () => { + mocks.setResponseOnce(mockResponse); + + await callToolByNameRawAsync('create_workflow_builder', { workspaceId: '42', privacyKind: 'PRIVATE' }); + + expect(mocks.getMockRequest()).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ privacy_kind: 'PRIVATE' }), + expect.anything(), + ); + }); + + it('should accept SHAREABLE as a valid privacyKind', async () => { + mocks.setResponseOnce(mockResponse); + + await callToolByNameRawAsync('create_workflow_builder', { workspaceId: '42', privacyKind: 'SHAREABLE' }); + + expect(mocks.getMockRequest()).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ privacy_kind: 'SHAREABLE' }), + expect.anything(), + ); + }); + + it('should pass description when provided', async () => { + mocks.setResponseOnce(mockResponse); + + await callToolByNameRawAsync('create_workflow_builder', { workspaceId: '42', description: 'My description' }); + + expect(mocks.getMockRequest()).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ description: 'My description' }), + expect.anything(), + ); + }); + + it('should pass folder_id when provided', async () => { + mocks.setResponseOnce(mockResponse); + + await callToolByNameRawAsync('create_workflow_builder', { workspaceId: '42', folderId: '77' }); + + expect(mocks.getMockRequest()).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ folder_id: '77' }), + expect.anything(), + ); + }); + + it('should pass owner_ids when provided', async () => { + mocks.setResponseOnce(mockResponse); + + await callToolByNameRawAsync('create_workflow_builder', { workspaceId: '42', ownerIds: ['1', '2'] }); + + expect(mocks.getMockRequest()).toHaveBeenCalledWith( + expect.anything(), + expect.objectContaining({ owner_ids: ['1', '2'] }), + expect.anything(), + ); + }); + + it('should not include optional fields when not provided', async () => { + mocks.setResponseOnce(mockResponse); + + await callToolByNameRawAsync('create_workflow_builder', { workspaceId: '42' }); + + expect(mocks.getMockRequest()).toHaveBeenCalledWith( + expect.anything(), + expect.not.objectContaining({ title: expect.anything() }), + expect.anything(), + ); + }); + + it('should reject invalid privacyKind values', async () => { + const result = await callToolByNameRawAsync('create_workflow_builder', { + workspaceId: '42', + privacyKind: 'private', + }); + + expect(result.content[0].text).toContain('Invalid enum value'); + }); + + it('should reject whitespace-only workspaceId', async () => { + const result = await callToolByNameRawAsync('create_workflow_builder', { workspaceId: ' ' }); + + expect(result.content[0].text).toContain('workspaceId must be a non-empty string'); + }); + + it('should propagate GraphQL errors with operation context', async () => { + mocks.setError('Not authorized'); + + const result = await callToolByNameRawAsync('create_workflow_builder', { workspaceId: '42' }); + + expect(result.content[0].text).toContain('Failed to create Workflow Builder workflow'); + }); +}); diff --git a/packages/agent-toolkit/src/core/tools/platform-api-tools/workflow-builder-tools/create-workflow/create-workflow-tool.ts b/packages/agent-toolkit/src/core/tools/platform-api-tools/workflow-builder-tools/create-workflow/create-workflow-tool.ts new file mode 100644 index 00000000..06d36837 --- /dev/null +++ b/packages/agent-toolkit/src/core/tools/platform-api-tools/workflow-builder-tools/create-workflow/create-workflow-tool.ts @@ -0,0 +1,95 @@ +import { z } from 'zod'; +import { ToolInputType, ToolOutputType, ToolType } from '../../../../tool'; +import { BaseMondayApiTool, createMondayApiAnnotations } from '../../base-monday-api-tool'; +import { rethrowWithContext } from '../../../../../utils'; +import { + CreateWorkflowMutation, + CreateWorkflowMutationVariables, + WorkflowBuilderPrivacyKind, +} from '../../../../../monday-graphql/generated/graphql.dev/graphql'; +import { createWorkflowMutation } from './create-workflow.graphql.dev'; + +export const createWorkflowToolSchema = { + workspaceId: z + .string() + .trim() + .min(1, 'workspaceId must be a non-empty string') + .describe('The ID of the workspace to create the workflow in.'), + title: z.string().optional().describe('Workflow title. Defaults to "New Workflow" if not provided.'), + privacyKind: z + .enum(['PUBLIC', 'PRIVATE', 'SHAREABLE']) + .optional() + .describe('Workflow visibility: PUBLIC (default), PRIVATE, or SHAREABLE (accessible to guests outside the account).'), + description: z.string().optional().describe('Optional workflow description.'), + folderId: z.string().optional().describe('Optional folder ID to place the workflow in.'), + ownerIds: z.array(z.string()).optional().describe('Optional list of user IDs to set as workflow owners.'), +}; + +export class CreateWorkflowBuilderTool extends BaseMondayApiTool { + name = 'create_workflow_builder'; + type = ToolType.WRITE; + annotations = createMondayApiAnnotations({ + title: 'Create Workflow Builder', + readOnlyHint: false, + destructiveHint: false, + idempotentHint: false, + }); + + getDescription(): string { + return `Creates a new empty Workflow Builder workflow in a monday.com workspace. + +Use this when the user wants to build a new standalone workflow from scratch. Workflow Builder workflows are cross-board, workspace-level automations — distinct from board automations (use create_automation for those). You only need a workspaceId to get started — all other fields are optional. + +Returns: +- workflowObjectId: the workflow object ID +- workflowDraftId: the current draft version ID — workflows start as drafts and must be published before they run + +Terminology: +- Workflow Builder vs. board automations: Workflow Builder workflows are standalone objects scoped to a workspace. Board automations (create_automation) are per-board trigger/action rules. They are different products. +- Draft: the editable, inactive version of a workflow. Changes are made on the draft version until it is published as the live version. +- Privacy: PUBLIC — visible to all workspace members (default). PRIVATE — restricted access. SHAREABLE — accessible to guests outside the account. +`; + } + + getInputSchema() { + return createWorkflowToolSchema; + } + + protected async executeInternal( + input: ToolInputType, + ): Promise> { + try { + const variables: CreateWorkflowMutationVariables = { + workspace_id: input.workspaceId, + ...(input.title !== undefined ? { title: input.title } : {}), + ...(input.privacyKind !== undefined ? { privacy_kind: input.privacyKind as WorkflowBuilderPrivacyKind } : {}), + ...(input.description !== undefined ? { description: input.description } : {}), + ...(input.folderId !== undefined ? { folder_id: input.folderId } : {}), + ...(input.ownerIds !== undefined ? { owner_ids: input.ownerIds } : {}), + }; + + const res = await this.mondayApi.request(createWorkflowMutation, variables, { + versionOverride: 'dev', + }); + + if (!res.create_workflow) { + throw new Error('create_workflow returned null'); + } + const { workflow_object_id, workflow_draft_id } = res.create_workflow; + + if (!workflow_object_id || !workflow_draft_id) { + throw new Error('create_workflow returned missing identifiers'); + } + + return { + content: { + message: `Workflow Builder workflow created in workspace ${input.workspaceId}`, + workflowObjectId: workflow_object_id, + workflowDraftId: workflow_draft_id, + }, + }; + } catch (error) { + rethrowWithContext(error, 'create Workflow Builder workflow'); + } + } +} diff --git a/packages/agent-toolkit/src/core/tools/platform-api-tools/workflow-builder-tools/create-workflow/create-workflow.graphql.dev.ts b/packages/agent-toolkit/src/core/tools/platform-api-tools/workflow-builder-tools/create-workflow/create-workflow.graphql.dev.ts new file mode 100644 index 00000000..753f5361 --- /dev/null +++ b/packages/agent-toolkit/src/core/tools/platform-api-tools/workflow-builder-tools/create-workflow/create-workflow.graphql.dev.ts @@ -0,0 +1,24 @@ +import { gql } from 'graphql-request'; + +export const createWorkflowMutation = gql` + mutation createWorkflow( + $workspace_id: ID! + $title: String + $privacy_kind: WorkflowBuilderPrivacyKind + $description: String + $folder_id: ID + $owner_ids: [ID!] + ) { + create_workflow( + workspace_id: $workspace_id + title: $title + privacy_kind: $privacy_kind + description: $description + folder_id: $folder_id + owner_ids: $owner_ids + ) { + workflow_object_id + workflow_draft_id + } + } +`; diff --git a/packages/agent-toolkit/src/monday-graphql/generated/graphql.dev/gql.ts b/packages/agent-toolkit/src/monday-graphql/generated/graphql.dev/gql.ts index 8d990ba1..a1ea9a10 100644 --- a/packages/agent-toolkit/src/monday-graphql/generated/graphql.dev/gql.ts +++ b/packages/agent-toolkit/src/monday-graphql/generated/graphql.dev/gql.ts @@ -27,6 +27,7 @@ type Documents = { "\n query SearchDocsDev($query: String!, $limit: Int, $workspaceIds: [ID!]) {\n search {\n docs(query: $query, limit: $limit, workspace_ids: $workspaceIds) {\n results {\n id\n indexed_data {\n id\n name\n }\n }\n }\n }\n }\n": typeof types.SearchDocsDevDocument, "\n mutation BatchUndo($boardId: ID!, $undoRecordId: ID!) {\n batch_undo(board_id: $boardId, undo_record_id: $undoRecordId) {\n success\n }\n }\n": typeof types.BatchUndoDocument, "\n query getUserContext {\n me {\n id\n name\n title\n account {\n tier\n active_members_count\n is_during_trial\n products {\n kind\n tier\n }\n }\n }\n favorites {\n object {\n id\n type\n }\n }\n intelligence {\n relevant_boards(limit: 10) {\n id\n board {\n name\n }\n }\n relevant_people(limit: 10) {\n id\n user {\n name\n }\n }\n }\n }\n": typeof types.GetUserContextDocument, + "\n mutation createWorkflow(\n $workspace_id: ID!\n $title: String\n $privacy_kind: WorkflowBuilderPrivacyKind\n $description: String\n $folder_id: ID\n $owner_ids: [ID!]\n ) {\n create_workflow(\n workspace_id: $workspace_id\n title: $title\n privacy_kind: $privacy_kind\n description: $description\n folder_id: $folder_id\n owner_ids: $owner_ids\n ) {\n workflow_object_id\n workflow_draft_id\n }\n }\n": typeof types.CreateWorkflowDocument, "\n mutation activateLiveWorkflow($id: ID!) {\n activate_live_workflow(id: $id) {\n is_success\n }\n }\n": typeof types.ActivateLiveWorkflowDocument, "\n mutation deactivateLiveWorkflow($id: ID!) {\n deactivate_live_workflow(id: $id) {\n is_success\n }\n }\n": typeof types.DeactivateLiveWorkflowDocument, "\n mutation deleteLiveWorkflow($id: ID!) {\n delete_live_workflow(id: $id) {\n is_success\n }\n }\n": typeof types.DeleteLiveWorkflowDocument, @@ -46,6 +47,7 @@ const documents: Documents = { "\n query SearchDocsDev($query: String!, $limit: Int, $workspaceIds: [ID!]) {\n search {\n docs(query: $query, limit: $limit, workspace_ids: $workspaceIds) {\n results {\n id\n indexed_data {\n id\n name\n }\n }\n }\n }\n }\n": types.SearchDocsDevDocument, "\n mutation BatchUndo($boardId: ID!, $undoRecordId: ID!) {\n batch_undo(board_id: $boardId, undo_record_id: $undoRecordId) {\n success\n }\n }\n": types.BatchUndoDocument, "\n query getUserContext {\n me {\n id\n name\n title\n account {\n tier\n active_members_count\n is_during_trial\n products {\n kind\n tier\n }\n }\n }\n favorites {\n object {\n id\n type\n }\n }\n intelligence {\n relevant_boards(limit: 10) {\n id\n board {\n name\n }\n }\n relevant_people(limit: 10) {\n id\n user {\n name\n }\n }\n }\n }\n": types.GetUserContextDocument, + "\n mutation createWorkflow(\n $workspace_id: ID!\n $title: String\n $privacy_kind: WorkflowBuilderPrivacyKind\n $description: String\n $folder_id: ID\n $owner_ids: [ID!]\n ) {\n create_workflow(\n workspace_id: $workspace_id\n title: $title\n privacy_kind: $privacy_kind\n description: $description\n folder_id: $folder_id\n owner_ids: $owner_ids\n ) {\n workflow_object_id\n workflow_draft_id\n }\n }\n": types.CreateWorkflowDocument, "\n mutation activateLiveWorkflow($id: ID!) {\n activate_live_workflow(id: $id) {\n is_success\n }\n }\n": types.ActivateLiveWorkflowDocument, "\n mutation deactivateLiveWorkflow($id: ID!) {\n deactivate_live_workflow(id: $id) {\n is_success\n }\n }\n": types.DeactivateLiveWorkflowDocument, "\n mutation deleteLiveWorkflow($id: ID!) {\n delete_live_workflow(id: $id) {\n is_success\n }\n }\n": types.DeleteLiveWorkflowDocument, @@ -118,6 +120,10 @@ export function graphql(source: "\n mutation BatchUndo($boardId: ID!, $undoReco * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ export function graphql(source: "\n query getUserContext {\n me {\n id\n name\n title\n account {\n tier\n active_members_count\n is_during_trial\n products {\n kind\n tier\n }\n }\n }\n favorites {\n object {\n id\n type\n }\n }\n intelligence {\n relevant_boards(limit: 10) {\n id\n board {\n name\n }\n }\n relevant_people(limit: 10) {\n id\n user {\n name\n }\n }\n }\n }\n"): (typeof documents)["\n query getUserContext {\n me {\n id\n name\n title\n account {\n tier\n active_members_count\n is_during_trial\n products {\n kind\n tier\n }\n }\n }\n favorites {\n object {\n id\n type\n }\n }\n intelligence {\n relevant_boards(limit: 10) {\n id\n board {\n name\n }\n }\n relevant_people(limit: 10) {\n id\n user {\n name\n }\n }\n }\n }\n"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "\n mutation createWorkflow(\n $workspace_id: ID!\n $title: String\n $privacy_kind: WorkflowBuilderPrivacyKind\n $description: String\n $folder_id: ID\n $owner_ids: [ID!]\n ) {\n create_workflow(\n workspace_id: $workspace_id\n title: $title\n privacy_kind: $privacy_kind\n description: $description\n folder_id: $folder_id\n owner_ids: $owner_ids\n ) {\n workflow_object_id\n workflow_draft_id\n }\n }\n"): (typeof documents)["\n mutation createWorkflow(\n $workspace_id: ID!\n $title: String\n $privacy_kind: WorkflowBuilderPrivacyKind\n $description: String\n $folder_id: ID\n $owner_ids: [ID!]\n ) {\n create_workflow(\n workspace_id: $workspace_id\n title: $title\n privacy_kind: $privacy_kind\n description: $description\n folder_id: $folder_id\n owner_ids: $owner_ids\n ) {\n workflow_object_id\n workflow_draft_id\n }\n }\n"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ diff --git a/packages/agent-toolkit/src/monday-graphql/generated/graphql.dev/graphql.ts b/packages/agent-toolkit/src/monday-graphql/generated/graphql.dev/graphql.ts index 3acb01c0..4e8cec04 100644 --- a/packages/agent-toolkit/src/monday-graphql/generated/graphql.dev/graphql.ts +++ b/packages/agent-toolkit/src/monday-graphql/generated/graphql.dev/graphql.ts @@ -62,6 +62,15 @@ export type Account = { tier?: Maybe; }; +/** The account-level default work schedule and time off schedule */ +export type AccountAvailabilityDefaults = { + __typename?: 'AccountAvailabilityDefaults'; + /** The account-level default time off schedule */ + time_off: TimeOff; + /** The account-level default work schedule */ + work_schedule: WorkSchedule; +}; + /** Account context information. */ export type AccountContext = { __typename?: 'AccountContext'; @@ -254,6 +263,8 @@ export type AddedAllocatedResource = { /** An AI agent on the monday.com platform */ export type Agent = { __typename?: 'Agent'; + /** The LLM model the agent uses */ + agent_model?: Maybe; /** The timestamp when the agent was created. Null on create mutation responses — use the agent query to fetch it. */ created_at?: Maybe; /** The goal or objective of the agent */ @@ -262,10 +273,14 @@ export type Agent = { id: Scalars['ID']['output']; /** The kind of agent (personal, account-level, or external) */ kind?: Maybe; + /** Knowledge files attached to the agent. Only populated on create mutation responses. */ + knowledge?: Maybe>; /** The execution plan in markdown format, describing the agent capabilities and operating principles */ plan?: Maybe; /** The agent profile with name, role, and avatar */ profile?: Maybe; + /** Reference IDs of skills attached to this agent. Use agent_skills_catalog to resolve full name and description. */ + skill_ids: Array; /** The current state of the agent */ state?: Maybe; /** The timestamp when the agent was last updated. Null on create mutation responses — use the agent query to fetch it. */ @@ -276,6 +291,21 @@ export type Agent = { version_id: Scalars['ID']['output']; }; +/** A trigger currently attached to an agent */ +export type AgentActiveTrigger = { + __typename?: 'AgentActiveTrigger'; + /** The trigger type, matching block_reference_id in the catalog */ + block_reference_id: Scalars['ID']['output']; + /** Description of the trigger type */ + description?: Maybe; + /** Human-readable summary of how this trigger is configured (e.g. "type=Weekly, hour=9, days=3/4") */ + field_summary?: Maybe; + /** Display name of the trigger type */ + name: Scalars['String']['output']; + /** Stable identifier of this trigger instance — use this as node_id when calling remove_trigger_from_agent */ + node_id: Scalars['ID']['output']; +}; + /** The kind of AI agent */ export enum AgentKind { /** An account-level agent available to the entire account */ @@ -286,6 +316,75 @@ export enum AgentKind { Personal = 'PERSONAL' } +/** The full knowledge configuration of an agent — resources (boards/docs) and uploaded files */ +export type AgentKnowledge = { + __typename?: 'AgentKnowledge'; + /** Files uploaded as agent knowledge */ + files?: Maybe>; + /** Boards and docs the agent has access to */ + resources?: Maybe>; +}; + +/** A knowledge entry attached to an agent */ +export type AgentKnowledgeEntry = { + __typename?: 'AgentKnowledgeEntry'; + /** The unique identifier of the knowledge entry */ + id: Scalars['ID']['output']; + /** Reference ID for the knowledge entry */ + knowledge_reference_id?: Maybe; + /** File metadata for this knowledge entry */ + metadata?: Maybe; + /** The source type of this knowledge entry */ + source_type?: Maybe; + /** The current state of this knowledge entry */ + state?: Maybe; +}; + +/** A file uploaded as agent knowledge */ +export type AgentKnowledgeFile = { + __typename?: 'AgentKnowledgeFile'; + /** Original file name */ + file_name?: Maybe; + /** File extension (e.g. pdf, docx, csv) */ + file_type?: Maybe; + /** Unique identifier of the knowledge file */ + id?: Maybe; +}; + +/** Metadata about a knowledge file attachment */ +export type AgentKnowledgeMetadata = { + __typename?: 'AgentKnowledgeMetadata'; + /** Cloudinary asset ID for image files */ + asset_id?: Maybe; + /** Original name of the uploaded file */ + file_name?: Maybe; + /** MIME type of the file */ + file_type?: Maybe; +}; + +/** A monday.com board or doc the agent has been granted access to */ +export type AgentKnowledgeResource = { + __typename?: 'AgentKnowledgeResource'; + /** The permission level the agent has on this resource */ + permission_type?: Maybe; + /** The ID of the board or doc */ + resource_id?: Maybe; + /** Whether this resource is a board or a doc */ + scope_type?: Maybe; +}; + +/** Supported LLM models for an agent */ +export enum AgentModel { + /** Claude Opus 4.7 (claude-opus-4-7) */ + ClaudeOpus_4_7 = 'CLAUDE_OPUS_4_7', + /** Claude Sonnet 4.6 (claude-sonnet-4-6) */ + ClaudeSonnet_4_6 = 'CLAUDE_SONNET_4_6', + /** Gemini 2.5 Flash */ + Gemini_2_5Flash = 'GEMINI_2_5_FLASH', + /** GPT 5.2 */ + Gpt_5_2 = 'GPT_5_2' +} + /** Visual and role identity of an agent. */ export type AgentProfile = { __typename?: 'AgentProfile'; @@ -301,6 +400,17 @@ export type AgentProfile = { role_description?: Maybe; }; +/** A skill available for agents to use — browse the catalog, then attach by id. */ +export type AgentSkillCatalogEntry = { + __typename?: 'AgentSkillCatalogEntry'; + /** What this skill does */ + description?: Maybe; + /** Stable reference ID — pass this to add_skill_to_agent / remove_skill_from_agent */ + id?: Maybe; + /** Display name of the skill */ + name?: Maybe; +}; + /** The current state of an agent */ export enum AgentState { /** The agent is active and can be triggered and executed */ @@ -315,6 +425,28 @@ export enum AgentState { Inactive = 'INACTIVE' } +/** Result of an agent state change operation */ +export type AgentStateResult = { + __typename?: 'AgentStateResult'; + /** Whether the operation succeeded */ + success?: Maybe; +}; + +/** An available trigger type that can be attached to an agent */ +export type AgentTriggerCatalogEntry = { + __typename?: 'AgentTriggerCatalogEntry'; + /** Pass this value as block_reference_id when calling add_trigger_to_agent */ + block_reference_id: Scalars['ID']['output']; + /** What this trigger does */ + description?: Maybe; + /** Structured value schemas for fields you can populate directly in field_values */ + field_schemas: Array; + /** Display name of the trigger */ + name: Scalars['String']['output']; + /** Selection fields (e.g. board picker) that must be provided in field_values as { value, label } pairs */ + required_fields: Array; +}; + export type AggregateBasicAggregationResult = { __typename?: 'AggregateBasicAggregationResult'; result?: Maybe; @@ -430,6 +562,16 @@ export enum AggregateHistoryFunction { CountDistinct = 'COUNT_DISTINCT', /** Count items. */ CountItems = 'COUNT_ITEMS', + /** Truncate a date or datetime value to the day. */ + DateTruncDay = 'DATE_TRUNC_DAY', + /** Truncate a date or datetime value to the month. */ + DateTruncMonth = 'DATE_TRUNC_MONTH', + /** Truncate a date or datetime value to the quarter. */ + DateTruncQuarter = 'DATE_TRUNC_QUARTER', + /** Truncate a date or datetime value to the week. */ + DateTruncWeek = 'DATE_TRUNC_WEEK', + /** Truncate a date or datetime value to the year. */ + DateTruncYear = 'DATE_TRUNC_YEAR', /** Get the first value. */ First = 'FIRST', /** Get the ID. */ @@ -1272,6 +1414,8 @@ export type AppType = { updated_at?: Maybe; /** The latest version type */ version_type?: Maybe; + /** All versions of this app with their current status. Use this to poll promotion progress. */ + versions?: Maybe>; /** The webhook endpoint URL */ webhook_url?: Maybe; }; @@ -1298,6 +1442,18 @@ export type AppVersion = { type?: Maybe; }; +/** The lifecycle status of an app version */ +export enum AppVersionStatus { + /** Version has been superseded by a newer version */ + Deprecated = 'DEPRECATED', + /** Version is in development and not yet live */ + Draft = 'DRAFT', + /** Version is live and available to users */ + Live = 'LIVE', + /** Version is in the process of being promoted */ + Promoting = 'PROMOTING' +} + /** The app monetization information for the current account */ export type AppsMonetizationInfo = { __typename?: 'AppsMonetizationInfo'; @@ -1402,6 +1558,8 @@ export enum AssetHolder { Item = 'ITEM', /** An update/post entity. */ Post = 'POST', + /** A vibe application entity. */ + VibeApp = 'VIBE_APP', /** A workspace entity. */ Workspace = 'WORKSPACE' } @@ -1482,6 +1640,16 @@ export type AssignTeamOwnersResult = { team?: Maybe; }; +/** Input for assigning a work schedule and/or time off schedule to multiple users */ +export type AssignUserAvailabilityInput = { + /** ID of the time off schedule to assign; omit to leave unchanged */ + time_off_id?: InputMaybe; + /** IDs of the users to assign schedules to */ + user_ids: Array; + /** ID of the work schedule to assign; omit to leave unchanged */ + work_schedule_id?: InputMaybe; +}; + /** A board where the user has item assignments. */ export type AssignedBoard = { __typename?: 'AssignedBoard'; @@ -1493,6 +1661,36 @@ export type AssignedBoard = { board_id?: Maybe; }; +/** Structured result data for a completed or partially-completed operation */ +export type AsyncJobResult = { + __typename?: 'AsyncJobResult'; + /** Operation-specific details (failed item IDs, report URLs, etc.) */ + details?: Maybe; + /** Items that failed */ + failed?: Maybe; + /** Successfully processed items */ + succeeded?: Maybe; + /** Total items in the operation */ + total?: Maybe; +}; + +/** Status information for an async job */ +export type AsyncJobStatus = { + __typename?: 'AsyncJobStatus'; + /** When the job was created (ISO 8601) */ + created_at?: Maybe; + /** Error description if the job failed */ + error?: Maybe; + /** Unique job identifier */ + id?: Maybe; + /** Structured result data for completed or partially-completed operations */ + result?: Maybe; + /** Current job status */ + status?: Maybe; + /** When the job was last updated (ISO 8601) */ + updated_at?: Maybe; +}; + /** Represents a single attribute type option for a resource */ export type Attribute = { __typename?: 'Attribute'; @@ -1628,6 +1826,15 @@ export type AutomationData = { recipe?: Maybe; }; +/** A page of automations with cursor for pagination */ +export type AutomationsPage = { + __typename?: 'AutomationsPage'; + /** Opaque cursor for fetching the next page. Null if no more results. */ + cursor?: Maybe; + /** The automations in this page */ + items?: Maybe>; +}; + /** Base field type implementation */ export type BaseFieldType = FieldType & { __typename?: 'BaseFieldType'; @@ -1847,6 +2054,8 @@ export type Board = { access_level: BoardAccessLevel; /** The board log events. */ activity_logs?: Maybe>>; + /** Automations for this board */ + automations: AutomationsPage; /** The board's folder unique identifier. */ board_folder_id?: Maybe; /** The board's kind (public / private / share). */ @@ -1944,6 +2153,13 @@ export type BoardActivity_LogsArgs = { }; +/** A monday.com board. */ +export type BoardAutomationsArgs = { + cursor?: InputMaybe; + limit?: InputMaybe; +}; + + /** A monday.com board. */ export type BoardColumnsArgs = { capabilities?: InputMaybe>>; @@ -2025,6 +2241,69 @@ export enum BoardAttributes { Name = 'name' } +/** A board automation */ +export type BoardAutomation = { + __typename?: 'BoardAutomation'; + /** Whether the automation is active */ + active?: Maybe; + /** Creation timestamp */ + created_at?: Maybe; + /** Automation description */ + description?: Maybe; + /** Automation ID */ + id?: Maybe; + /** Automation importance level */ + importance?: Maybe; + /** Notice message for the automation */ + notice_message?: Maybe; + /** Template reference ID if created from template */ + template_reference_id?: Maybe; + /** Automation title */ + title?: Maybe; + /** Last update timestamp */ + updated_at?: Maybe; + /** Creator user ID */ + user_id?: Maybe; + /** Workflow block definitions */ + workflow_blocks?: Maybe; + /** Host data (board ID and type) */ + workflow_host_data?: Maybe; + /** Workflow variable definitions */ + workflow_variables?: Maybe; +}; + +/** Input for creating a board automation. Provide template_reference_id to create from a template, or workflow_blocks and workflow_variables for a direct creation. */ +export type BoardAutomationCreateInput = { + /** Board ID to host the automation */ + board_id: Scalars['String']['input']; + /** Automation description */ + description?: InputMaybe; + /** Template reference ID (for template-based creation) */ + template_reference_id?: InputMaybe; + /** Automation title */ + title: Scalars['String']['input']; + /** Automation block definitions (for direct creation) */ + workflow_blocks?: InputMaybe; + /** Automation variable definitions (for direct creation) */ + workflow_variables?: InputMaybe; + /** Template variable values (for template-based creation) */ + workflow_variables_values?: InputMaybe; +}; + +/** Result of creating a board automation */ +export type BoardAutomationCreateResult = { + __typename?: 'BoardAutomationCreateResult'; + /** The ID of the created automation */ + workflow_id?: Maybe; +}; + +/** Result of deleting a board automation */ +export type BoardAutomationDeleteResult = { + __typename?: 'BoardAutomationDeleteResult'; + /** Whether the deletion was successful */ + is_success?: Maybe; +}; + /** Basic role names for board permissions. Each role grants different levels of access to the board. */ export enum BoardBasicRoleName { /** @@ -2443,6 +2722,437 @@ export enum CalculatedFunction { Sum = 'SUM' } +/** Additional quota allocated beyond the base plan limit */ +export type CampaignsAdditionalQuota = { + __typename?: 'CampaignsAdditionalQuota'; + /** Amount of additional quota consumed */ + consumed?: Maybe; + /** Timestamp when additional quota expires */ + expired_at?: Maybe; + /** Additional quota limit */ + limit?: Maybe; +}; + +/** A campaign analytics event */ +export type CampaignsAnalyticsEvent = { + __typename?: 'CampaignsAnalyticsEvent'; + /** ID of the associated campaign */ + campaign_id?: Maybe; + /** Timestamp when the event was created */ + created_at?: Maybe; + /** Unique event identifier */ + id?: Maybe; + /** Unique identifier for this event */ + identifier?: Maybe; + /** Parsed reason for bounced emails */ + parsed_reason?: Maybe; + /** Type of analytics event */ + type?: Maybe; + /** ID of the associated variant */ + variant_id?: Maybe; +}; + +/** Types of analytics events for campaigns */ +export enum CampaignsAnalyticsEventKind { + /** Email was bounced back */ + EmailBounced = 'EMAIL_BOUNCED', + /** Link in email was clicked by recipient */ + EmailClicked = 'EMAIL_CLICKED', + /** Email was successfully delivered */ + EmailDelivered = 'EMAIL_DELIVERED', + /** Email was dropped before sending */ + EmailDropped = 'EMAIL_DROPPED', + /** Email was opened by recipient */ + EmailOpened = 'EMAIL_OPENED', + /** Recipient marked email as spam */ + EmailRecipientComplaint = 'EMAIL_RECIPIENT_COMPLAINT', + /** Recipient unsubscribed */ + EmailRecipientUnsubscribed = 'EMAIL_RECIPIENT_UNSUBSCRIBED', + /** Email was sent */ + EmailSent = 'EMAIL_SENT' +} + +/** Paginated analytics events response */ +export type CampaignsAnalyticsEventsResponse = { + __typename?: 'CampaignsAnalyticsEventsResponse'; + /** List of analytics events */ + data?: Maybe>; + /** Token for pagination to retrieve next batch */ + next_token?: Maybe; +}; + +/** Aggregated analytics summary for an email campaign */ +export type CampaignsAnalyticsSummary = { + __typename?: 'CampaignsAnalyticsSummary'; + /** Total number of link clicks */ + total_clicks?: Maybe; + /** Total emails delivered */ + total_delivered?: Maybe; + /** Total number of email opens */ + total_opens?: Maybe; + /** Total emails sent */ + total_sent?: Maybe; + /** Total spam complaints */ + total_spam_reports?: Maybe; + /** Total emails not delivered */ + total_undelivered?: Maybe; + /** Total unsubscribes */ + total_unsubscribes?: Maybe; + /** Number of unique clicks */ + unique_clicks?: Maybe; + /** Number of unique opens */ + unique_opens?: Maybe; + /** Number of unique spam reports */ + unique_spam_reports?: Maybe; + /** Number of unique undelivered */ + unique_undelivered?: Maybe; + /** Number of unique unsubscribes */ + unique_unsubscribes?: Maybe; +}; + +/** A brand color in a brand kit */ +export type CampaignsBrandColor = { + __typename?: 'CampaignsBrandColor'; + /** Hex color code */ + hex_code?: Maybe; + /** Unique color identifier */ + id?: Maybe; + /** Category of the brand color */ + kind?: Maybe; +}; + +/** Types of brand colors */ +export enum CampaignsBrandColorKind { + /** Accent brand color */ + Accent = 'ACCENT', + /** Other brand color */ + Other = 'OTHER', + /** Primary brand color */ + Primary = 'PRIMARY', + /** Secondary brand color */ + Secondary = 'SECONDARY', + /** Text color */ + Text = 'TEXT' +} + +/** A brand image in a brand kit */ +export type CampaignsBrandImage = { + __typename?: 'CampaignsBrandImage'; + /** Alternative text for the image */ + alt_text?: Maybe; + /** Height of the image in pixels */ + height?: Maybe; + /** Unique image identifier */ + id?: Maybe; + /** Category of the brand image */ + kind?: Maybe; + /** MIME type of the image */ + mime_type?: Maybe; + /** Name of the image */ + name?: Maybe; + /** URL to access the image */ + remote_url?: Maybe; + /** Size of the image in bytes */ + size_bytes?: Maybe; + /** Current status of the image */ + status?: Maybe; + /** Width of the image in pixels */ + width?: Maybe; +}; + +/** Types of brand images */ +export enum CampaignsBrandImageKind { + /** Image attachment */ + Attachment = 'ATTACHMENT', + /** Primary brand logo */ + PrimaryLogo = 'PRIMARY_LOGO', + /** Secondary brand logo */ + SecondaryLogo = 'SECONDARY_LOGO' +} + +/** Status of a brand image */ +export enum CampaignsBrandImageStatus { + /** Image confirmed */ + Confirmed = 'CONFIRMED', + /** Image pending confirmation */ + Pending = 'PENDING' +} + +/** A brand kit containing colors and images for an account */ +export type CampaignsBrandKit = { + __typename?: 'CampaignsBrandKit'; + /** Colors in this brand kit */ + brand_colors?: Maybe>; + /** Images in this brand kit */ + brand_images?: Maybe>; + /** Timestamp when the brand kit was created */ + created_at?: Maybe; + /** Unique brand kit identifier */ + id?: Maybe; + /** Name of the brand kit */ + name?: Maybe; + /** Status of the brand kit */ + status?: Maybe; + /** Timestamp when the brand kit was last updated */ + updated_at?: Maybe; +}; + +/** Company information for email campaigns */ +export type CampaignsCompanyInformation = { + __typename?: 'CampaignsCompanyInformation'; + /** Company name */ + company_name?: Maybe; + /** Company website URL */ + company_website_url?: Maybe; + /** Physical mailing address */ + physical_address?: Maybe; + /** Whether physical address was AI generated */ + physical_address_is_ai_generated?: Maybe; +}; + +/** Marketing contacts board configuration */ +export type CampaignsContactsBoard = { + __typename?: 'CampaignsContactsBoard'; + /** ID of the board */ + board_id?: Maybe; + /** ID of the email column */ + email_column_id?: Maybe; + /** ID of the email subscription column */ + email_subscription_column_id?: Maybe; +}; + +/** An email campaign */ +export type CampaignsEmailCampaign = { + __typename?: 'CampaignsEmailCampaign'; + /** Timestamp when the campaign was created */ + created_at?: Maybe; + /** User who created the campaign */ + created_by?: Maybe; + /** Unique campaign identifier */ + id?: Maybe; + /** Name of the campaign */ + name?: Maybe; + /** Preview text shown in email clients */ + preview_text?: Maybe; + /** When the campaign should be sent */ + schedule_type?: Maybe; + /** Scheduled time for sending */ + scheduled_time?: Maybe; + /** IDs of segments targeted by this campaign */ + segment_ids?: Maybe>; + /** Timestamp when the campaign was sent */ + sent_on?: Maybe; + /** Current status of the campaign */ + status?: Maybe; + /** Email subject line */ + subject?: Maybe; + /** Analytics summary for the campaign */ + summary?: Maybe; + /** HTML content of the email template */ + template_html?: Maybe; + /** Timestamp when the campaign was last updated */ + updated_at?: Maybe; +}; + +/** A market insight */ +export type CampaignsInsight = { + __typename?: 'CampaignsInsight'; + /** Rationale for the target audience */ + audience_rationale?: Maybe; + /** Assessment of campaign worthiness */ + campaign_worthiness?: Maybe; + /** Timestamp when the insight was created */ + created_at?: Maybe; + /** Unique insight identifier */ + id?: Maybe; + /** Raw context data for the insight */ + raw_context?: Maybe; + /** Source of the insight */ + source?: Maybe; + /** Current status of the insight */ + status?: Maybe; + /** Summary of the insight */ + summary?: Maybe; + /** Target audience for the insight */ + target_audience?: Maybe; + /** Timestamp of the insight */ + timestamp?: Maybe; + /** Title of the insight */ + title?: Maybe; + /** Classification type of the insight */ + type?: Maybe; + /** Timestamp when the insight was last updated */ + updated_at?: Maybe; +}; + +/** Classification type of an insight */ +export enum CampaignsInsightClassificationKind { + /** Competitor move insight */ + CompetitorMove = 'COMPETITOR_MOVE', + /** Crisis or event insight */ + CrisisEvent = 'CRISIS_EVENT', + /** Customer behavior insight */ + CustomerBehavior = 'CUSTOMER_BEHAVIOR', + /** Emerging technology insight */ + EmergingTechnology = 'EMERGING_TECHNOLOGY', + /** Market trend insight */ + MarketTrend = 'MARKET_TREND', + /** Other type of insight */ + Other = 'OTHER', + /** Product launch insight */ + ProductLaunch = 'PRODUCT_LAUNCH', + /** Regulatory change insight */ + RegulatoryChange = 'REGULATORY_CHANGE' +} + +/** Status of an insight */ +export enum CampaignsInsightStatusKind { + /** active */ + Active = 'ACTIVE', + /** consumed */ + Consumed = 'CONSUMED', + /** dismissed */ + Dismissed = 'DISMISSED' +} + +/** A physical mailing address */ +export type CampaignsPhysicalAddress = { + __typename?: 'CampaignsPhysicalAddress'; + /** City name */ + city?: Maybe; + /** Country name */ + country?: Maybe; + /** State or province */ + state?: Maybe; + /** Street address */ + street_address?: Maybe; + /** ZIP code */ + zip_code?: Maybe; +}; + +/** When the campaign should be sent */ +export enum CampaignsScheduleKind { + /** Send at scheduled time */ + Later = 'LATER', + /** Send immediately */ + Now = 'NOW' +} + +/** An audience segment */ +export type CampaignsSegment = { + __typename?: 'CampaignsSegment'; + /** Timestamp when the segment was created */ + created_at?: Maybe; + /** User who created the segment */ + created_by?: Maybe; + /** Entity ID from the data source */ + data_source_entity_id?: Maybe; + /** Entity type from the data source */ + data_source_entity_type?: Maybe; + /** ID of the data source */ + data_source_id?: Maybe; + /** Unique segment identifier */ + id?: Maybe; + /** Name of the segment */ + name?: Maybe; + /** Type of the segment */ + type?: Maybe; + /** Timestamp when the segment was last updated */ + updated_at?: Maybe; +}; + +/** Marketing channels settings for the current account */ +export type CampaignsSettings = { + __typename?: 'CampaignsSettings'; + /** Company information settings */ + company_information?: Maybe; + /** Marketing contacts board configuration */ + contacts_board?: Maybe; + /** Unsubscribe footer configuration */ + unsubscribe_footer?: Maybe; + /** Unsubscribe page configuration */ + unsubscribe_page?: Maybe; +}; + +/** Status of a campaign */ +export enum CampaignsStatusKind { + /** Campaign is blocked */ + Blocked = 'BLOCKED', + /** Campaign is in draft state */ + Draft = 'DRAFT', + /** Campaign failed */ + Failed = 'FAILED', + /** Campaign is being generated */ + Generating = 'GENERATING', + /** Campaign is ongoing */ + Ongoing = 'ONGOING', + /** Campaign is on hold */ + OnHold = 'ON_HOLD', + /** Campaign is processing */ + Processing = 'PROCESSING', + /** Campaign is ready to send */ + ReadyToSend = 'READY_TO_SEND', + /** Campaign is scheduled for later */ + Scheduled = 'SCHEDULED', + /** Campaign is currently sending */ + Sending = 'SENDING', + /** Campaign has been sent */ + Sent = 'SENT' +} + +/** Unsubscribe footer configuration */ +export type CampaignsUnsubscribeFooter = { + __typename?: 'CampaignsUnsubscribeFooter'; + /** Whether removal is allowed */ + allow_removal?: Maybe; +}; + +/** Unsubscribe page configuration */ +export type CampaignsUnsubscribePage = { + __typename?: 'CampaignsUnsubscribePage'; + /** Page body content */ + body?: Maybe; + /** Page title */ + title?: Maybe; +}; + +/** Account-level usage metrics across all resource domains */ +export type CampaignsUsage = { + __typename?: 'CampaignsUsage'; + /** Email sends usage metrics */ + email_sends?: Maybe; + /** Whether this is a touch account */ + is_touch_account?: Maybe; + /** Marketing contacts usage metrics */ + marketing_contacts?: Maybe; +}; + +/** Usage metrics for a single resource domain */ +export type CampaignsUsageForDomain = { + __typename?: 'CampaignsUsageForDomain'; + /** Additional quota allocation */ + additional_quota?: Maybe; + /** Whether usage is blocked due to limit exceeded */ + blocked?: Maybe; + /** Amount of resources consumed */ + consumed?: Maybe; + /** End date of the billing period */ + end_date?: Maybe; + /** Metering bucket and service identifier */ + key?: Maybe; + /** Resource usage limit */ + limit?: Maybe; +}; + +/** Identifies the metering bucket and service */ +export type CampaignsUsageKey = { + __typename?: 'CampaignsUsageKey'; + /** Metering bucket name */ + bucket_name?: Maybe; + /** Service name */ + service?: Maybe; +}; + /** Fields that can be overridden in a column policy */ export enum CanOverrideField { /** Allow overriding column description */ @@ -2941,6 +3651,8 @@ export type CountryValue = ColumnValue & { export type CreateAgentInput = { /** The LLM model the agent should use */ agent_model?: InputMaybe; + /** IDs of previously uploaded pending files to attach as knowledge during creation */ + pending_file_ids?: InputMaybe>; /** A description of what the agent should do — used to generate profile, goal, and plan via AI */ prompt: Scalars['String']['input']; }; @@ -3231,6 +3943,15 @@ export type CreateQuestionInput = { visible?: InputMaybe; }; +/** The result of creating a service user. */ +export type CreateServiceUserResult = { + __typename?: 'CreateServiceUserResult'; + /** The API token for the created service user. Null if token generation failed. */ + token?: Maybe; + /** The created service user. */ + user?: Maybe; +}; + export type CreateStatusColumnSettingsInput = { labels: Array; }; @@ -3287,6 +4008,26 @@ export type CreateTeamOptionsInput = { allow_empty_team?: InputMaybe; }; +/** Input for adding a non-working date entry to a time off schedule */ +export type CreateTimeOffEntryInput = { + /** End date of the non-working period in YYYY-MM-DD format */ + end: Scalars['String']['input']; + /** Optional display name for this time off entry */ + name?: InputMaybe; + /** Start date of the non-working period in YYYY-MM-DD format */ + start: Scalars['String']['input']; + /** ID of the time off schedule to add this entry to */ + time_off_id: Scalars['ID']['input']; +}; + +/** Input for creating a new time off schedule */ +export type CreateTimeOffInput = { + /** Non-working date entries to create alongside the schedule. Subsequent additions/updates use the dedicated time off entry mutations. */ + entries?: InputMaybe>; + /** Display name for the new time off schedule */ + name: Scalars['String']['input']; +}; + /** Input for initiating a file upload. */ export type CreateUploadInput = { /** The MIME content type of the file. */ @@ -3314,6 +4055,14 @@ export type CreateUploadResult = { upload_id?: Maybe; }; +/** Input for creating a new work schedule */ +export type CreateWorkScheduleInput = { + /** Per-weekday working hours; if omitted, all seven days are created as inactive */ + days?: InputMaybe>; + /** Display name for the new work schedule */ + name: Scalars['String']['input']; +}; + /** Input for creating a workflow from a template */ export type CreateWorkflowFromTemplateInput = { /** Reference ID of the creator app feature */ @@ -3585,6 +4334,15 @@ export type Dashboard = { workspace_id?: Maybe; }; +/** Aggregated result of synchronously loading all widget data for a dashboard. */ +export type DashboardDataResult = { + __typename?: 'DashboardDataResult'; + /** Identifier of the dashboard whose widgets were loaded. */ + dashboard_id?: Maybe; + /** Per-widget results for the dashboard, one entry per supported widget. */ + widgets?: Maybe>; +}; + /** Dashboard visibility. `PUBLIC` dashboards are visible to all workspace members; `PRIVATE` dashboards are only visible to invited users. */ export enum DashboardKind { Private = 'PRIVATE', @@ -3755,6 +4513,13 @@ export type DeleteWorkflowResult = { is_success: Scalars['Boolean']['output']; }; +/** Represents a document block that was successfully deleted. */ +export type DeletedDocBlock = { + __typename?: 'DeletedDocBlock'; + /** The deleted block's unique identifier. */ + id: Scalars['ID']['output']; +}; + /** A department in the account. */ export type Department = { __typename?: 'Department'; @@ -3935,9 +4700,20 @@ export type DependencyValueInput = { removed_pulse?: InputMaybe>; }; +/** An app version */ +export type DeveloperAppVersion = { + __typename?: 'DeveloperAppVersion'; + /** The unique identifier of the app version */ + id?: Maybe; + /** The current lifecycle status of this app version */ + status?: Maybe; +}; + /** A document block that was changed between two versions, including its content and what type of change occurred. */ export type DiffBlock = { __typename?: 'DiffBlock'; + /** The ID of the AI agent that made the change to this block, or null if the change was made by a user. */ + agent_id?: Maybe; /** The changes that occurred to this block (added, deleted, or changed). */ changes?: Maybe; /** The block content as a JSON string. */ @@ -3950,6 +4726,8 @@ export type DiffBlock = { summary?: Maybe; /** The type of block (e.g., text, image, list). */ type?: Maybe; + /** The ID of the user who made the change to this block, or null if not available. */ + user_id?: Maybe; }; export type DirectDocValue = ColumnValue & { @@ -3983,6 +4761,8 @@ export type DirectoryResource = { location?: Maybe; /** The name of the directory resource. */ name: Scalars['String']['output']; + /** The type of the resource (user, viewer, or guest). */ + resource_type?: Maybe; /** The skills of the directory resource. */ skills?: Maybe>; }; @@ -3997,6 +4777,16 @@ export enum DirectoryResourceAttribute { Skills = 'SKILLS' } +/** The type of a directory resource */ +export enum DirectoryResourceKind { + /** A guest user */ + Guest = 'GUEST', + /** A member or admin user */ + User = 'USER', + /** A view-only user */ + Viewer = 'VIEWER' +} + /** Paginated response containing directory resources and cursor for next page */ export type DirectoryResourcesResponse = { __typename?: 'DirectoryResourcesResponse'; @@ -4582,6 +5372,8 @@ export type ExportMarkdownResult = { export type ExportOptionsInput = { /** Header row format for CSV exports. Ignored for other formats. */ header_row?: InputMaybe; + /** Include item_id (and parent_item_id when subitems are enabled) columns at the end of CSV exports. */ + include_item_identifiers?: InputMaybe; /** Include subitems in the export */ include_subitems?: InputMaybe; /** Include updates/comments in the export */ @@ -4625,35 +5417,6 @@ export enum ExternalWidget { Table = 'TABLE' } -/** A theme produced by extracting brand identity from a URL. Extends VibeTheme with extraction metadata. */ -export type ExtractedVibeTheme = { - __typename?: 'ExtractedVibeTheme'; - /** Three representative HSL colors for the picker swatch: [primary, accent (= brand secondary), chart-3 (= primary +60° hue)]. Differs from VibeTheme.colors which uses [primary, accent, secondary]: extracted themes leave the scaffold "secondary" slot neutral, so chart-3 is substituted to give three distinct brand-related hues. */ - colors?: Maybe>; - /** Dark mode CSS token values (HSL strings keyed by CSS variable name) */ - dark?: Maybe; - /** Pass-through warnings from brand-extraction */ - extraction_notes?: Maybe>; - /** Primary font family name */ - font_family?: Maybe; - /** Secondary font family name */ - font_family_secondary?: Maybe; - /** The theme identifier (e.g. extracted_<8-char-hash>) */ - id?: Maybe; - /** User-friendly display name */ - label?: Maybe; - /** Light mode CSS token values (HSL strings keyed by CSS variable name) */ - light?: Maybe; - /** Primary logo URL for FE preview hint */ - logo_url?: Maybe; - /** Theme display name (derived from extracted brand) */ - name?: Maybe; - /** Base border radius value */ - radius?: Maybe; - /** URL the theme was extracted from */ - source_url?: Maybe; -}; - /** Information about a failed user board role update, including the user ID and the error encountered. */ export type FailedUserBoardRoleUpdate = { __typename?: 'FailedUserBoardRoleUpdate'; @@ -4696,15 +5459,11 @@ export type FieldType = { uniqueKey?: Maybe; }; -/** Implementation of a field type */ +/** An interface (app feature) that a field type implements */ export type FieldTypeImplementation = { __typename?: 'FieldTypeImplementation'; - /** Unique identifier for the implementation */ - id?: Maybe; - /** Name of the implementation */ - name?: Maybe; - /** Unique key of the app feature */ - uniqueKey?: Maybe; + /** Reference id of the app feature interface this field type implements */ + app_feature_reference_id?: Maybe; }; /** The type of relation between a field and its type */ @@ -6079,6 +6838,16 @@ export type ImportDocFromHtmlResult = { success: Scalars['Boolean']['output']; }; +/** The reason an agent is inactive */ +export enum InactiveReason { + /** The agent was deactivated due to an account-level block */ + AccountLevelBlocking = 'ACCOUNT_LEVEL_BLOCKING', + /** The agent was manually deactivated by a user */ + DeactivatedByUser = 'DEACTIVATED_BY_USER', + /** The agent was deactivated automatically because it exceeded the runs rate limit */ + RunsRateLimitExceeded = 'RUNS_RATE_LIMIT_EXCEEDED' +} + /** Interface for input field configuration */ export type InputFieldConfig = { /** Detailed description of the field */ @@ -6260,6 +7029,8 @@ export enum InvitationMethod { ServicePortalUserInvitation = 'SERVICE_PORTAL_USER_INVITATION', /** Added via single sign-on. */ Sso = 'SSO', + /** Created via system creation flow. */ + SystemCreation = 'SYSTEM_CREATION', /** Unknown invitation method. */ Unknown = 'UNKNOWN', /** Invited by another user. */ @@ -7522,6 +8293,22 @@ export type ItemsResponse = { items: Array; }; +/** Status of an async job */ +export enum JobState { + /** Job was cancelled */ + Cancelled = 'CANCELLED', + /** Job completed successfully */ + Completed = 'COMPLETED', + /** Job expired before completion */ + Expired = 'EXPIRED', + /** Job failed */ + Failed = 'FAILED', + /** Job is queued but not yet started */ + Pending = 'PENDING', + /** Job is actively executing */ + Running = 'RUNNING' +} + /** Status of a job operation. Currently supports items job status for backfill and ingest operations. */ export type JobStatus = ItemsJobStatus; @@ -7544,6 +8331,38 @@ export type KnowledgeBaseAnswer = { raw_snippets?: Maybe>; }; +/** The permission level the agent has on a resource */ +export enum KnowledgePermission { + /** Agent can read the resource */ + Read = 'READ', + /** Agent can read and write the resource */ + ReadWrite = 'READ_WRITE' +} + +/** The type of monday.com resource granted to an agent */ +export enum KnowledgeScope { + /** A monday.com board */ + Board = 'BOARD', + /** A monday.com doc */ + Doc = 'DOC' +} + +/** The source type of a knowledge entry */ +export enum KnowledgeSource { + /** Knowledge sourced from an uploaded file */ + File = 'FILE' +} + +/** The state of a knowledge entry */ +export enum KnowledgeState { + /** Knowledge is active and available for retrieval */ + Active = 'ACTIVE', + /** Knowledge has been deleted */ + Deleted = 'DELETED', + /** Knowledge is being processed */ + Pending = 'PENDING' +} + export type LastUpdatedValue = ColumnValue & { __typename?: 'LastUpdatedValue'; /** The column that this value belongs to. */ @@ -7722,6 +8541,33 @@ export type LiteBuilderContextData = { source_config?: Maybe; }; +/** A page of live workflow automations with cursor-based pagination metadata */ +export type LiveWorkflowAutomationsPage = { + __typename?: 'LiveWorkflowAutomationsPage'; + /** List of live workflow automations in this page */ + data?: Maybe>; + /** Cursor-based pagination metadata */ + page_info?: Maybe; +}; + +/** A page of live workflows with pagination metadata */ +export type LiveWorkflowsPage = { + __typename?: 'LiveWorkflowsPage'; + /** List of live workflows in this page */ + data: Array; + /** Cursor-based pagination metadata for fetching subsequent pages */ + page_info: LiveWorkflowsPageInfo; +}; + +/** Cursor-based pagination metadata for live workflows */ +export type LiveWorkflowsPageInfo = { + __typename?: 'LiveWorkflowsPageInfo'; + /** Cursor of the last item in the current page; pass as `lastId` to fetch the next page */ + end_cursor?: Maybe; + /** Whether there are more results beyond the current page */ + has_next_page: Scalars['Boolean']['output']; +}; + /** Answer for a location question. */ export type LocationAnswerInput = { /** Full formatted address. */ @@ -7980,6 +8826,8 @@ export type Meeting = { action_items?: Maybe>; /** The end time of the meeting. */ end_time: Scalars['Date']['output']; + /** A concise AI-generated gist of the meeting. */ + gist?: Maybe; /** The unique identifier of the meeting. */ id: Scalars['ID']['output']; /** The URL to view the meeting in the notetaker. */ @@ -8192,6 +9040,8 @@ export type MondayAssetDocumentSourceInput = { /** Root mutation type for the Dependencies service */ export type Mutation = { __typename?: 'Mutation'; + /** Activate an existing agent */ + activate_agent?: Maybe; /** Activate a form to make it visible to users and accept new submissions. */ activate_form?: Maybe; /** Activate a live workflow */ @@ -8200,6 +9050,8 @@ export type Mutation = { activate_managed_column?: Maybe; /** Activates the specified users. */ activate_users?: Maybe; + /** Grant an agent access to a monday.com board or doc. Creates a draft version, applies the change, and promotes to live. */ + add_agent_resource_access?: Maybe; /** Add resources to the planner without allocations */ add_allocated_resources?: Maybe>; /** Add allocations to resources that already exist on the Resource Planner */ @@ -8214,6 +9066,8 @@ export type Mutation = { add_file_to_update?: Maybe; /** Add a required column to a board */ add_required_column?: Maybe; + /** Attach a skill to an agent by its catalog id. Use agent_skills_catalog to discover available ids. */ + add_skill_to_agent?: Maybe; /** * Add subscribers to a board. * @deprecated use add_users_to_board instead @@ -8225,6 +9079,8 @@ export type Mutation = { add_teams_to_board?: Maybe>>; /** Add teams to a workspace. */ add_teams_to_workspace?: Maybe>>; + /** Adds a trigger to an agent. Creates a draft if needed, applies the change, and promotes to live in one call. Returns { success: true } on success. Use agent_active_triggers to read the updated trigger list. Get available trigger types and field schemas from agent_triggers_catalog. */ + add_trigger_to_agent?: Maybe; /** Add subscribers to a board. */ add_users_to_board?: Maybe>>; /** Add users to team. */ @@ -8245,6 +9101,8 @@ export type Mutation = { assign_department_owner?: Maybe; /** Assigns the specified users as owners of the specified team. */ assign_team_owners?: Maybe; + /** Assign the same work schedule and time off schedule to multiple users; maximum 100 user IDs per call. Returns one result per user, allowing partial success. */ + assign_user_availability?: Maybe>; /** Creates a new dropdown column in a board that is linked to a managed column. The column data and settings are controlled by the managed column. Title, description, and dropdown-specific settings (limit_select, label_limit_count) can be overridden locally. */ attach_dropdown_managed_column?: Maybe; /** Creates a new status column in a board that is linked to a managed column. The column data and settings are controlled by the managed column. Only title and description can be overridden locally. */ @@ -8297,6 +9155,8 @@ export type Mutation = { convert_board_to_project?: Maybe; /** Create an agent from a prompt. AI generates the profile, goal, and plan — expect ~20s for completion. created_at and updated_at are null in the response; use the agent query to fetch them. */ create_agent?: Maybe; + /** Create a new skill for the account. The skill will appear in agent_skills_catalog and can be attached to any agent via add_skill_to_agent. */ + create_agent_skill?: Maybe; /** Creates a new app with the specified configuration. */ create_app?: Maybe; /** Create a new app feature. */ @@ -8307,6 +9167,8 @@ export type Mutation = { create_blank_agent?: Maybe; /** Create a new board. */ create_board?: Maybe; + /** Create a board automation. Provide template_reference_id to create from a template, or workflow_blocks and workflow_variables for a direct creation. */ + create_board_automation: BoardAutomationCreateResult; /** Creates a board relation column. */ create_board_relation_column?: Maybe; /** Generic mutation for creating any column type with validation. Supports creating column with properties like title, description, and type-specific defaults/settings. The mutation validates input against the column type's schema before applying changes. Use get_column_type_schema query to understand available properties for each column type. */ @@ -8370,6 +9232,8 @@ export type Mutation = { create_portfolio?: Maybe; /** Create a new project in monday.com from scratch. This mutation initiates asynchronous project creation with comprehensive customization options including: privacy settings (private/public - share is currently not supported), optional companions like Resource Planner for enhanced project management capabilities, workspace assignment for organizational structure, folder placement for better organization, and template selection for predefined project structures. Since project creation is asynchronous, you can optionally provide a callback_url where the project ID will be sent via POST request once creation completes. The callback will receive: { is_success: boolean, process_id: string, project_id?: number }. Returns a process_id for tracking the creation request. */ create_project?: Maybe; + /** Creates a new service user with a read-only API token. */ + create_service_user?: Maybe; /** Creates a new status column with strongly typed settings. Status columns allow users to track item progress through customizable labels (e.g., "Working on it", "Done", "Stuck"). This mutation is specifically for status/color columns and provides type-safe creation with label configuration. */ create_status_column?: Maybe; /** Create managed column of type status mutation. */ @@ -8380,6 +9244,10 @@ export type Mutation = { create_task?: Maybe; /** Creates a new team. */ create_team?: Maybe; + /** Create one or more named time off schedules for the account; maximum 100 inputs per call */ + create_time_off?: Maybe>; + /** Add one or more non-working date entries to a time off schedule; maximum 100 inputs per call */ + create_time_off_entry?: Maybe>; create_timeline_item?: Maybe; create_update?: Maybe; /** Initiate a file upload. Returns presigned upload URLs and an upload_id. */ @@ -8394,8 +9262,14 @@ export type Mutation = { create_webhook?: Maybe; /** Create a new widget. */ create_widget?: Maybe; + /** Create one or more named work schedules for the account; maximum 100 inputs per call */ + create_work_schedule?: Maybe>; + /** Create a new empty workflow in the given workspace and return its identifiers. */ + create_workflow: WorkflowBuilderCreateResult; /** Create a new workspace. */ create_workspace?: Maybe; + /** Deactivate an existing agent */ + deactivate_agent?: Maybe; /** Deactivate a form to hide it from users and stop accepting submissions. Form data is preserved. */ deactivate_form?: Maybe; /** Deactivate a live workflow */ @@ -8414,6 +9288,8 @@ export type Mutation = { delete_article?: Maybe; /** Delete a board. */ delete_board?: Maybe; + /** Delete a board automation by ID. */ + delete_board_automation: BoardAutomationDeleteResult; /** Deletes a column from a board. Cannot delete mandatory columns (e.g., name column). */ delete_column?: Maybe; delete_custom_activity?: Maybe; @@ -8425,6 +9301,8 @@ export type Mutation = { delete_doc?: Maybe; /** Delete a document block */ delete_doc_block?: Maybe; + /** Deletes multiple document blocks in a single operation. Maximum 100 blocks per request. */ + delete_doc_blocks?: Maybe>; /** Delete entity ID mappings by old IDs for a migration job. */ delete_entity_id_mappings?: Maybe; /** Remove an object from favorites */ @@ -8462,6 +9340,10 @@ export type Mutation = { delete_teams_from_board?: Maybe>>; /** Delete teams from a workspace. */ delete_teams_from_workspace?: Maybe>>; + /** Soft-delete one or more time off schedules; maximum 100 IDs per call */ + delete_time_off?: Maybe>; + /** Soft-delete one or more time off entries; maximum 100 IDs per call */ + delete_time_off_entry?: Maybe>; delete_timeline_item?: Maybe; delete_update?: Maybe; /** Delete users from a workspace. */ @@ -8474,6 +9356,8 @@ export type Mutation = { delete_webhook?: Maybe; /** Delete an existing widget. */ delete_widget?: Maybe; + /** Soft-delete one or more work schedules; maximum 100 IDs per call */ + delete_work_schedule?: Maybe>; /** Delete workspace. */ delete_workspace?: Maybe; /** Detach boards from their object schemas. */ @@ -8512,28 +9396,42 @@ export type Mutation = { pin_to_top: Update; /** Process an event through the task engine AI. Returns true when accepted. */ process_events?: Maybe; + /** Promotes the latest draft app version of an app to live. Promotion is asynchronous — poll the returned version's status field (via the app query) until it transitions to LIVE. Only app collaborators can perform this action. */ + promote_app?: Maybe; /** Publishes an article with the specified object ID. Allows setting privacy level, target folder, and managing subscribers (users and teams). Returns the updated article metadata. */ publish_article?: Maybe; /** Publishes object out of draft state. Returns {success: true} on success, {success: false} on failure. */ publish_object?: Maybe; /** Reconcile the current user tasks board with latest source item changes. */ reconcile_with_items?: Maybe; + /** Revokes all existing tokens and generates a new API token for a service user. */ + regenerate_service_user_token?: Maybe; + /** Remove a board or doc from an agent. Creates a draft, removes the access, and promotes to live. */ + remove_agent_resource_access?: Maybe; /** Removes connected boards from a board relation column. */ remove_board_relation_connected_boards?: Maybe>; /** Remove mock app subscription for the current account */ remove_mock_app_subscription?: Maybe; /** Remove a required column from a board */ remove_required_column?: Maybe; + /** Detach a skill from an agent by its catalog id. */ + remove_skill_from_agent?: Maybe; /** Removes the specified users as owners of the specified team. */ remove_team_owners?: Maybe; + /** Removes a trigger from an agent by its node_id. Creates a draft if needed, applies the change, and promotes to live in one call. Returns { success: true } on success. Use agent_active_triggers to verify the trigger is gone. Get node_id values from the agent_active_triggers query. */ + remove_trigger_from_agent?: Maybe; /** Remove users from team. */ remove_users_from_team?: Maybe; /** Restore an entity from a migration job */ restore_entity?: Maybe; + /** Revokes all API tokens for a service user. */ + revoke_service_user_tokens?: Maybe; /** Rollback a restore to undo the workspace creation in the target account */ rollback_restore?: Maybe; /** Rollback a snapshot to allow creating a new one for the same entity */ rollback_snapshot?: Maybe; + /** Trigger a manual run for an existing agent. This is an async fire-and-forget operation — a successful response means the run was accepted and enqueued, not that it has completed or succeeded. Use trigger_uuid to correlate the execution in downstream events or future status endpoints. */ + run_agent?: Maybe; /** Create a workflow template for an account */ save_workflow_as_template?: Maybe; /** @@ -8553,6 +9451,8 @@ export type Mutation = { shorten_form_url?: Maybe; /** Unassigns owners from a department. */ unassign_department_owners?: Maybe; + /** Remove explicit work schedule and/or time off assignments from multiple users; maximum 100 user IDs per call. Returns one result per user, allowing partial success. */ + unassign_user_availability?: Maybe>; /** Undo a previously completed action, or cancel one still in flight */ undo_action?: Maybe; /** Uninstalls an app from the current account. Requires account admin permission. */ @@ -8561,6 +9461,10 @@ export type Mutation = { unpin_from_top: Update; /** Unpublishes object from public state back to draft state. Returns {success: true} on success, {success: false} on failure. */ unpublish_object?: Maybe; + /** Update an agent — creates a new draft if needed, applies the changes, and publishes to live in one call */ + update_agent?: Maybe; + /** Change the permission level an agent has on an existing board or doc. Creates a draft, updates the permission, and promotes to live. */ + update_agent_resource_access?: Maybe; /** Update multiple allocations in a single batch operation. Returns per-item results. */ update_allocations?: Maybe>; /** Updates an existing app. If the app latest version is live, a new draft version is automatically created and updated. */ @@ -8643,6 +9547,10 @@ export type Mutation = { update_status_managed_column?: Maybe; /** Update an existing task by ID. */ update_task?: Maybe; + /** Update the name of a time off schedule */ + update_time_off?: Maybe; + /** Update the name or date range of one or more existing time off entries; maximum 100 inputs per call */ + update_time_off_entry?: Maybe>; /** Update board roles for multiple users. */ update_users_board_role?: Maybe; /** Updates the role of the specified users. */ @@ -8653,6 +9561,8 @@ export type Mutation = { update_view?: Maybe; /** Update an existing board table view */ update_view_table?: Maybe; + /** Update the name and/or working hours of an existing work schedule */ + update_work_schedule?: Maybe; /** Update an existing workspace. */ update_workspace?: Maybe; /** Upsert entity ID mappings for a migration job. */ @@ -8664,6 +9574,12 @@ export type Mutation = { }; +/** Root mutation type for the Dependencies service */ +export type MutationActivate_AgentArgs = { + id: Scalars['ID']['input']; +}; + + /** Root mutation type for the Dependencies service */ export type MutationActivate_FormArgs = { formToken: Scalars['String']['input']; @@ -8688,6 +9604,15 @@ export type MutationActivate_UsersArgs = { }; +/** Root mutation type for the Dependencies service */ +export type MutationAdd_Agent_Resource_AccessArgs = { + id: Scalars['ID']['input']; + permission_type: KnowledgePermission; + resource_id: Scalars['ID']['input']; + scope_type: KnowledgeScope; +}; + + /** Root mutation type for the Dependencies service */ export type MutationAdd_Allocated_ResourcesArgs = { planner_id: Scalars['ID']['input']; @@ -8741,6 +9666,13 @@ export type MutationAdd_Required_ColumnArgs = { }; +/** Root mutation type for the Dependencies service */ +export type MutationAdd_Skill_To_AgentArgs = { + agent_id: Scalars['ID']['input']; + skill_id: Scalars['ID']['input']; +}; + + /** Root mutation type for the Dependencies service */ export type MutationAdd_Subscribers_To_BoardArgs = { board_id: Scalars['ID']['input']; @@ -8773,6 +9705,14 @@ export type MutationAdd_Teams_To_WorkspaceArgs = { }; +/** Root mutation type for the Dependencies service */ +export type MutationAdd_Trigger_To_AgentArgs = { + agent_id: Scalars['ID']['input']; + block_reference_id: Scalars['ID']['input']; + field_values?: InputMaybe; +}; + + /** Root mutation type for the Dependencies service */ export type MutationAdd_Users_To_BoardArgs = { board_id: Scalars['ID']['input']; @@ -8842,6 +9782,12 @@ export type MutationAssign_Team_OwnersArgs = { }; +/** Root mutation type for the Dependencies service */ +export type MutationAssign_User_AvailabilityArgs = { + input: AssignUserAvailabilityInput; +}; + + /** Root mutation type for the Dependencies service */ export type MutationAttach_Dropdown_Managed_ColumnArgs = { after_column_id?: InputMaybe; @@ -9044,13 +9990,21 @@ export type MutationCreate_AgentArgs = { /** Root mutation type for the Dependencies service */ -export type MutationCreate_AppArgs = { - input: CreateAppInput; +export type MutationCreate_Agent_SkillArgs = { + content: Scalars['String']['input']; + description?: InputMaybe; + name: Scalars['String']['input']; }; /** Root mutation type for the Dependencies service */ -export type MutationCreate_App_FeatureArgs = { +export type MutationCreate_AppArgs = { + input: CreateAppInput; +}; + + +/** Root mutation type for the Dependencies service */ +export type MutationCreate_App_FeatureArgs = { app_id: Scalars['ID']['input']; app_version_id?: InputMaybe; data?: InputMaybe; @@ -9094,6 +10048,12 @@ export type MutationCreate_BoardArgs = { }; +/** Root mutation type for the Dependencies service */ +export type MutationCreate_Board_AutomationArgs = { + input: BoardAutomationCreateInput; +}; + + /** Root mutation type for the Dependencies service */ export type MutationCreate_Board_Relation_ColumnArgs = { after_column_id?: InputMaybe; @@ -9384,6 +10344,13 @@ export type MutationCreate_ProjectArgs = { }; +/** Root mutation type for the Dependencies service */ +export type MutationCreate_Service_UserArgs = { + name: Scalars['String']['input']; + title?: InputMaybe; +}; + + /** Root mutation type for the Dependencies service */ export type MutationCreate_Status_ColumnArgs = { after_column_id?: InputMaybe; @@ -9426,6 +10393,18 @@ export type MutationCreate_TeamArgs = { }; +/** Root mutation type for the Dependencies service */ +export type MutationCreate_Time_OffArgs = { + inputs: Array; +}; + + +/** Root mutation type for the Dependencies service */ +export type MutationCreate_Time_Off_EntryArgs = { + inputs: Array; +}; + + /** Root mutation type for the Dependencies service */ export type MutationCreate_Timeline_ItemArgs = { content?: InputMaybe; @@ -9515,6 +10494,23 @@ export type MutationCreate_WidgetArgs = { }; +/** Root mutation type for the Dependencies service */ +export type MutationCreate_Work_ScheduleArgs = { + inputs: Array; +}; + + +/** Root mutation type for the Dependencies service */ +export type MutationCreate_WorkflowArgs = { + description?: InputMaybe; + folder_id?: InputMaybe; + owner_ids?: InputMaybe>; + privacy_kind?: InputMaybe; + title?: InputMaybe; + workspace_id: Scalars['ID']['input']; +}; + + /** Root mutation type for the Dependencies service */ export type MutationCreate_WorkspaceArgs = { account_product_id?: InputMaybe; @@ -9524,6 +10520,13 @@ export type MutationCreate_WorkspaceArgs = { }; +/** Root mutation type for the Dependencies service */ +export type MutationDeactivate_AgentArgs = { + id: Scalars['ID']['input']; + inactive_reason?: InputMaybe; +}; + + /** Root mutation type for the Dependencies service */ export type MutationDeactivate_FormArgs = { formToken: Scalars['String']['input']; @@ -9579,6 +10582,13 @@ export type MutationDelete_BoardArgs = { }; +/** Root mutation type for the Dependencies service */ +export type MutationDelete_Board_AutomationArgs = { + board_id: Scalars['ID']['input']; + id: Scalars['ID']['input']; +}; + + /** Root mutation type for the Dependencies service */ export type MutationDelete_ColumnArgs = { board_id: Scalars['ID']['input']; @@ -9616,6 +10626,12 @@ export type MutationDelete_Doc_BlockArgs = { }; +/** Root mutation type for the Dependencies service */ +export type MutationDelete_Doc_BlocksArgs = { + block_ids: Array; +}; + + /** Root mutation type for the Dependencies service */ export type MutationDelete_Entity_Id_MappingsArgs = { entityType: Scalars['String']['input']; @@ -9745,6 +10761,18 @@ export type MutationDelete_Teams_From_WorkspaceArgs = { }; +/** Root mutation type for the Dependencies service */ +export type MutationDelete_Time_OffArgs = { + ids: Array; +}; + + +/** Root mutation type for the Dependencies service */ +export type MutationDelete_Time_Off_EntryArgs = { + ids: Array; +}; + + /** Root mutation type for the Dependencies service */ export type MutationDelete_Timeline_ItemArgs = { id: Scalars['String']['input']; @@ -9791,6 +10819,12 @@ export type MutationDelete_WidgetArgs = { }; +/** Root mutation type for the Dependencies service */ +export type MutationDelete_Work_ScheduleArgs = { + ids: Array; +}; + + /** Root mutation type for the Dependencies service */ export type MutationDelete_WorkspaceArgs = { workspace_id: Scalars['ID']['input']; @@ -9952,6 +10986,13 @@ export type MutationProcess_EventsArgs = { }; +/** Root mutation type for the Dependencies service */ +export type MutationPromote_AppArgs = { + app_id: Scalars['ID']['input']; + app_version_id?: InputMaybe; +}; + + /** Root mutation type for the Dependencies service */ export type MutationPublish_ArticleArgs = { add_subscriber_ids?: InputMaybe>; @@ -9970,6 +11011,20 @@ export type MutationPublish_ObjectArgs = { }; +/** Root mutation type for the Dependencies service */ +export type MutationRegenerate_Service_User_TokenArgs = { + service_user_id: Scalars['ID']['input']; +}; + + +/** Root mutation type for the Dependencies service */ +export type MutationRemove_Agent_Resource_AccessArgs = { + id: Scalars['ID']['input']; + resource_id: Scalars['ID']['input']; + scope_type: KnowledgeScope; +}; + + /** Root mutation type for the Dependencies service */ export type MutationRemove_Board_Relation_Connected_BoardsArgs = { board_id: Scalars['ID']['input']; @@ -9993,6 +11048,13 @@ export type MutationRemove_Required_ColumnArgs = { }; +/** Root mutation type for the Dependencies service */ +export type MutationRemove_Skill_From_AgentArgs = { + agent_id: Scalars['ID']['input']; + skill_id: Scalars['ID']['input']; +}; + + /** Root mutation type for the Dependencies service */ export type MutationRemove_Team_OwnersArgs = { team_id: Scalars['ID']['input']; @@ -10000,6 +11062,13 @@ export type MutationRemove_Team_OwnersArgs = { }; +/** Root mutation type for the Dependencies service */ +export type MutationRemove_Trigger_From_AgentArgs = { + agent_id: Scalars['ID']['input']; + node_id: Scalars['ID']['input']; +}; + + /** Root mutation type for the Dependencies service */ export type MutationRemove_Users_From_TeamArgs = { team_id: Scalars['ID']['input']; @@ -10015,11 +11084,17 @@ export type MutationRestore_EntityArgs = { }; +/** Root mutation type for the Dependencies service */ +export type MutationRevoke_Service_User_TokensArgs = { + service_user_id: Scalars['ID']['input']; +}; + + /** Root mutation type for the Dependencies service */ export type MutationRollback_RestoreArgs = { + force?: InputMaybe; migration_job_id: Scalars['ID']['input']; restore_id: Scalars['ID']['input']; - target_account_api_token: Scalars['String']['input']; }; @@ -10030,6 +11105,12 @@ export type MutationRollback_SnapshotArgs = { }; +/** Root mutation type for the Dependencies service */ +export type MutationRun_AgentArgs = { + id: Scalars['ID']['input']; +}; + + /** Root mutation type for the Dependencies service */ export type MutationSave_Workflow_As_TemplateArgs = { workflow_template_data: WorkflowTemplateInput; @@ -10093,6 +11174,12 @@ export type MutationUnassign_Department_OwnersArgs = { }; +/** Root mutation type for the Dependencies service */ +export type MutationUnassign_User_AvailabilityArgs = { + input: UnassignUserAvailabilityInput; +}; + + /** Root mutation type for the Dependencies service */ export type MutationUndo_ActionArgs = { job_id: Scalars['ID']['input']; @@ -10124,6 +11211,22 @@ export type MutationUnpublish_ObjectArgs = { }; +/** Root mutation type for the Dependencies service */ +export type MutationUpdate_AgentArgs = { + id: Scalars['ID']['input']; + input: UpdateAgentInput; +}; + + +/** Root mutation type for the Dependencies service */ +export type MutationUpdate_Agent_Resource_AccessArgs = { + id: Scalars['ID']['input']; + permission_type: KnowledgePermission; + resource_id: Scalars['ID']['input']; + scope_type: KnowledgeScope; +}; + + /** Root mutation type for the Dependencies service */ export type MutationUpdate_AllocationsArgs = { planner_id: Scalars['ID']['input']; @@ -10469,6 +11572,19 @@ export type MutationUpdate_TaskArgs = { }; +/** Root mutation type for the Dependencies service */ +export type MutationUpdate_Time_OffArgs = { + id: Scalars['ID']['input']; + input: UpdateTimeOffInput; +}; + + +/** Root mutation type for the Dependencies service */ +export type MutationUpdate_Time_Off_EntryArgs = { + inputs: Array; +}; + + /** Root mutation type for the Dependencies service */ export type MutationUpdate_Users_Board_RoleArgs = { board_id: Scalars['ID']['input']; @@ -10525,6 +11641,13 @@ export type MutationUpdate_View_TableArgs = { }; +/** Root mutation type for the Dependencies service */ +export type MutationUpdate_Work_ScheduleArgs = { + id: Scalars['ID']['input']; + input: UpdateWorkScheduleInput; +}; + + /** Root mutation type for the Dependencies service */ export type MutationUpdate_WorkspaceArgs = { attributes: UpdateWorkspaceAttributesInput; @@ -10557,6 +11680,13 @@ export type MutationUse_TemplateArgs = { template_id: Scalars['Int']['input']; }; +/** Result of a write operation that does not need to return entity data. */ +export type MutationResult = { + __typename?: 'MutationResult'; + /** Whether the operation succeeded */ + success: Scalars['Boolean']['output']; +}; + /** Response containing the current user's task board id */ export type MyTaskBoardResponse = { __typename?: 'MyTaskBoardResponse'; @@ -10992,6 +12122,8 @@ export type OperationInput = { /** A single option in a remote options list */ export type Option = { __typename?: 'Option'; + /** Optional icon to display alongside the option (e.g. { vibe, tooltip }) */ + icon?: Maybe; /** The display title of the option */ title?: Maybe; /** The value of the option */ @@ -11576,6 +12708,8 @@ export type Query = { __typename?: 'Query'; /** Get the connected account's information. */ account?: Maybe; + /** Returns the account-level default work schedule and time off schedule */ + account_availability_defaults?: Maybe; /** Returns all connections for the account. Requires admin privileges. */ account_connections?: Maybe>; /** Get all roles for the account */ @@ -11584,8 +12718,14 @@ export type Query = { account_trigger_statistics?: Maybe; /** Get aggregated automation runs statistics grouped by entity Ids */ account_triggers_statistics_by_entity_id?: Maybe; - /** Get an agent by its ID. Returns null if the agent does not exist or the user does not have access. */ - agent?: Maybe; + /** Returns the triggers currently attached to an agent. Use node_id from each result to remove a trigger. */ + agent_active_triggers?: Maybe>; + /** Returns the knowledge configuration of an agent — boards/docs it has access to and uploaded files. Board and doc names are not included; use the board/doc subgraph queries to resolve them. */ + agent_knowledge?: Maybe; + /** List all skills available to attach to an agent. Use the returned id to call add_skill_to_agent. */ + agent_skills_catalog?: Maybe>; + /** Returns trigger types that can be attached to an agent via add_trigger_to_agent. Pass block_reference_ids to fetch only specific entries (much faster). Only includes auto-addable triggers — 3rd-party triggers requiring OAuth or credentials are excluded. */ + agent_triggers_catalog?: Maybe>; /** List personal agents for the authenticated user. At least one filter (ids or limit) is required. */ agents?: Maybe>; /** Performs aggregation operations on board data */ @@ -11596,6 +12736,8 @@ export type Query = { all_widgets_schema?: Maybe>; /** Get sequences that the current user is allowed to enroll items to, that are connected to the provided board. Returns sequences owned by the user or sequences where the user has access to the sender connection. */ allowed_sequences_to_enroll?: Maybe>; + /** Search analytics events by identifier */ + analytics_events?: Maybe; /** Get an app by ID or slug. */ app?: Maybe; /** Get a collection of installs of an app. */ @@ -11689,20 +12831,28 @@ export type Query = { * • The `kind` field tells you whether the block is a TRIGGER, ACTION or CONDITION, which helps decide its placement in the workflow. */ blocks?: Maybe; + /** Get board automations. Filter by ids (specific automation IDs) or board_ids (up to 1 board). Omit all filters to get all account automations. */ + board_automations: AutomationsPage; /** Get board candidates based on workspace and usage type */ board_candidates?: Maybe>; /** Get all dependency predecessors for every item on a board, paginated. Each item includes its predecessor edges with dependency type and lag. */ board_dependencies?: Maybe; /** Get a collection of boards. */ boards?: Maybe>>; + /** Get the brand kit for the current account */ + brand_kit?: Maybe; /** Get the status of a bulk import items process */ bulk_import_items_status: BulkImportStatus; + /** Get a single email campaign by ID */ + campaign?: Maybe; + /** List email campaigns for the current account */ + campaigns?: Maybe>; /** Get the complexity data of your queries. */ complexity?: Maybe; /** Fetch a single connection by its unique ID. */ connection?: Maybe; /** Get board IDs that are linked to a specific connection. */ - connection_board_ids?: Maybe>; + connection_board_ids: Array; /** Returns connections for the authenticated user. Supports filtering, pagination, ordering, and partial-scope options. */ connections?: Maybe>; /** Count active workflows for a given host instance */ @@ -11762,16 +12912,25 @@ export type Query = { get_entity_snapshots?: Maybe>; /** Get workflow by ID */ get_live_workflow?: Maybe; - /** Get list of live workflows with pagination */ + /** + * Get list of live workflows with pagination + * @deprecated Use `get_live_workflows_page` for cursor-based pagination metadata (`has_next_page`, `end_cursor`). + */ get_live_workflows: Array; + /** Get a page of live workflows with cursor-based pagination metadata */ + get_live_workflows_page: LiveWorkflowsPage; /** Retrieve active account object schemas by their IDs or names. Only returns account-level object schemas (not global). Object schemas define the structure and columns of boards. If no parameters are provided, all account object schemas are returned. Pass exclude_created_by_monday: true to omit the schemas seeded by monday.com and return only schemas created by users in this account. Results are paginated using page and limit parameters. */ get_object_schemas?: Maybe>; /** Retrieve available resource attribute types with descriptions */ get_resource_attribute_types?: Maybe>; /** Fetch available attribute options for a resource attribute type */ get_resource_attributes?: Maybe; + /** Get the status history timeline for a restore entity */ + get_restore_history?: Maybe>; /** Get the entity restores */ get_restores?: Maybe>; + /** Get the status history timeline for a snapshot entity */ + get_snapshot_history?: Maybe>; /** Get the changelog of decisions that were made for a task by the My Tasks agent. */ get_task_changelog?: Maybe>; /** @@ -11786,6 +12945,10 @@ export type Query = { get_workflow_data?: Maybe; /** List of all supported workflow variable kinds with their json schemas */ get_workflow_variable_schemas: Array; + /** Get a single market insight by ID */ + insight?: Maybe; + /** List market insights for the current account */ + insights?: Maybe>; /** Intelligence data. */ intelligence?: Maybe; /** Get all dependency predecessors for a specific item, including dependency type and lag per edge */ @@ -11798,8 +12961,14 @@ export type Query = { items_page?: Maybe; /** Search items by multiple columns and values. */ items_page_by_column_values: ItemsResponse; + /** Get the status of an async job by its external ID */ + job_status: AsyncJobStatus; /** Search knowledge base snippets. */ knowledge_base_search?: Maybe; + /** Fetch a page of live workflows for the requesting account, with cursor-based pagination */ + live_workflows_page: LiveWorkflowAutomationsPage; + /** Synchronously runs the full dashboard data-fetching flow and returns the results in a single blocking call. POC: reporting (aggregated_data) widgets only. Gated by the LoadDashboardDataSync flow feature. */ + load_dashboard_data?: Maybe; /** Lookup API. Each field looks up a single entity type by name (lexical, name-only). */ lookup: LookupNamespace; /** Get managed column data. */ @@ -11824,6 +12993,14 @@ export type Query = { my_tasks?: Maybe; /** Get next pages of board's items (rows) by cursor. */ next_items_page: ItemsResponse; + /** Fetches the next page of entries for a time off schedule using a cursor from entries_page or next_time_off_entries_page */ + next_time_off_entries_page?: Maybe; + /** Fetches the next page of time off schedules using a cursor from a previous time_offs or next_time_offs_page call */ + next_time_offs_page?: Maybe; + /** Fetches the next page of user availabilities using a cursor from a previous user_availabilities or next_user_availabilities_page call */ + next_user_availabilities_page?: Maybe; + /** Fetches the next page of work schedules using a cursor from a previous work_schedules or next_work_schedules_page call */ + next_work_schedules_page?: Maybe; /** Namespace for all notetaker-related queries. */ notetaker?: Maybe; notifications?: Maybe>; @@ -11863,6 +13040,16 @@ export type Query = { search_benchmark?: Maybe; /** A query to search across all boards in the account. Returns raw json results. */ search_cross_board?: Maybe; + /** Get a single audience segment by ID */ + segment?: Maybe; + /** List audience segments for the current account */ + segments?: Maybe>; + /** Retrieves API tokens for the given service users. */ + service_user_tokens?: Maybe>; + /** Retrieves all service users in the account with their token last activity. */ + service_users?: Maybe>; + /** Get marketing channels settings for the current account */ + settings?: Maybe; /** Look up a single board with its metadata and relations for snapshot planning. */ snapshottable_board?: Maybe; /** Look up a workspace with paginated boards and overviews for snapshot planning. */ @@ -11881,6 +13068,8 @@ export type Query = { task?: Maybe; /** Get a collection of teams. */ teams?: Maybe>>; + /** Returns active time off schedules for the caller's account */ + time_offs?: Maybe; /** Fetches timeline items for a given item */ timeline?: Maybe; timeline_item?: Maybe; @@ -11891,6 +13080,10 @@ export type Query = { /** List trigger events with optional filters */ trigger_events?: Maybe; updates?: Maybe>; + /** Usage metrics for the current account */ + usage?: Maybe; + /** Returns user schedule assignments for the caller's account */ + user_availabilities?: Maybe; /** Get all user configs for the account. */ user_configs?: Maybe>; /** Returns connections that belong to the authenticated user. */ @@ -11909,6 +13102,10 @@ export type Query = { versions?: Maybe>; /** Get a collection of webhooks for the board */ webhooks?: Maybe>>; + /** Returns active work schedules for the caller's account */ + work_schedules?: Maybe; + /** Fetch workflows by IDs (max 50 per request) */ + workflows: Array; /** Get a collection of workspaces. */ workspaces?: Maybe>>; }; @@ -11939,11 +13136,23 @@ export type QueryAccount_Triggers_Statistics_By_Entity_IdArgs = { /** Root query type for the Dependencies service */ -export type QueryAgentArgs = { +export type QueryAgent_Active_TriggersArgs = { + agent_id: Scalars['ID']['input']; +}; + + +/** Root query type for the Dependencies service */ +export type QueryAgent_KnowledgeArgs = { id: Scalars['ID']['input']; }; +/** Root query type for the Dependencies service */ +export type QueryAgent_Triggers_CatalogArgs = { + block_reference_ids?: InputMaybe>; +}; + + /** Root query type for the Dependencies service */ export type QueryAgentsArgs = { ids?: InputMaybe>; @@ -11969,6 +13178,16 @@ export type QueryAllowed_Sequences_To_EnrollArgs = { }; +/** Root query type for the Dependencies service */ +export type QueryAnalytics_EventsArgs = { + campaign_id?: InputMaybe; + event_type?: InputMaybe; + identifier: Scalars['String']['input']; + limit: Scalars['Int']['input']; + next_token?: InputMaybe; +}; + + /** Root query type for the Dependencies service */ export type QueryAppArgs = { id: Scalars['ID']['input']; @@ -12054,6 +13273,15 @@ export type QueryBlocksArgs = { }; +/** Root query type for the Dependencies service */ +export type QueryBoard_AutomationsArgs = { + board_ids?: InputMaybe>; + cursor?: InputMaybe; + ids?: InputMaybe>; + limit?: InputMaybe; +}; + + /** Root query type for the Dependencies service */ export type QueryBoard_CandidatesArgs = { usageType: BoardUsage; @@ -12091,6 +13319,18 @@ export type QueryBulk_Import_Items_StatusArgs = { }; +/** Root query type for the Dependencies service */ +export type QueryCampaignArgs = { + id: Scalars['ID']['input']; +}; + + +/** Root query type for the Dependencies service */ +export type QueryCampaignsArgs = { + limit?: InputMaybe; +}; + + /** Root query type for the Dependencies service */ export type QueryConnectionArgs = { id: Scalars['Int']['input']; @@ -12099,7 +13339,7 @@ export type QueryConnectionArgs = { /** Root query type for the Dependencies service */ export type QueryConnection_Board_IdsArgs = { - connectionId: Scalars['Int']['input']; + connection_id: Scalars['ID']['input']; }; @@ -12331,6 +13571,15 @@ export type QueryGet_Live_WorkflowsArgs = { }; +/** Root query type for the Dependencies service */ +export type QueryGet_Live_Workflows_PageArgs = { + creator_app_ids?: InputMaybe>; + host_instance_id?: InputMaybe; + host_type?: InputMaybe; + pagination?: InputMaybe; +}; + + /** Root query type for the Dependencies service */ export type QueryGet_Object_SchemasArgs = { exclude_created_by_monday?: InputMaybe; @@ -12347,6 +13596,13 @@ export type QueryGet_Resource_AttributesArgs = { }; +/** Root query type for the Dependencies service */ +export type QueryGet_Restore_HistoryArgs = { + entity_id: Scalars['ID']['input']; + migration_job_id: Scalars['ID']['input']; +}; + + /** Root query type for the Dependencies service */ export type QueryGet_RestoresArgs = { entityIds: Array; @@ -12355,6 +13611,13 @@ export type QueryGet_RestoresArgs = { }; +/** Root query type for the Dependencies service */ +export type QueryGet_Snapshot_HistoryArgs = { + entity_id: Scalars['ID']['input']; + migration_job_id: Scalars['ID']['input']; +}; + + /** Root query type for the Dependencies service */ export type QueryGet_Task_ChangelogArgs = { task_id: Scalars['ID']['input']; @@ -12376,6 +13639,18 @@ export type QueryGet_Workflow_DataArgs = { }; +/** Root query type for the Dependencies service */ +export type QueryInsightArgs = { + id: Scalars['ID']['input']; +}; + + +/** Root query type for the Dependencies service */ +export type QueryInsightsArgs = { + limit?: InputMaybe; +}; + + /** Root query type for the Dependencies service */ export type QueryItem_DependencyArgs = { board_id: Scalars['ID']['input']; @@ -12417,6 +13692,12 @@ export type QueryItems_Page_By_Column_ValuesArgs = { }; +/** Root query type for the Dependencies service */ +export type QueryJob_StatusArgs = { + job_id: Scalars['ID']['input']; +}; + + /** Root query type for the Dependencies service */ export type QueryKnowledge_Base_SearchArgs = { limit?: InputMaybe; @@ -12424,6 +13705,18 @@ export type QueryKnowledge_Base_SearchArgs = { }; +/** Root query type for the Dependencies service */ +export type QueryLive_Workflows_PageArgs = { + pagination?: InputMaybe; +}; + + +/** Root query type for the Dependencies service */ +export type QueryLoad_Dashboard_DataArgs = { + dashboard_id: Scalars['ID']['input']; +}; + + /** Root query type for the Dependencies service */ export type QueryManaged_ColumnArgs = { id?: InputMaybe>; @@ -12483,6 +13776,34 @@ export type QueryNext_Items_PageArgs = { }; +/** Root query type for the Dependencies service */ +export type QueryNext_Time_Off_Entries_PageArgs = { + cursor: Scalars['String']['input']; + limit?: InputMaybe; +}; + + +/** Root query type for the Dependencies service */ +export type QueryNext_Time_Offs_PageArgs = { + cursor: Scalars['String']['input']; + limit?: InputMaybe; +}; + + +/** Root query type for the Dependencies service */ +export type QueryNext_User_Availabilities_PageArgs = { + cursor: Scalars['String']['input']; + limit?: InputMaybe; +}; + + +/** Root query type for the Dependencies service */ +export type QueryNext_Work_Schedules_PageArgs = { + cursor: Scalars['String']['input']; + limit?: InputMaybe; +}; + + /** Root query type for the Dependencies service */ export type QueryNotificationsArgs = { cursor?: InputMaybe; @@ -12563,6 +13884,24 @@ export type QuerySearch_Cross_BoardArgs = { }; +/** Root query type for the Dependencies service */ +export type QuerySegmentArgs = { + id: Scalars['ID']['input']; +}; + + +/** Root query type for the Dependencies service */ +export type QuerySegmentsArgs = { + limit?: InputMaybe; +}; + + +/** Root query type for the Dependencies service */ +export type QueryService_User_TokensArgs = { + service_user_ids: Array; +}; + + /** Root query type for the Dependencies service */ export type QuerySnapshottable_BoardArgs = { id: Scalars['ID']['input']; @@ -12619,6 +13958,14 @@ export type QueryTeamsArgs = { }; +/** Root query type for the Dependencies service */ +export type QueryTime_OffsArgs = { + ids?: InputMaybe>; + limit?: InputMaybe; + name?: InputMaybe; +}; + + /** Root query type for the Dependencies service */ export type QueryTimelineArgs = { id: Scalars['ID']['input']; @@ -12662,6 +14009,13 @@ export type QueryUpdatesArgs = { }; +/** Root query type for the Dependencies service */ +export type QueryUser_AvailabilitiesArgs = { + limit?: InputMaybe; + user_ids?: InputMaybe>; +}; + + /** Root query type for the Dependencies service */ export type QueryUser_ConfigsArgs = { behaviors?: InputMaybe>; @@ -12722,6 +14076,20 @@ export type QueryWebhooksArgs = { }; +/** Root query type for the Dependencies service */ +export type QueryWork_SchedulesArgs = { + ids?: InputMaybe>; + limit?: InputMaybe; + name?: InputMaybe; +}; + + +/** Root query type for the Dependencies service */ +export type QueryWorkflowsArgs = { + ids: Array; +}; + + /** Root query type for the Dependencies service */ export type QueryWorkspacesArgs = { ids?: InputMaybe>; @@ -13009,6 +14377,19 @@ export type RestoreEntityResult = { accepted?: Maybe; }; +/** A point-in-time record of a restore status change. */ +export type RestoreHistoryEntry = { + __typename?: 'RestoreHistoryEntry'; + /** The entity id (package id) of the restore. */ + entity_id: Scalars['ID']['output']; + /** The date and time this history entry was recorded. */ + recorded_at: Scalars['String']['output']; + /** The restore ID at the time this history entry was recorded. */ + restore_id: Scalars['ID']['output']; + /** The status of the restore at the time this history entry was recorded. */ + status: RestoreStatus; +}; + /** The possible statuses of a restore operation. */ export enum RestoreStatus { /** The restore failed to complete. */ @@ -13096,6 +14477,13 @@ export enum RuleOperator { StartsWithText = 'STARTS_WITH_TEXT' } +/** Confirmation that a manual agent run was accepted and enqueued. This does not reflect the outcome of the run itself — the execution happens asynchronously. In the future, trigger_uuid can be used to query run status via a dedicated endpoint. */ +export type RunAgentResult = { + __typename?: 'RunAgentResult'; + /** Correlation ID for the triggered run. Use this to track or look up the execution in downstream events or future run-status endpoints. */ + trigger_uuid?: Maybe; +}; + /** Result of saving a workflow as a template */ export type SaveWorkflowAsTemplateResult = { __typename?: 'SaveWorkflowAsTemplateResult'; @@ -13160,6 +14548,8 @@ export type SearchDocResults = { /** Board data stored in the search index. */ export type SearchIndexedBoard = { __typename?: 'SearchIndexedBoard'; + /** ID of the user who created this board. */ + creator_id?: Maybe; /** Board description. */ description?: Maybe; /** Board ID. */ @@ -13230,6 +14620,7 @@ export type SearchNamespace = { /** Per-entity search namespace. Each field searches a single entity type. */ export type SearchNamespaceBoardsArgs = { + board_ids?: InputMaybe>; date_range?: InputMaybe; limit?: InputMaybe; query: Scalars['String']['input']; @@ -13311,6 +14702,34 @@ export enum SequenceStatus { MissingConfig = 'MISSING_CONFIG' } +/** A service user in the account. */ +export type ServiceUser = { + __typename?: 'ServiceUser'; + /** When the service user was created. */ + created_at?: Maybe; + /** Whether the service user is active. */ + enabled?: Maybe; + /** The ID of the service user. */ + id?: Maybe; + /** The ID of the user who created this service user. */ + invited_by_id?: Maybe; + /** The last time the service user token was used for an API request. */ + last_token_activity?: Maybe; + /** The display name of the service user. */ + name?: Maybe; + /** The title/description of the service user. */ + title?: Maybe; +}; + +/** A service user token result. */ +export type ServiceUserToken = { + __typename?: 'ServiceUserToken'; + /** The ID of the service user. */ + service_user_id?: Maybe; + /** The API token. */ + token?: Maybe; +}; + /** Response type for detailed board permissions. Contains information about the permissions that were set. */ export type SetBoardPermissionResponse = { __typename?: 'SetBoardPermissionResponse'; @@ -13354,6 +14773,19 @@ export type ShowIfRulesInput = { rules: Array; }; +/** A point-in-time record of a snapshot status change. */ +export type SnapshotHistoryEntry = { + __typename?: 'SnapshotHistoryEntry'; + /** The entity id (package id) of the snapshot. */ + entity_id: Scalars['ID']['output']; + /** The date and time this history entry was recorded. */ + recorded_at: Scalars['String']['output']; + /** The snapshot ID at the time this history entry was recorded. */ + snapshot_id: Scalars['ID']['output']; + /** The status of the snapshot at the time this history entry was recorded. */ + status: SnapshotStatus; +}; + /** The possible statuses of a snapshot operation. */ export enum SnapshotStatus { /** The snapshot failed to complete. */ @@ -14175,6 +15607,125 @@ export enum TimeGranularity { Years = 'YEARS' } +/** A named time off schedule with non-working date entries */ +export type TimeOff = { + __typename?: 'TimeOff'; + /** ISO 8601 timestamp when this record was created */ + created_at: Scalars['Date']['output']; + /** ID of the user who created this time off schedule, null if system-generated */ + created_by?: Maybe; + /** Paginated non-working date entries in this time off schedule. Use next_time_off_entries_page as the top-level continuation query. */ + entries_page: TimeOffEntryPage; + /** Unique identifier of the time off schedule */ + id: Scalars['ID']['output']; + /** Whether this is the account-level default time off schedule */ + is_default: Scalars['Boolean']['output']; + /** Display name of the time off schedule */ + name: Scalars['String']['output']; + /** ISO 8601 timestamp when this record was last updated */ + updated_at: Scalars['Date']['output']; +}; + + +/** A named time off schedule with non-working date entries */ +export type TimeOffEntries_PageArgs = { + cursor?: InputMaybe; + limit?: InputMaybe; +}; + +/** Result of a time off schedule delete operation */ +export type TimeOffDeleteResult = { + __typename?: 'TimeOffDeleteResult'; + /** Structured error details, null if the operation succeeded */ + error?: Maybe; + /** ID of the deleted time off schedule, null if the operation failed */ + id?: Maybe; + /** Whether the operation succeeded */ + success: Scalars['Boolean']['output']; +}; + +/** A non-working date entry within a time off schedule */ +export type TimeOffEntry = { + __typename?: 'TimeOffEntry'; + /** ISO 8601 timestamp when this record was created */ + created_at: Scalars['Date']['output']; + /** ID of the user who created this entry */ + created_by: Scalars['ID']['output']; + /** End date of the non-working period in YYYY-MM-DD format */ + end: Scalars['String']['output']; + /** Unique identifier of the time off entry */ + id: Scalars['ID']['output']; + /** Optional display name for this time off entry */ + name?: Maybe; + /** Start date of the non-working period in YYYY-MM-DD format */ + start: Scalars['String']['output']; + /** ID of the time off schedule this entry belongs to */ + time_off_id: Scalars['ID']['output']; + /** ISO 8601 timestamp when this record was last updated */ + updated_at: Scalars['Date']['output']; +}; + +/** Result of a time off entry delete operation */ +export type TimeOffEntryDeleteResult = { + __typename?: 'TimeOffEntryDeleteResult'; + /** Structured error details, null if the operation succeeded */ + error?: Maybe; + /** ID of the deleted time off entry, null if the operation failed */ + id?: Maybe; + /** Whether the operation succeeded */ + success: Scalars['Boolean']['output']; +}; + +/** A non-working date entry to create inline with a time off schedule */ +export type TimeOffEntryInput = { + /** End date of the non-working period in YYYY-MM-DD format */ + end: Scalars['String']['input']; + /** Optional display name for this time off entry */ + name?: InputMaybe; + /** Start date of the non-working period in YYYY-MM-DD format */ + start: Scalars['String']['input']; +}; + +/** Paginated list of time off entries */ +export type TimeOffEntryPage = { + __typename?: 'TimeOffEntryPage'; + /** Opaque cursor for fetching the next page, null when no more pages exist */ + cursor?: Maybe; + /** Time off entries in this page */ + entries: Array; +}; + +/** Result of a time off entry create or update operation */ +export type TimeOffEntryResult = { + __typename?: 'TimeOffEntryResult'; + /** Structured error details, null if the operation succeeded */ + error?: Maybe; + /** Whether the operation succeeded */ + success: Scalars['Boolean']['output']; + /** The created or updated time off entry, null if the operation failed */ + time_off_entry?: Maybe; +}; + +/** Paginated list of time off schedules */ +export type TimeOffPage = { + __typename?: 'TimeOffPage'; + /** Opaque cursor for fetching the next page, null when no more pages exist */ + cursor?: Maybe; + /** Time off schedules in this page */ + time_offs: Array; +}; + +/** Result of a time off schedule create or update operation */ +export type TimeOffResult = { + __typename?: 'TimeOffResult'; + /** Structured error details, null if the operation succeeded */ + error?: Maybe; + /** Whether the operation succeeded */ + success: Scalars['Boolean']['output']; + /** The created or updated time off schedule, null if the operation failed */ + time_off?: Maybe; +}; + /** Header for a time period (label and date range). */ export type TimePeriodHeader = { __typename?: 'TimePeriodHeader'; @@ -14493,6 +16044,26 @@ export type TriggerEventsPage = { triggerEvents?: Maybe>; }; +/** Schema description for a trigger field that accepts a structured JSON value */ +export type TriggerFieldSchema = { + __typename?: 'TriggerFieldSchema'; + /** The key to use in field_values when calling add_trigger_to_agent */ + field_key: Scalars['String']['output']; + /** Human-readable description of the expected JSON shape for this field */ + value_schema: Scalars['String']['output']; +}; + +/** A selection field (e.g. board picker) required when adding this trigger */ +export type TriggerRequiredField = { + __typename?: 'TriggerRequiredField'; + /** Field keys that must be provided before this field — resolve them in order */ + depends_on: Array; + /** The key to use in field_values */ + field_key: Scalars['String']['output']; + /** Whether this field can be omitted */ + optional: Scalars['Boolean']['output']; +}; + /** Result of unassigning owners from a department. */ export type UnassignDepartmentOwnerResult = { __typename?: 'UnassignDepartmentOwnerResult'; @@ -14500,6 +16071,16 @@ export type UnassignDepartmentOwnerResult = { unassigned_users?: Maybe>; }; +/** Input for removing work schedule and/or time off assignments from multiple users */ +export type UnassignUserAvailabilityInput = { + /** Whether to remove the explicit time off schedule assignment */ + unassign_time_off?: InputMaybe; + /** Whether to remove the explicit work schedule assignment */ + unassign_work_schedule?: InputMaybe; + /** IDs of the users to remove assignments from */ + user_ids: Array; +}; + /** Result of an undo operation */ export type UndoResult = { __typename?: 'UndoResult'; @@ -14564,6 +16145,20 @@ export type UpdateViewersArgs = { page?: InputMaybe; }; +/** Input for updating an AI agent — all fields are optional; only provided fields are changed */ +export type UpdateAgentInput = { + /** The LLM model the agent should use */ + agent_model?: InputMaybe; + /** The display name of the agent */ + name?: InputMaybe; + /** The execution plan (instructions) for the agent, in markdown format */ + plan?: InputMaybe; + /** The role of the agent */ + role?: InputMaybe; + /** A description of the agent role */ + role_description?: InputMaybe; +}; + /** Result of a single allocation update operation */ export type UpdateAllocationResult = { __typename?: 'UpdateAllocationResult'; @@ -14867,6 +16462,24 @@ export type UpdateTaskInput = { title?: InputMaybe; }; +/** Input for updating an existing time off entry */ +export type UpdateTimeOffEntryInput = { + /** New end date in YYYY-MM-DD format */ + end?: InputMaybe; + /** ID of the time off entry to update */ + id: Scalars['ID']['input']; + /** New display name for the time off entry */ + name?: InputMaybe; + /** New start date in YYYY-MM-DD format */ + start?: InputMaybe; +}; + +/** Input for updating an existing time off schedule. Entries are managed via the dedicated time off entry mutations (create_time_off_entry, update_time_off_entry, delete_time_off_entry). */ +export type UpdateTimeOffInput = { + /** New display name for the time off schedule */ + name?: InputMaybe; +}; + /** Error that occurred while updating users attributes. */ export type UpdateUserAttributesError = { __typename?: 'UpdateUserAttributesError'; @@ -14933,6 +16546,14 @@ export type UpdateUsersRoleResult = { updated_users?: Maybe>; }; +/** Input for updating an existing work schedule */ +export type UpdateWorkScheduleInput = { + /** Updated per-weekday working hours */ + days?: InputMaybe>; + /** New display name for the work schedule */ + name?: InputMaybe; +}; + /** Input for updating a workflow created from a template */ export type UpdateWorkflowFromTemplateInput = { /** Detailed description of the workflow */ @@ -15158,6 +16779,37 @@ export type UserAttributesInput = { title?: InputMaybe; }; +/** A user's assigned work schedule and time off schedule */ +export type UserAvailability = { + __typename?: 'UserAvailability'; + /** The time off schedule assigned to this user, null if using account default */ + time_off?: Maybe; + /** ID of the user */ + user_id: Scalars['ID']['output']; + /** The work schedule assigned to this user, null if using account default */ + work_schedule?: Maybe; +}; + +/** Paginated list of user availability assignments */ +export type UserAvailabilityPage = { + __typename?: 'UserAvailabilityPage'; + /** Opaque cursor for fetching the next page, null when no more pages exist */ + cursor?: Maybe; + /** User availability assignments in this page */ + user_availabilities: Array; +}; + +/** Result of a single user availability assignment. Batch assign/unassign mutations return one of these per requested user, allowing partial success — successful entries have user_availability populated and success=true; failed entries have user_availability=null, success=false, and a populated error. */ +export type UserAvailabilityResult = { + __typename?: 'UserAvailabilityResult'; + /** Structured error details, null if the operation succeeded */ + error?: Maybe; + /** Whether the operation succeeded */ + success: Scalars['Boolean']['output']; + /** The updated user availability, null if the operation failed for this user */ + user_availability?: Maybe; +}; + /** User config of a user kind within the account. */ export type UserConfig = { __typename?: 'UserConfig'; @@ -15263,6 +16915,8 @@ export enum UserKindFilter { ProjectsApiUser = 'PROJECTS_API_USER', /** A resource directory api user user. */ ResourceDirectoryApiUser = 'RESOURCE_DIRECTORY_API_USER', + /** A service user user. */ + ServiceUser = 'SERVICE_USER', /** A sprint management api user user. */ SprintManagementApiUser = 'SPRINT_MANAGEMENT_API_USER', /** A view only user. */ @@ -15511,8 +17165,6 @@ export type VibeMutations = { document_ai_action: AiDocumentActionResponse; /** Enhance a user prompt to include AI capabilities */ enhance_prompt: EnhancedPromptResult; - /** Extract brand identity from a URL and produce a ThemeDefinition plug-compatible with presets. */ - extract_brand_theme: ExtractedVibeTheme; /** Get a presigned URL to upload a file to S3 */ file_upload_url?: Maybe; /** Rollback an AI app to an older specific version */ @@ -15547,12 +17199,6 @@ export type VibeMutationsEnhance_PromptArgs = { }; -/** Namespace for all vibe-related mutations */ -export type VibeMutationsExtract_Brand_ThemeArgs = { - url: Scalars['String']['input']; -}; - - /** Namespace for all vibe-related mutations */ export type VibeMutationsFile_Upload_UrlArgs = { file_name: Scalars['String']['input']; @@ -15658,9 +17304,9 @@ export type WebSearchConfigInput = { /** Configuration options for web search functionality */ export type WebSearchOptionsInput = { - /** Limit search results to content from the last N days */ + /** Hint to prioritize content from the last N days. Interpreted as guidance — not a hard filter. */ recencyDays?: InputMaybe; - /** Maximum number of search results to retrieve (default: 5) */ + /** Hint for max number of sources to consider (default: 5). Interpreted as guidance — the model decides retrieval breadth. */ topK?: InputMaybe; }; @@ -15723,6 +17369,24 @@ export enum WebhookEventType { SubitemDeleted = 'subitem_deleted' } +/** Day of the week */ +export enum WeekDay { + /** Friday */ + Friday = 'FRIDAY', + /** Monday */ + Monday = 'MONDAY', + /** Saturday */ + Saturday = 'SATURDAY', + /** Sunday */ + Sunday = 'SUNDAY', + /** Thursday */ + Thursday = 'THURSDAY', + /** Tuesday */ + Tuesday = 'TUESDAY', + /** Wednesday */ + Wednesday = 'WEDNESDAY' +} + export type WeekValue = ColumnValue & { __typename?: 'WeekValue'; /** The column that this value belongs to. */ @@ -15781,6 +17445,19 @@ export type WidgetParentOutput = { kind?: Maybe; }; +/** Result of loading a single widget within a dashboard data load. */ +export type WidgetResult = { + __typename?: 'WidgetResult'; + /** Loaded widget data payload; null when status is ERROR or no data is available. */ + data?: Maybe; + /** Error message describing why the widget failed to load; null on success. */ + error?: Maybe; + /** Whether the widget data loaded successfully or failed. */ + status?: Maybe; + /** Identifier of the widget this result belongs to. */ + widget_id?: Maybe; +}; + /** Information about a widget type and its JSON schema */ export type WidgetSchemaInfo = { __typename?: 'WidgetSchemaInfo'; @@ -15790,6 +17467,93 @@ export type WidgetSchemaInfo = { widget_type?: Maybe; }; +/** Outcome of loading a single widget within loadDashboardData. */ +export enum WidgetStatus { + /** Widget failed to load; see error field for details. */ + Error = 'ERROR', + /** Widget data was loaded successfully. */ + Ok = 'OK' +} + +/** A named work schedule with per-weekday working hours */ +export type WorkSchedule = { + __typename?: 'WorkSchedule'; + /** ISO 8601 timestamp when this record was created */ + created_at: Scalars['Date']['output']; + /** ID of the user who created this work schedule, null if system-generated */ + created_by?: Maybe; + /** Per-weekday working hours for this schedule */ + days: Array; + /** Unique identifier of the work schedule */ + id: Scalars['ID']['output']; + /** Whether this is the account-level default work schedule */ + is_default: Scalars['Boolean']['output']; + /** Display name of the work schedule */ + name: Scalars['String']['output']; + /** ISO 8601 timestamp when this record was last updated */ + updated_at: Scalars['Date']['output']; +}; + +/** Per-weekday working hours for a work schedule */ +export type WorkScheduleDay = { + __typename?: 'WorkScheduleDay'; + /** ISO 8601 timestamp when this record was created */ + created_at: Scalars['Date']['output']; + /** End of the working day in HH:MM format, null when is_active is false */ + end_time?: Maybe; + /** Whether this day is a working day */ + is_active: Scalars['Boolean']['output']; + /** Start of the working day in HH:MM format, null when is_active is false */ + start_time?: Maybe; + /** ISO 8601 timestamp when this record was last updated */ + updated_at: Scalars['Date']['output']; + /** Day of the week this entry applies to */ + week_day: WeekDay; +}; + +/** Working hours for a specific day of the week */ +export type WorkScheduleDayInput = { + /** End of the working day in HH:MM format. Required when is_active is true; ignored otherwise. */ + end_time?: InputMaybe; + /** Whether this day is a working day */ + is_active: Scalars['Boolean']['input']; + /** Start of the working day in HH:MM format. Required when is_active is true; ignored otherwise. */ + start_time?: InputMaybe; + /** Day of the week this entry applies to */ + week_day: WeekDay; +}; + +/** Result of a work schedule delete operation */ +export type WorkScheduleDeleteResult = { + __typename?: 'WorkScheduleDeleteResult'; + /** Structured error details, null if the operation succeeded */ + error?: Maybe; + /** ID of the deleted work schedule, null if the operation failed */ + id?: Maybe; + /** Whether the operation succeeded */ + success: Scalars['Boolean']['output']; +}; + +/** Paginated list of work schedules */ +export type WorkSchedulePage = { + __typename?: 'WorkSchedulePage'; + /** Opaque cursor for fetching the next page, null when no more pages exist */ + cursor?: Maybe; + /** Work schedules in this page */ + work_schedules: Array; +}; + +/** Result of a work schedule create or update operation */ +export type WorkScheduleResult = { + __typename?: 'WorkScheduleResult'; + /** Structured error details, null if the operation succeeded */ + error?: Maybe; + /** Whether the operation succeeded */ + success: Scalars['Boolean']['output']; + /** The created or updated work schedule, null if the operation failed */ + work_schedule?: Maybe; +}; + export type Workflow = { __typename?: 'Workflow'; /** Automation ID associated with the workflow */ @@ -15824,6 +17588,42 @@ export type Workflow = { workflow_variables: Scalars['JSON']['output']; }; +/** A workflow and its steps */ +export type WorkflowAutomation = { + __typename?: 'WorkflowAutomation'; + /** Whether the workflow is currently active */ + active?: Maybe; + /** Creation timestamp */ + created_at?: Maybe; + /** Workflow description */ + description?: Maybe; + /** Workflow entity ID */ + id?: Maybe; + /** The steps that make up this workflow */ + steps?: Maybe>; + /** Workflow title */ + title?: Maybe; + /** Last update timestamp */ + updated_at?: Maybe; +}; + +/** Cursor-based pagination metadata for live workflow automation queries */ +export type WorkflowAutomationsPageInfo = { + __typename?: 'WorkflowAutomationsPageInfo'; + /** Cursor of the last item in this page; pass as last_id to fetch the next page */ + end_cursor?: Maybe; + /** Whether there are more results beyond the current page */ + has_next_page?: Maybe; +}; + +/** Cursor-based pagination parameters for workflow automation queries */ +export type WorkflowAutomationsPaginationInput = { + /** Cursor of the last item from the previous page; pass page_info.end_cursor from the previous response */ + last_id?: InputMaybe; + /** Maximum number of results to return (default 50, max 100) */ + limit?: InputMaybe; +}; + export type WorkflowBlock = { __typename?: 'WorkflowBlock'; /** Reference ID of the block */ @@ -15911,6 +17711,25 @@ export type WorkflowBuilderContextData = { hidden_input_fields_keys?: Maybe>; }; +/** Identifiers for a newly created workflow */ +export type WorkflowBuilderCreateResult = { + __typename?: 'WorkflowBuilderCreateResult'; + /** Draft workflow ID */ + workflow_draft_id?: Maybe; + /** Stable workflow entity ID */ + workflow_object_id?: Maybe; +}; + +/** Privacy level for a workflow */ +export enum WorkflowBuilderPrivacyKind { + /** Workflow is private and restricted */ + Private = 'PRIVATE', + /** Workflow is publicly accessible (Main) */ + Public = 'PUBLIC', + /** Workflow is shareable with guests outside the account */ + Shareable = 'SHAREABLE' +} + /** Customization settings for the workflow */ export type WorkflowCustomizationInput = { /** The access level for CRUD operations on an account-level workflow. Only applicable for ACCOUNT_LEVEL host type. Defaults to USER (only the creator can modify). */ @@ -15988,6 +17807,17 @@ export type WorkflowIteratorInput = { post_iterator_node_id?: InputMaybe; }; +/** A step instance within a workflow */ +export type WorkflowStep = { + __typename?: 'WorkflowStep'; + /** ID of the block type this step uses */ + block_reference_id?: Maybe; + /** Unique node ID within the workflow */ + node_id?: Maybe; + /** Display title of the step */ + title?: Maybe; +}; + /** The context where a workflow template can be accessed */ export enum WorkflowTemplateContext { /** Using this context will make the template accessible in the Lite Builder */ @@ -16054,6 +17884,14 @@ export enum WorkflowVariableSourceKind { UserConfig = 'user_config' } +/** Cursor-based pagination parameters for live workflows queries */ +export type WorkflowsPaginationInput = { + /** Cursor of the last item from the previous page; pass `page_info.end_cursor` from the previous response */ + last_id?: InputMaybe; + /** Maximum number of results to return */ + limit?: InputMaybe; +}; + /** A monday.com workspace. */ export type Workspace = { __typename?: 'Workspace'; @@ -16307,6 +18145,18 @@ export type GetUserContextQueryVariables = Exact<{ [key: string]: never; }>; export type GetUserContextQuery = { __typename?: 'Query', me?: { __typename?: 'User', id: string, name: string, title: string, account: { __typename?: 'Account', tier?: string | null, active_members_count?: number | null, is_during_trial?: boolean | null, products?: Array<{ __typename?: 'AccountProduct', kind?: string | null, tier?: string | null } | null> | null } } | null, favorites?: Array<{ __typename?: 'GraphqlHierarchyObjectItem', object?: { __typename?: 'HierarchyObjectID', id?: string | null, type?: GraphqlMondayObject | null } | null }> | null, intelligence?: { __typename?: 'Intelligence', relevant_boards?: Array<{ __typename?: 'RelevantBoard', id?: string | null, board?: { __typename?: 'Board', name: string } | null }> | null, relevant_people?: Array<{ __typename?: 'RelevantPerson', id?: string | null, user?: { __typename?: 'User', name: string } | null }> | null } | null }; +export type CreateWorkflowMutationVariables = Exact<{ + workspace_id: Scalars['ID']['input']; + title?: InputMaybe; + privacy_kind?: InputMaybe; + description?: InputMaybe; + folder_id?: InputMaybe; + owner_ids?: InputMaybe | Scalars['ID']['input']>; +}>; + + +export type CreateWorkflowMutation = { __typename?: 'Mutation', create_workflow: { __typename?: 'WorkflowBuilderCreateResult', workflow_object_id?: string | null, workflow_draft_id?: string | null } }; + export type ActivateLiveWorkflowMutationVariables = Exact<{ id: Scalars['ID']['input']; }>; @@ -16352,6 +18202,7 @@ export const SearchBoardsDevDocument = {"kind":"Document","definitions":[{"kind" export const SearchDocsDevDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"SearchDocsDev"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"query"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"limit"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"workspaceIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"search"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"docs"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"query"},"value":{"kind":"Variable","name":{"kind":"Name","value":"query"}}},{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"Variable","name":{"kind":"Name","value":"limit"}}},{"kind":"Argument","name":{"kind":"Name","value":"workspace_ids"},"value":{"kind":"Variable","name":{"kind":"Name","value":"workspaceIds"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"results"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"indexed_data"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]}}]}}]} as unknown as DocumentNode; export const BatchUndoDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"BatchUndo"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"boardId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"undoRecordId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"batch_undo"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"board_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"boardId"}}},{"kind":"Argument","name":{"kind":"Name","value":"undo_record_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"undoRecordId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"success"}}]}}]}}]} as unknown as DocumentNode; export const GetUserContextDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"getUserContext"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"me"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"account"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"tier"}},{"kind":"Field","name":{"kind":"Name","value":"active_members_count"}},{"kind":"Field","name":{"kind":"Name","value":"is_during_trial"}},{"kind":"Field","name":{"kind":"Name","value":"products"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"kind"}},{"kind":"Field","name":{"kind":"Name","value":"tier"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"favorites"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"object"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"intelligence"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"relevant_boards"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"10"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"board"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"relevant_people"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"10"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]}}]} as unknown as DocumentNode; +export const CreateWorkflowDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"createWorkflow"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"workspace_id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"title"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"privacy_kind"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"WorkflowBuilderPrivacyKind"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"description"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"folder_id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"owner_ids"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"create_workflow"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"workspace_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"workspace_id"}}},{"kind":"Argument","name":{"kind":"Name","value":"title"},"value":{"kind":"Variable","name":{"kind":"Name","value":"title"}}},{"kind":"Argument","name":{"kind":"Name","value":"privacy_kind"},"value":{"kind":"Variable","name":{"kind":"Name","value":"privacy_kind"}}},{"kind":"Argument","name":{"kind":"Name","value":"description"},"value":{"kind":"Variable","name":{"kind":"Name","value":"description"}}},{"kind":"Argument","name":{"kind":"Name","value":"folder_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"folder_id"}}},{"kind":"Argument","name":{"kind":"Name","value":"owner_ids"},"value":{"kind":"Variable","name":{"kind":"Name","value":"owner_ids"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"workflow_object_id"}},{"kind":"Field","name":{"kind":"Name","value":"workflow_draft_id"}}]}}]}}]} as unknown as DocumentNode; export const ActivateLiveWorkflowDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"activateLiveWorkflow"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"activate_live_workflow"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"is_success"}}]}}]}}]} as unknown as DocumentNode; export const DeactivateLiveWorkflowDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"deactivateLiveWorkflow"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deactivate_live_workflow"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"is_success"}}]}}]}}]} as unknown as DocumentNode; export const DeleteLiveWorkflowDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"deleteLiveWorkflow"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"delete_live_workflow"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"is_success"}}]}}]}}]} as unknown as DocumentNode; diff --git a/packages/agent-toolkit/src/monday-graphql/schema.dev.graphql b/packages/agent-toolkit/src/monday-graphql/schema.dev.graphql index 6023525c..f55234b8 100644 --- a/packages/agent-toolkit/src/monday-graphql/schema.dev.graphql +++ b/packages/agent-toolkit/src/monday-graphql/schema.dev.graphql @@ -94,7 +94,13 @@ id: String!): Workflow hostInstanceId: String, "Host type for filtering workflows. If omitted, defaults to ACCOUNT_LEVEL." hostType: HostType, "Optional list of app IDs to filter workflows by creator app" creator_app_ids: [ID!], "Pagination parameters" -pagination: PaginationInput): [Workflow!]! +pagination: PaginationInput): [Workflow!]! @deprecated(reason: "Use `get_live_workflows_page` for cursor-based pagination metadata (`has_next_page`, `end_cursor`).") + "Get a page of live workflows with cursor-based pagination metadata" + get_live_workflows_page( "Host instance ID (e.g., board ID) to filter workflows. If omitted, defaults to the current account ID." +host_instance_id: ID, "Host type for filtering workflows. If omitted, defaults to ACCOUNT_LEVEL." +host_type: HostType, "Optional list of app IDs to filter workflows by creator app" +creator_app_ids: [ID!], "Pagination parameters" +pagination: WorkflowsPaginationInput): LiveWorkflowsPage! "Count active workflows for a given host instance" count_active_workflows( "Instance ID of the host" host_instance_id: ID!, "Type of host for this workflow" @@ -167,7 +173,7 @@ pagination: PaginationInput): [Connection!] id: Int!): Connection "Get board IDs that are linked to a specific connection." connection_board_ids( "Unique identifier of the connection." -connectionId: Int!): [Int!] +connection_id: ID!): [ID!]! "Get automation data (automation and recipe) by ID - internal use only" get_automation_data( "Account ID that owns the automation" account_id: ID!, "Unique identifier for the automation" @@ -255,6 +261,14 @@ migration_job_id: ID!): SnapshottableBoard snapshottable_workspace( "The workspace ID." id: ID!, "The migration job ID for authorization." migration_job_id: ID!): SnapshottableWorkspace + "Get the status history timeline for a snapshot entity" + get_snapshot_history( "The id of the migration job." +migration_job_id: ID!, "The entity id (package id) to get history for." +entity_id: ID!): [SnapshotHistoryEntry!] + "Get the status history timeline for a restore entity" + get_restore_history( "The id of the migration job." +migration_job_id: ID!, "The entity id (package id) to get history for." +entity_id: ID!): [RestoreHistoryEntry!] "Get managed column data." managed_column( "The managed column ids." id: [String!], "The state of the managed column." @@ -361,8 +375,45 @@ query: String!, "The maximum number of results to return." limit: Int = 5): KnowledgeBaseAnswer "Get all personal list items by list ID" favorites: [GraphqlHierarchyObjectItem!] + "Synchronously runs the full dashboard data-fetching flow and returns the results in a single blocking call. POC: reporting (aggregated_data) widgets only. Gated by the LoadDashboardDataSync flow feature." + load_dashboard_data( "The dashboard (overview) ID to load." +dashboard_id: ID!): DashboardDataResult "Intelligence data." intelligence: Intelligence + "Get board automations. Filter by ids (specific automation IDs) or board_ids (up to 1 board). Omit all filters to get all account automations." + board_automations( "Automation IDs to fetch (max 100)" +ids: [ID!], "Board IDs to filter by (max 1)" +board_ids: [ID!], "Max number of automations to return" +limit: Int, "Cursor from a previous page for pagination" +cursor: String): AutomationsPage! + "Search analytics events by identifier" + analytics_events( "The identifier to search for" +identifier: String!, "Filter by campaign ID" +campaign_id: ID, "Filter by event type" +event_type: CampaignsAnalyticsEventKind, "Maximum number of events to return (max 1000)" +limit: Int!, "Pagination token for the next page" +next_token: String): CampaignsAnalyticsEventsResponse + "List email campaigns for the current account" + campaigns( "Maximum number of campaigns to return (max 200)" +limit: Int): [CampaignsEmailCampaign!] + "Get a single email campaign by ID" + campaign(id: ID!): CampaignsEmailCampaign + "Get the brand kit for the current account" + brand_kit: CampaignsBrandKit + "List market insights for the current account" + insights( "Maximum number of insights to return (max 200)" +limit: Int): [CampaignsInsight!] + "Get a single market insight by ID" + insight(id: ID!): CampaignsInsight + "List audience segments for the current account" + segments( "Maximum number of segments to return (max 200)" +limit: Int): [CampaignsSegment!] + "Get a single audience segment by ID" + segment(id: ID!): CampaignsSegment + "Get marketing channels settings for the current account" + settings: CampaignsSettings + "Usage metrics for the current account" + usage: CampaignsUsage marketplace_app_discounts( "The id of an app" app_id: ID!): [MarketplaceAppDiscount!]! app_subscriptions( "The ID of an app" @@ -388,13 +439,21 @@ import_id: ID!): BulkImportStatus! "Get the status of a backfill or ingest job" fetch_job_status( "The ID of the job to get status for" job_id: ID!): JobStatus! - "Get an agent by its ID. Returns null if the agent does not exist or the user does not have access." - agent( "The unique identifier of the agent" -id: ID!): Agent "List personal agents for the authenticated user. At least one filter (ids or limit) is required." agents( "Optional list of agent IDs to fetch. Applied before limit when both are provided." ids: [ID!], "Optional max number of agents to return. Applied after ids filter when both are provided." limit: Int): [Agent!] + "Returns trigger types that can be attached to an agent via add_trigger_to_agent. Pass block_reference_ids to fetch only specific entries (much faster). Only includes auto-addable triggers — 3rd-party triggers requiring OAuth or credentials are excluded." + agent_triggers_catalog( "Optional list of block_reference_id values to fetch. When omitted, all catalog entries are returned." +block_reference_ids: [ID!]): [AgentTriggerCatalogEntry!] + "Returns the triggers currently attached to an agent. Use node_id from each result to remove a trigger." + agent_active_triggers( "Unique identifier of the agent" +agent_id: ID!): [AgentActiveTrigger!] + "Returns the knowledge configuration of an agent — boards/docs it has access to and uploaded files. Board and doc names are not included; use the board/doc subgraph queries to resolve them." + agent_knowledge( "Unique identifier of the agent" +id: ID!): AgentKnowledge + "List all skills available to attach to an agent. Use the returned id to call add_skill_to_agent." + agent_skills_catalog: [AgentSkillCatalogEntry!] "Get an app by ID or slug." app( "The ID or slug of the app" id: ID!): AppType @@ -493,7 +552,7 @@ ids: [ID!]): [Tag] ids: [ID!]): [Team] "Get users." users( "Filter by user IDs." -ids: [ID!], "Filter by exact user name." +ids: [ID!], "Filter by user name. Uses fuzzy search unless combined with `user_kind`, `kind`, or `emails` args, then uses exact search." name: String, "A list of users' emails." emails: [String!], "Filter by user kind." user_kind: UserKindFilterInput, "Sort users by one or more fields and directions." @@ -608,6 +667,38 @@ limit: Int = 25): GetAllocationsResponse "Fetch the unique set of resources (assignees and placeholders) in a planner" get_allocated_resources( "The planner ID" planner_id: ID!): [AllocatedResource!] + "Returns active work schedules for the caller's account" + work_schedules( "Filter by specific work schedule IDs" +ids: [ID!], "Number of items to return per page; max 500" +limit: Int, "Filter by work schedule name" +name: String): WorkSchedulePage + "Fetches the next page of work schedules using a cursor from a previous work_schedules or next_work_schedules_page call" + next_work_schedules_page( "Cursor returned by a previous work_schedules or next_work_schedules_page call" +cursor: String!, "Number of items to get, the default is 25." +limit: Int = 25): WorkSchedulePage + "Returns active time off schedules for the caller's account" + time_offs( "Filter by specific time off schedule IDs" +ids: [ID!], "Number of items to return per page; max 500" +limit: Int, "Filter by time off schedule name" +name: String): TimeOffPage + "Fetches the next page of time off schedules using a cursor from a previous time_offs or next_time_offs_page call" + next_time_offs_page( "Cursor returned by a previous time_offs or next_time_offs_page call" +cursor: String!, "Number of items to get, the default is 25." +limit: Int = 25): TimeOffPage + "Fetches the next page of entries for a time off schedule using a cursor from entries_page or next_time_off_entries_page" + next_time_off_entries_page( "Cursor returned by a previous entries_page or next_time_off_entries_page call" +cursor: String!, "Number of items to get, the default is 25." +limit: Int = 25): TimeOffEntryPage + "Returns user schedule assignments for the caller's account" + user_availabilities( "Filter by specific user IDs" +user_ids: [ID!], "Number of items to return per page; max 500" +limit: Int): UserAvailabilityPage + "Fetches the next page of user availabilities using a cursor from a previous user_availabilities or next_user_availabilities_page call" + next_user_availabilities_page( "Cursor returned by a previous user_availabilities or next_user_availabilities_page call" +cursor: String!, "Number of items to get, the default is 25." +limit: Int = 25): UserAvailabilityPage + "Returns the account-level default work schedule and time off schedule" + account_availability_defaults: AccountAvailabilityDefaults "Returns utilization report for resources: either grouped by attribute or ungrouped with per-resource data. Use inline fragments to query the appropriate fields." utilization_report( "Time range, effort types, optional groupBy, filters, resourceIds, and options." input: UtilizationReportInput!): UtilizationReport @@ -635,6 +726,9 @@ board_id: ID!): [Sequence!] "Get a collection of monday dev sprints" sprints( "A list of monday dev sprints unique identifiers" ids: [ID!]!): [Sprint!] + "Get the status of an async job by its external ID" + job_status( "The job ID returned by the originating mutation" +job_id: ID!): AsyncJobStatus! "Get the changelog of decisions that were made for a task by the My Tasks agent." get_task_changelog( "The task (item) ID to fetch the changelog of decisions for" task_id: ID!): [TaskDecisionChangelogEvent!] @@ -649,6 +743,11 @@ task_id: ID!): [TaskDecisionChangelogEvent!] task_id: ID!): Task "Get all roles for the account" account_roles: [AccountRole!] + "Retrieves API tokens for the given service users." + service_user_tokens( "The IDs of the service users." +service_user_ids: [ID!]!): [ServiceUserToken!] + "Retrieves all service users in the account with their token last activity." + service_users: [ServiceUser!] "Get all user configs for the account." user_configs( "Filter by kinds." kinds: [String!], "Filter by visibility." @@ -656,6 +755,12 @@ visibility: String, "Filter by behaviors. Returns configs that have all of the behaviors: [String!]): [UserConfig!] "Returns all available widget schemas for documentation and validation purposes" all_widgets_schema: [WidgetSchemaInfo!] + "Fetch workflows by IDs (max 50 per request)" + workflows( "Workflow entity IDs" +ids: [ID!]!): [WorkflowAutomation!]! + "Fetch a page of live workflows for the requesting account, with cursor-based pagination" + live_workflows_page( "Pagination parameters" +pagination: WorkflowAutomationsPaginationInput): LiveWorkflowAutomationsPage! "Fetch a form by its token. The returned form includes all the details of the form such as its settings, questions, title, etc. Use this endpoint when you need to retrieve complete form data for display or processing. Requires that the requesting user has read access to the associated board." form( "The unique identifier token for the form. This token is used to securely access the form and can be found in the form URL." formToken: String!): ResponseForm @@ -952,8 +1057,8 @@ snapshot_id: ID!): RollbackSnapshotMutationResult "Rollback a restore to undo the workspace creation in the target account" rollback_restore( "The id of the migration job." migration_job_id: ID!, "The restore id to rollback." -restore_id: ID!, "The API token for the target account." -target_account_api_token: String!): RollbackRestoreMutationResult +restore_id: ID!, "Force rollback even if the restore is older than the maximum age." +force: Boolean): RollbackRestoreMutationResult "Upsert entity ID mappings for a migration job." upsert_entity_id_mappings( "The id of the migration job." migrationJobId: String!, "The entity type for the mappings." @@ -1247,6 +1352,9 @@ object_id: ID!): ArticleMetadata "Permanently deletes a document and all its content from the system. This action cannot be undone. The document will be removed from all user views and workspaces. Use with caution - ensure the document is no longer needed before deletion. Returns success status and the deleted document ID." delete_doc( "The document's unique identifier. Get this from document queries or creation responses." docId: ID!): JSON + "Deletes multiple document blocks in a single operation. Maximum 100 blocks per request." + delete_doc_blocks( "The unique identifiers of the blocks to delete." +block_ids: [ID!]!): [DeletedDocBlock!] "Creates an exact copy of an existing document, including all content, structure, and formatting. Use this to create templates, backup documents before major changes, or create variations of existing documents. The duplicated document will have a new unique ID and can be modified independently. Returns the new document's ID on success." duplicate_doc( "The document's unique identifier to duplicate. Get this from document queries or creation responses." docId: ID!, "Controls what gets duplicated: content only (default) or content with update history. Choose content-only for clean copies." @@ -1288,8 +1396,8 @@ export_options: ExportOptionsInput, """ Time zone for date formatting (e.g. "America/New_York") """ time_zone: String, "Column IDs in desired display order" -columns_order: [String!], "Output format (defaults to XLSX)" -export_format: ExportFormat): ExportBoardResult +columns_order: [String!], "Output format (defaults to CSV)" +export_format: ExportFormat = CSV): ExportBoardResult "Add workspace object to favorites" create_favorite( "The input for adding an object to the favorites" input: CreateFavoriteInput!): CreateFavoriteResultType @@ -1299,6 +1407,13 @@ input: DeleteFavoriteInput!): DeleteFavoriteInputResultType "Update the position of an object in favorites" update_favorite_position( "The input for updating the favorite object position" input: UpdateObjectHierarchyPositionInput!): UpdateFavoriteResultType + "Delete a board automation by ID." + delete_board_automation( "The ID of the automation to delete" +id: ID!, "The board ID the automation belongs to" +board_id: ID!): BoardAutomationDeleteResult! + "Create a board automation. Provide template_reference_id to create from a template, or workflow_blocks and workflow_variables for a direct creation." + create_board_automation( "Automation creation input" +input: BoardAutomationCreateInput!): BoardAutomationCreateResult! "Create a marketplace app discount" create_marketplace_app_discount( "The id of an app" app_id: ID!, "Slug of an account" @@ -1343,6 +1458,61 @@ input: CreateBlankAgentInput): Agent "Delete an AI agent by its ID" delete_agent( "The unique identifier of the agent to delete" id: ID!): Agent + "Trigger a manual run for an existing agent. This is an async fire-and-forget operation — a successful response means the run was accepted and enqueued, not that it has completed or succeeded. Use trigger_uuid to correlate the execution in downstream events or future status endpoints." + run_agent( "Unique identifier of the agent to run" +id: ID!): RunAgentResult + "Activate an existing agent" + activate_agent( "Unique identifier of the agent to activate" +id: ID!): AgentStateResult + "Deactivate an existing agent" + deactivate_agent( "Unique identifier of the agent to deactivate" +id: ID!, "The reason for deactivating the agent. Defaults to DEACTIVATED_BY_USER." +inactive_reason: InactiveReason): AgentStateResult + "Update an agent — creates a new draft if needed, applies the changes, and publishes to live in one call" + update_agent( "Unique identifier of the agent to update" +id: ID!, "Fields to update — only provided fields are changed" +input: UpdateAgentInput!): Agent + "Adds a trigger to an agent. Creates a draft if needed, applies the change, and promotes to live in one call. Returns { success: true } on success. Use agent_active_triggers to read the updated trigger list. Get available trigger types and field schemas from agent_triggers_catalog." + add_trigger_to_agent( "Unique identifier of the agent" +agent_id: ID!, "The block_reference_id from agent_triggers_catalog identifying the trigger type" +block_reference_id: ID!, """ + Configuration values for the trigger. Shape depends on the trigger type — see field_schemas and required_fields in agent_triggers_catalog. For scheduler fields: pass the structured config object directly. For selection fields (e.g. board picker): pass { value: , label: "" }. + """ +field_values: JSON): MutationResult + "Removes a trigger from an agent by its node_id. Creates a draft if needed, applies the change, and promotes to live in one call. Returns { success: true } on success. Use agent_active_triggers to verify the trigger is gone. Get node_id values from the agent_active_triggers query." + remove_trigger_from_agent( "Unique identifier of the agent" +agent_id: ID!, "The node_id of the trigger to remove — from agent_active_triggers" +node_id: ID!): MutationResult + "Grant an agent access to a monday.com board or doc. Creates a draft version, applies the change, and promotes to live." + add_agent_resource_access( "Unique identifier of the agent" +id: ID!, "The ID of the board or doc to add" +resource_id: ID!, "Whether the resource is a board or a doc" +scope_type: KnowledgeScope!, "The permission level to grant the agent on this resource" +permission_type: KnowledgePermission!): MutationResult + "Remove a board or doc from an agent. Creates a draft, removes the access, and promotes to live." + remove_agent_resource_access( "Unique identifier of the agent" +id: ID!, "The ID of the board or doc to remove" +resource_id: ID!, "Whether the resource is a board or a doc" +scope_type: KnowledgeScope!): MutationResult + "Change the permission level an agent has on an existing board or doc. Creates a draft, updates the permission, and promotes to live." + update_agent_resource_access( "Unique identifier of the agent" +id: ID!, "The ID of the board or doc to update" +resource_id: ID!, "Whether the resource is a board or a doc" +scope_type: KnowledgeScope!, "The new permission level to grant the agent" +permission_type: KnowledgePermission!): MutationResult + "Attach a skill to an agent by its catalog id. Use agent_skills_catalog to discover available ids." + add_skill_to_agent( "Unique identifier of the agent" +agent_id: ID!, "Skill reference id from agent_skills_catalog" +skill_id: ID!): MutationResult + "Detach a skill from an agent by its catalog id." + remove_skill_from_agent( "Unique identifier of the agent" +agent_id: ID!, "Skill reference id to detach" +skill_id: ID!): MutationResult + "Create a new skill for the account. The skill will appear in agent_skills_catalog and can be attached to any agent via add_skill_to_agent." + create_agent_skill( "Display name of the skill" +name: String!, "Markdown instructions defining what the skill does" +content: String!, "Short description of the skill" +description: String): AgentSkillCatalogEntry "Creates a new app with the specified configuration." create_app( "App configuration data" input: CreateAppInput!): CreateAppResponse @@ -1382,6 +1552,10 @@ input: InstallAppInput!): InstallAppResponse "Uninstalls an app from the current account. Requires account admin permission." uninstall_app( "The app identifier (numeric ID or slug)" app_identifier: ID!): AppDeletionResponse + "Promotes the latest draft app version of an app to live. Promotion is asynchronous — poll the returned version's status field (via the app query) until it transitions to LIVE. Only app collaborators can perform this action." + promote_app( "The identifier of the app whose draft version should be promoted" +app_id: ID!, "Optional: the specific app version to promote. Defaults to the latest draft version" +app_version_id: ID): DeveloperAppVersion "Add a file to a column value." add_file_to_column( "The column to add the file to." column_id: String!, "The file to upload." @@ -1507,9 +1681,9 @@ prompt: String, "Optional board template id" template_id: ID, "Optional workspace id" workspace_id: ID): Board "Create a new doc." - create_doc( "new monday doc location" -location: CreateDocInput!, "Optional list of user IDs to set as document owners at creation time" -doc_owner_ids: [ID!]): Document + create_doc( "Optional list of user IDs to set as document owners at creation time" +doc_owner_ids: [ID!], "new monday doc location" +location: CreateDocInput!): Document "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 block's content." @@ -1837,6 +2011,41 @@ allocations: [AllocationToResourceInput!]!): AddAllocationsToResourcesResponse update_allocations( "The ID of the planner containing the allocations" planner_id: ID!, "Array of allocation updates to apply" updates: [AllocationUpdateInput!]!): [UpdateAllocationResult!] + "Create one or more named work schedules for the account; maximum 100 inputs per call" + create_work_schedule( "Work schedules to create; maximum 100 items per call" +inputs: [CreateWorkScheduleInput!]!): [WorkScheduleResult!] + "Update the name and/or working hours of an existing work schedule" + update_work_schedule( "ID of the work schedule to update" +id: ID!, "Fields to update on the work schedule" +input: UpdateWorkScheduleInput!): WorkScheduleResult + "Soft-delete one or more work schedules; maximum 100 IDs per call" + delete_work_schedule( "IDs of work schedules to delete; maximum 100 items per call" +ids: [ID!]!): [WorkScheduleDeleteResult!] + "Create one or more named time off schedules for the account; maximum 100 inputs per call" + create_time_off( "Time off schedules to create; maximum 100 items per call" +inputs: [CreateTimeOffInput!]!): [TimeOffResult!] + "Update the name of a time off schedule" + update_time_off( "ID of the time off schedule to update" +id: ID!, "Fields to update on the time off schedule" +input: UpdateTimeOffInput!): TimeOffResult + "Soft-delete one or more time off schedules; maximum 100 IDs per call" + delete_time_off( "IDs of time off schedules to delete; maximum 100 items per call" +ids: [ID!]!): [TimeOffDeleteResult!] + "Add one or more non-working date entries to a time off schedule; maximum 100 inputs per call" + create_time_off_entry( "Entries to create; maximum 100 items per call" +inputs: [CreateTimeOffEntryInput!]!): [TimeOffEntryResult!] + "Update the name or date range of one or more existing time off entries; maximum 100 inputs per call" + update_time_off_entry( "Entries to update; maximum 100 items per call" +inputs: [UpdateTimeOffEntryInput!]!): [TimeOffEntryResult!] + "Soft-delete one or more time off entries; maximum 100 IDs per call" + delete_time_off_entry( "IDs of time off entries to delete; maximum 100 items per call" +ids: [ID!]!): [TimeOffEntryDeleteResult!] + "Assign the same work schedule and time off schedule to multiple users; maximum 100 user IDs per call. Returns one result per user, allowing partial success." + assign_user_availability( "Users and schedules to assign; maximum 100 user IDs per call" +input: AssignUserAvailabilityInput!): [UserAvailabilityResult!] + "Remove explicit work schedule and/or time off assignments from multiple users; maximum 100 user IDs per call. Returns one result per user, allowing partial success." + unassign_user_availability( "Users to unassign; maximum 100 user IDs per call" +input: UnassignUserAvailabilityInput!): [UserAvailabilityResult!] "Enroll multiple items to a single sequence. Maximum 50 items per request." enroll_items_to_sequence( "Input for enrolling multiple items to a single sequence" input: EnrollToSequenceInput!): EnrollToSequenceResult @@ -1889,6 +2098,16 @@ use_async_mode: Boolean): UpdateUserAttributesResult emails: [String!]!, "The new role of the users." user_role: UserRole, "The product to invite the users to" product: Product): InviteUsersResult + "Revokes all API tokens for a service user." + revoke_service_user_tokens( "The ID of the service user whose tokens to revoke." +service_user_id: ID!): Boolean + "Revokes all existing tokens and generates a new API token for a service user." + regenerate_service_user_token( "The ID of the service user whose token to regenerate." +service_user_id: ID!): String + "Creates a new service user with a read-only API token." + create_service_user( "Display name for the service user." +name: String!, "Optional title/description for the service user." +title: String): CreateServiceUserResult "Create a new widget." create_widget( "Parent container for the widget (dashboard or board view)." parent: WidgetParentInput!, "The kind of widget to create (i.e CHART, NUMBER, BATTERY, CALENDAR, GANTT)." @@ -1922,6 +2141,16 @@ board_folder_id: ID): Dashboard "Delete an existing dashboard." delete_dashboard( "The ID of the dashboard to delete." id: ID!): Boolean + "Create a new empty workflow in the given workspace and return its identifiers." + create_workflow( "Workspace ID to create the workflow in" +workspace_id: ID!, """ + Workflow title (defaults to "New Workflow") + """ +title: String, "Privacy kind for the workflow (defaults to PUBLIC)" +privacy_kind: WorkflowBuilderPrivacyKind, "Optional workflow description" +description: String, "Optional folder ID to place the workflow in" +folder_id: ID, "Optional list of user IDs to set as workflow owners" +owner_ids: [ID!]): WorkflowBuilderCreateResult! "Submit answers to a form. Open to authenticated and anonymous users — authorization is handled by the form settings (user restrictions, etc.). Note: forms with reCAPTCHA enabled cannot be submitted via GraphQL — use the UI instead." create_form_submission( "The unique token identifying the form to submit to." form_token: String!, "The answers to submit. Each entry specifies a question ID and the answer for that question." @@ -2033,36 +2262,6 @@ type EnhancedPromptResult { addition: String } -"A theme produced by extracting brand identity from a URL. Extends VibeTheme with extraction metadata." -type ExtractedVibeTheme { - "The theme identifier (e.g. extracted_<8-char-hash>)" - id: ID - "Theme display name (derived from extracted brand)" - name: String - "User-friendly display name" - label: String - """ - Three representative HSL colors for the picker swatch: [primary, accent (= brand secondary), chart-3 (= primary +60° hue)]. Differs from VibeTheme.colors which uses [primary, accent, secondary]: extracted themes leave the scaffold "secondary" slot neutral, so chart-3 is substituted to give three distinct brand-related hues. - """ - colors: [String!] - "Base border radius value" - radius: String - "Primary font family name" - font_family: String - "Secondary font family name" - font_family_secondary: String - "Light mode CSS token values (HSL strings keyed by CSS variable name)" - light: JSON - "Dark mode CSS token values (HSL strings keyed by CSS variable name)" - dark: JSON - "URL the theme was extracted from" - source_url: String - "Primary logo URL for FE preview hint" - logo_url: String - "Pass-through warnings from brand-extraction" - extraction_notes: [String!] -} - "Presigned URL for uploading a file to S3" type FileUploadUrl { "Presigned URL to upload the file directly to S3" @@ -2133,9 +2332,6 @@ monday_assets: [MondayAssetDocumentSourceInput!]!): AiDocumentActionResponse! "Enhance a user prompt to include AI capabilities" enhance_prompt( "The original user prompt to enhance" prompt: String!): EnhancedPromptResult! - "Extract brand identity from a URL and produce a ThemeDefinition plug-compatible with presets." - extract_brand_theme( "The URL to extract brand identity from." -url: String!): ExtractedVibeTheme! "Get a presigned URL to upload a file to S3" file_upload_url( "Original file name" file_name: String!, "MIME type of the file" @@ -2152,9 +2348,9 @@ input WebSearchConfigInput { "Configuration options for web search functionality" input WebSearchOptionsInput { - "Maximum number of search results to retrieve (default: 5)" + "Hint for max number of sources to consider (default: 5). Interpreted as guidance — the model decides retrieval breadth." topK: Int - "Limit search results to content from the last N days" + "Hint to prioritize content from the last N days. Interpreted as guidance — not a hard filter." recencyDays: Int } @@ -2168,6 +2364,8 @@ enum AssetHolder { WORKSPACE "An account entity." ACCOUNT + "A vibe application entity." + VIBE_APP } "The result of a completed file upload, representing the created asset." @@ -2597,14 +2795,10 @@ interface FieldType { has_remote_options: Boolean } -"Implementation of a field type" +"An interface (app feature) that a field type implements" type FieldTypeImplementation { - "Unique identifier for the implementation" - id: Int - "Unique key of the app feature" - uniqueKey: String - "Name of the implementation" - name: String + "Reference id of the app feature interface this field type implements" + app_feature_reference_id: ID } "The type of relation between a field and its type" @@ -2718,6 +2912,22 @@ type LiteBuilderContextData { inbound_field_overrides: JSON } +"A page of live workflows with pagination metadata" +type LiveWorkflowsPage { + "List of live workflows in this page" + data: [Workflow!]! + "Cursor-based pagination metadata for fetching subsequent pages" + page_info: LiveWorkflowsPageInfo! +} + +"Cursor-based pagination metadata for live workflows" +type LiveWorkflowsPageInfo { + "Whether there are more results beyond the current page" + has_next_page: Boolean! + "Cursor of the last item in the current page; pass as `lastId` to fetch the next page" + end_cursor: ID +} + "Context data for Monday agents" type MondayAgentsContextData { "Display name of the block in the agents context" @@ -2740,6 +2950,8 @@ type Option { value: JSON "The display title of the option" title: String + "Optional icon to display alongside the option (e.g. { vibe, tooltip })" + icon: JSON } "Interface for output field configuration" @@ -3203,6 +3415,14 @@ input WorkflowIteratorInput { max_iterations_workflow_variable_key: Int } +"Cursor-based pagination parameters for live workflows queries" +input WorkflowsPaginationInput { + "Maximum number of results to return" + limit: Int + "Cursor of the last item from the previous page; pass `page_info.end_cursor` from the previous response" + last_id: ID +} + "The context where a workflow template can be accessed" enum WorkflowTemplateContext { "Using this context will make the template accessible in the Lite Builder" @@ -3521,6 +3741,10 @@ cursor: String): UpdatesPage ids: [String], "A list of column types." types: [ColumnType!], "A list of column capabilities to filter by. Returns columns that have any of the specified capabilities. Use null in the array to represent columns with no capabilities (e.g., [null] for only columns without capabilities, [null, CALCULATED] for columns without capabilities or with calculated)." capabilities: [ColumnCapability]): [Column] + "Automations for this board" + automations( "Max number of automations to return" +limit: Int, "Cursor from a previous page for pagination" +cursor: String): AutomationsPage! "The user's permission level for this board (view / edit)." access_level: BoardAccessLevel! "The board log events." @@ -4245,6 +4469,18 @@ type RestoreEntityResult { accepted: Boolean } +"A point-in-time record of a restore status change." +type RestoreHistoryEntry { + "The restore ID at the time this history entry was recorded." + restore_id: ID! + "The entity id (package id) of the restore." + entity_id: ID! + "The status of the restore at the time this history entry was recorded." + status: RestoreStatus! + "The date and time this history entry was recorded." + recorded_at: String! +} + "The possible statuses of a restore operation." enum RestoreStatus { "The restore is pending and has not started yet." @@ -4275,6 +4511,18 @@ type RollbackSnapshotMutationResult { status: SnapshotStatus! } +"A point-in-time record of a snapshot status change." +type SnapshotHistoryEntry { + "The snapshot ID at the time this history entry was recorded." + snapshot_id: ID! + "The entity id (package id) of the snapshot." + entity_id: ID! + "The status of the snapshot at the time this history entry was recorded." + status: SnapshotStatus! + "The date and time this history entry was recorded." + recorded_at: String! +} + "The possible statuses of a snapshot operation." enum SnapshotStatus { "The snapshot is pending and has not started yet." @@ -5636,6 +5884,12 @@ input CreateBlockInput { page_break_block: PageBreakBlockInput } +"Represents a document block that was successfully deleted." +type DeletedDocBlock { + "The deleted block's unique identifier." + id: ID! +} + "A document block that was changed between two versions, including its content and what type of change occurred." type DiffBlock { "The unique identifier of the block." @@ -5648,6 +5902,10 @@ type DiffBlock { summary: String "The parent block ID, or null if the block is at the top level." parent_block_id: ID + "The ID of the user who made the change to this block, or null if not available." + user_id: ID + "The ID of the AI agent that made the change to this block, or null if the change was made by a user." + agent_id: ID "The changes that occurred to this block (added, deleted, or changed)." changes: BlockChanges } @@ -6195,6 +6453,8 @@ input ExportOptionsInput { header_row: HeaderFormat "Behavior for columns with no codec support in CSV exports. Ignored for other formats." non_importable_columns: NonImportableColumns = INCLUDE + "Include item_id (and parent_item_id when subitems are enabled) columns at the end of CSV exports." + include_item_identifiers: Boolean = false } "CSV header row format." @@ -6359,6 +6619,34 @@ input UpdateObjectHierarchyPositionInput { newPosition: ObjectDynamicPositionInput } +"Aggregated result of synchronously loading all widget data for a dashboard." +type DashboardDataResult { + "Identifier of the dashboard whose widgets were loaded." + dashboard_id: ID + "Per-widget results for the dashboard, one entry per supported widget." + widgets: [WidgetResult!] +} + +"Result of loading a single widget within a dashboard data load." +type WidgetResult { + "Identifier of the widget this result belongs to." + widget_id: ID + "Whether the widget data loaded successfully or failed." + status: WidgetStatus + "Loaded widget data payload; null when status is ERROR or no data is available." + data: JSON + "Error message describing why the widget failed to load; null on success." + error: String +} + +"Outcome of loading a single widget within loadDashboardData." +enum WidgetStatus { + "Widget data was loaded successfully." + OK + "Widget failed to load; see error field for details." + ERROR +} + "Account context information." type AccountContext { "Unique account identifier." @@ -6471,6 +6759,486 @@ type UserContextResponse { account: AccountContext } +"A page of automations with cursor for pagination" +type AutomationsPage { + "Opaque cursor for fetching the next page. Null if no more results." + cursor: String + "The automations in this page" + items: [BoardAutomation!] +} + +"A board automation" +type BoardAutomation { + "Automation ID" + id: ID + "Creator user ID" + user_id: ID + "Whether the automation is active" + active: Boolean + "Automation title" + title: String + "Automation description" + description: String + "Creation timestamp" + created_at: String + "Last update timestamp" + updated_at: String + "Host data (board ID and type)" + workflow_host_data: JSON + "Workflow block definitions" + workflow_blocks: JSON + "Workflow variable definitions" + workflow_variables: JSON + "Automation importance level" + importance: Int + "Notice message for the automation" + notice_message: String + "Template reference ID if created from template" + template_reference_id: ID +} + +"Input for creating a board automation. Provide template_reference_id to create from a template, or workflow_blocks and workflow_variables for a direct creation." +input BoardAutomationCreateInput { + "Board ID to host the automation" + board_id: String! + "Automation title" + title: String! + "Automation description" + description: String + "Template reference ID (for template-based creation)" + template_reference_id: ID + "Automation block definitions (for direct creation)" + workflow_blocks: JSON + "Automation variable definitions (for direct creation)" + workflow_variables: JSON + "Template variable values (for template-based creation)" + workflow_variables_values: JSON +} + +"Result of creating a board automation" +type BoardAutomationCreateResult { + "The ID of the created automation" + workflow_id: ID +} + +"Result of deleting a board automation" +type BoardAutomationDeleteResult { + "Whether the deletion was successful" + is_success: Boolean +} + +"Additional quota allocated beyond the base plan limit" +type CampaignsAdditionalQuota { + "Amount of additional quota consumed" + consumed: Int + "Additional quota limit" + limit: Int + "Timestamp when additional quota expires" + expired_at: Date +} + +"A campaign analytics event" +type CampaignsAnalyticsEvent { + "Unique event identifier" + id: ID + "Unique identifier for this event" + identifier: String + "ID of the associated campaign" + campaign_id: ID + "ID of the associated variant" + variant_id: ID + "Timestamp when the event was created" + created_at: Date + "Type of analytics event" + type: CampaignsAnalyticsEventKind + "Parsed reason for bounced emails" + parsed_reason: String +} + +"Types of analytics events for campaigns" +enum CampaignsAnalyticsEventKind { + "Email was bounced back" + EMAIL_BOUNCED + "Email was successfully delivered" + EMAIL_DELIVERED + "Email was sent" + EMAIL_SENT + "Recipient marked email as spam" + EMAIL_RECIPIENT_COMPLAINT + "Recipient unsubscribed" + EMAIL_RECIPIENT_UNSUBSCRIBED + "Email was dropped before sending" + EMAIL_DROPPED + "Email was opened by recipient" + EMAIL_OPENED + "Link in email was clicked by recipient" + EMAIL_CLICKED +} + +"Paginated analytics events response" +type CampaignsAnalyticsEventsResponse { + "List of analytics events" + data: [CampaignsAnalyticsEvent!] + "Token for pagination to retrieve next batch" + next_token: String +} + +"Aggregated analytics summary for an email campaign" +type CampaignsAnalyticsSummary { + "Total emails sent" + total_sent: Int + "Total emails delivered" + total_delivered: Int + "Total number of email opens" + total_opens: Int + "Number of unique opens" + unique_opens: Int + "Total number of link clicks" + total_clicks: Int + "Number of unique clicks" + unique_clicks: Int + "Total unsubscribes" + total_unsubscribes: Int + "Number of unique unsubscribes" + unique_unsubscribes: Int + "Total emails not delivered" + total_undelivered: Int + "Number of unique undelivered" + unique_undelivered: Int + "Total spam complaints" + total_spam_reports: Int + "Number of unique spam reports" + unique_spam_reports: Int +} + +"A brand color in a brand kit" +type CampaignsBrandColor { + "Unique color identifier" + id: ID + "Hex color code" + hex_code: String + "Category of the brand color" + kind: CampaignsBrandColorKind +} + +"Types of brand colors" +enum CampaignsBrandColorKind { + "Primary brand color" + PRIMARY + "Secondary brand color" + SECONDARY + "Accent brand color" + ACCENT + "Text color" + TEXT + "Other brand color" + OTHER +} + +"A brand image in a brand kit" +type CampaignsBrandImage { + "Unique image identifier" + id: ID + "Name of the image" + name: String + "Alternative text for the image" + alt_text: String + "Category of the brand image" + kind: CampaignsBrandImageKind + "Current status of the image" + status: CampaignsBrandImageStatus + "Size of the image in bytes" + size_bytes: Int + "MIME type of the image" + mime_type: String + "Width of the image in pixels" + width: Int + "Height of the image in pixels" + height: Int + "URL to access the image" + remote_url: String +} + +"Types of brand images" +enum CampaignsBrandImageKind { + "Primary brand logo" + PRIMARY_LOGO + "Secondary brand logo" + SECONDARY_LOGO + "Image attachment" + ATTACHMENT +} + +"Status of a brand image" +enum CampaignsBrandImageStatus { + "Image pending confirmation" + PENDING + "Image confirmed" + CONFIRMED +} + +"A brand kit containing colors and images for an account" +type CampaignsBrandKit { + "Unique brand kit identifier" + id: ID + "Name of the brand kit" + name: String + "Status of the brand kit" + status: String + "Timestamp when the brand kit was created" + created_at: Date + "Timestamp when the brand kit was last updated" + updated_at: Date + "Colors in this brand kit" + brand_colors: [CampaignsBrandColor!] + "Images in this brand kit" + brand_images: [CampaignsBrandImage!] +} + +"Company information for email campaigns" +type CampaignsCompanyInformation { + "Company name" + company_name: String + "Company website URL" + company_website_url: String + "Whether physical address was AI generated" + physical_address_is_ai_generated: Boolean + "Physical mailing address" + physical_address: CampaignsPhysicalAddress +} + +"Marketing contacts board configuration" +type CampaignsContactsBoard { + "ID of the board" + board_id: ID + "ID of the email column" + email_column_id: ID + "ID of the email subscription column" + email_subscription_column_id: ID +} + +"An email campaign" +type CampaignsEmailCampaign { + "Unique campaign identifier" + id: ID + "Name of the campaign" + name: String + "Current status of the campaign" + status: CampaignsStatusKind + "Timestamp when the campaign was sent" + sent_on: Date + "Timestamp when the campaign was created" + created_at: Date + "Timestamp when the campaign was last updated" + updated_at: Date + "Analytics summary for the campaign" + summary: CampaignsAnalyticsSummary + "User who created the campaign" + created_by: User + "Email subject line" + subject: String + "Preview text shown in email clients" + preview_text: String + "When the campaign should be sent" + schedule_type: CampaignsScheduleKind + "Scheduled time for sending" + scheduled_time: Date + "IDs of segments targeted by this campaign" + segment_ids: [ID!] + "HTML content of the email template" + template_html: String +} + +"A market insight" +type CampaignsInsight { + "Unique insight identifier" + id: ID + "Title of the insight" + title: String + "Summary of the insight" + summary: String + "Target audience for the insight" + target_audience: String + "Rationale for the target audience" + audience_rationale: String + "Assessment of campaign worthiness" + campaign_worthiness: String + "Timestamp of the insight" + timestamp: String + "Source of the insight" + source: String + "Raw context data for the insight" + raw_context: String + "Timestamp when the insight was created" + created_at: Date + "Timestamp when the insight was last updated" + updated_at: Date + "Current status of the insight" + status: CampaignsInsightStatusKind + "Classification type of the insight" + type: CampaignsInsightClassificationKind +} + +"Classification type of an insight" +enum CampaignsInsightClassificationKind { + "Competitor move insight" + COMPETITOR_MOVE + "Market trend insight" + MARKET_TREND + "Customer behavior insight" + CUSTOMER_BEHAVIOR + "Emerging technology insight" + EMERGING_TECHNOLOGY + "Regulatory change insight" + REGULATORY_CHANGE + "Product launch insight" + PRODUCT_LAUNCH + "Crisis or event insight" + CRISIS_EVENT + "Other type of insight" + OTHER +} + +"Status of an insight" +enum CampaignsInsightStatusKind { + "active" + ACTIVE + "consumed" + CONSUMED + "dismissed" + DISMISSED +} + +"A physical mailing address" +type CampaignsPhysicalAddress { + "Street address" + street_address: String + "ZIP code" + zip_code: String + "City name" + city: String + "Country name" + country: String + "State or province" + state: String +} + +"When the campaign should be sent" +enum CampaignsScheduleKind { + "Send immediately" + NOW + "Send at scheduled time" + LATER +} + +"An audience segment" +type CampaignsSegment { + "Unique segment identifier" + id: ID + "Name of the segment" + name: String + "Type of the segment" + type: String + "Timestamp when the segment was created" + created_at: Date + "Timestamp when the segment was last updated" + updated_at: Date + "User who created the segment" + created_by: User + "ID of the data source" + data_source_id: ID + "Entity ID from the data source" + data_source_entity_id: ID + "Entity type from the data source" + data_source_entity_type: String +} + +"Marketing channels settings for the current account" +type CampaignsSettings { + "Company information settings" + company_information: CampaignsCompanyInformation + "Unsubscribe page configuration" + unsubscribe_page: CampaignsUnsubscribePage + "Unsubscribe footer configuration" + unsubscribe_footer: CampaignsUnsubscribeFooter + "Marketing contacts board configuration" + contacts_board: CampaignsContactsBoard +} + +"Status of a campaign" +enum CampaignsStatusKind { + "Campaign is being generated" + GENERATING + "Campaign is in draft state" + DRAFT + "Campaign is ready to send" + READY_TO_SEND + "Campaign is currently sending" + SENDING + "Campaign is scheduled for later" + SCHEDULED + "Campaign has been sent" + SENT + "Campaign is ongoing" + ONGOING + "Campaign failed" + FAILED + "Campaign is on hold" + ON_HOLD + "Campaign is blocked" + BLOCKED + "Campaign is processing" + PROCESSING +} + +"Unsubscribe footer configuration" +type CampaignsUnsubscribeFooter { + "Whether removal is allowed" + allow_removal: Boolean +} + +"Unsubscribe page configuration" +type CampaignsUnsubscribePage { + "Page title" + title: String + "Page body content" + body: String +} + +"Account-level usage metrics across all resource domains" +type CampaignsUsage { + "Email sends usage metrics" + email_sends: CampaignsUsageForDomain + "Marketing contacts usage metrics" + marketing_contacts: CampaignsUsageForDomain + "Whether this is a touch account" + is_touch_account: Boolean +} + +"Usage metrics for a single resource domain" +type CampaignsUsageForDomain { + "Metering bucket and service identifier" + key: CampaignsUsageKey + "Amount of resources consumed" + consumed: Int + "Resource usage limit" + limit: Int + "End date of the billing period" + end_date: String + "Whether usage is blocked due to limit exceeded" + blocked: Boolean + "Additional quota allocation" + additional_quota: CampaignsAdditionalQuota +} + +"Identifies the metering bucket and service" +type CampaignsUsageKey { + "Metering bucket name" + bucket_name: String + "Service name" + service: String +} + "Subscription object" type AppSubscriptionDetails { "The ID of an account" @@ -6875,16 +7643,38 @@ type Agent { goal: String "The execution plan in markdown format, describing the agent capabilities and operating principles" plan: String + "The LLM model the agent uses" + agent_model: AgentModel + "Reference IDs of skills attached to this agent. Use agent_skills_catalog to resolve full name and description." + skill_ids: [ID!]! "The original user prompt used to create the agent" user_prompt: String "The current configuration version of the agent. Increments on each update." version_id: ID! + "Knowledge files attached to the agent. Only populated on create mutation responses." + knowledge: [AgentKnowledgeEntry!] "The timestamp when the agent was created. Null on create mutation responses — use the agent query to fetch it." created_at: Date "The timestamp when the agent was last updated. Null on create mutation responses — use the agent query to fetch it." updated_at: Date } +"A trigger currently attached to an agent" +type AgentActiveTrigger { + "Stable identifier of this trigger instance — use this as node_id when calling remove_trigger_from_agent" + node_id: ID! + "The trigger type, matching block_reference_id in the catalog" + block_reference_id: ID! + "Display name of the trigger type" + name: String! + "Description of the trigger type" + description: String + """ + Human-readable summary of how this trigger is configured (e.g. "type=Weekly, hour=9, days=3/4") + """ + field_summary: String +} + "The kind of AI agent" enum AgentKind { "A personal agent owned by a specific user" @@ -6895,6 +7685,70 @@ enum AgentKind { EXTERNAL } +"The full knowledge configuration of an agent — resources (boards/docs) and uploaded files" +type AgentKnowledge { + "Boards and docs the agent has access to" + resources: [AgentKnowledgeResource!] + "Files uploaded as agent knowledge" + files: [AgentKnowledgeFile!] +} + +"A knowledge entry attached to an agent" +type AgentKnowledgeEntry { + "The unique identifier of the knowledge entry" + id: ID! + "File metadata for this knowledge entry" + metadata: AgentKnowledgeMetadata + "The source type of this knowledge entry" + source_type: KnowledgeSource + "The current state of this knowledge entry" + state: KnowledgeState + "Reference ID for the knowledge entry" + knowledge_reference_id: ID +} + +"A file uploaded as agent knowledge" +type AgentKnowledgeFile { + "Unique identifier of the knowledge file" + id: ID + "Original file name" + file_name: String + "File extension (e.g. pdf, docx, csv)" + file_type: String +} + +"Metadata about a knowledge file attachment" +type AgentKnowledgeMetadata { + "Original name of the uploaded file" + file_name: String + "MIME type of the file" + file_type: String + "Cloudinary asset ID for image files" + asset_id: ID +} + +"A monday.com board or doc the agent has been granted access to" +type AgentKnowledgeResource { + "The ID of the board or doc" + resource_id: ID + "Whether this resource is a board or a doc" + scope_type: KnowledgeScope + "The permission level the agent has on this resource" + permission_type: KnowledgePermission +} + +"Supported LLM models for an agent" +enum AgentModel { + "Claude Sonnet 4.6 (claude-sonnet-4-6)" + CLAUDE_SONNET_4_6 + "Claude Opus 4.7 (claude-opus-4-7)" + CLAUDE_OPUS_4_7 + "GPT 5.2" + GPT_5_2 + "Gemini 2.5 Flash" + GEMINI_2_5_FLASH +} + "Visual and role identity of an agent." type AgentProfile { "The display name of the agent" @@ -6909,6 +7763,16 @@ type AgentProfile { background_color: String } +"A skill available for agents to use — browse the catalog, then attach by id." +type AgentSkillCatalogEntry { + "Stable reference ID — pass this to add_skill_to_agent / remove_skill_from_agent" + id: ID + "Display name of the skill" + name: String + "What this skill does" + description: String +} + "The current state of an agent" enum AgentState { "The agent is active and can be triggered and executed" @@ -6923,12 +7787,34 @@ enum AgentState { FAILED } +"Result of an agent state change operation" +type AgentStateResult { + "Whether the operation succeeded" + success: Boolean +} + +"An available trigger type that can be attached to an agent" +type AgentTriggerCatalogEntry { + "Pass this value as block_reference_id when calling add_trigger_to_agent" + block_reference_id: ID! + "Display name of the trigger" + name: String! + "What this trigger does" + description: String + "Structured value schemas for fields you can populate directly in field_values" + field_schemas: [TriggerFieldSchema!]! + "Selection fields (e.g. board picker) that must be provided in field_values as { value, label } pairs" + required_fields: [TriggerRequiredField!]! +} + "Input for creating an AI agent from a prompt — AI generates the profile from the prompt" input CreateAgentInput { "A description of what the agent should do — used to generate profile, goal, and plan via AI" prompt: String! "The LLM model the agent should use" agent_model: String + "IDs of previously uploaded pending files to attach as knowledge during creation" + pending_file_ids: [ID!] } "Input for creating a blank AI agent without AI generation" @@ -6949,6 +7835,92 @@ input CreateBlankAgentInput { user_prompt: String } +"The reason an agent is inactive" +enum InactiveReason { + "The agent was deactivated due to an account-level block" + ACCOUNT_LEVEL_BLOCKING + "The agent was manually deactivated by a user" + DEACTIVATED_BY_USER + "The agent was deactivated automatically because it exceeded the runs rate limit" + RUNS_RATE_LIMIT_EXCEEDED +} + +"The permission level the agent has on a resource" +enum KnowledgePermission { + "Agent can read the resource" + READ + "Agent can read and write the resource" + READ_WRITE +} + +"The type of monday.com resource granted to an agent" +enum KnowledgeScope { + "A monday.com board" + BOARD + "A monday.com doc" + DOC +} + +"The source type of a knowledge entry" +enum KnowledgeSource { + "Knowledge sourced from an uploaded file" + FILE +} + +"The state of a knowledge entry" +enum KnowledgeState { + "Knowledge is active and available for retrieval" + ACTIVE + "Knowledge is being processed" + PENDING + "Knowledge has been deleted" + DELETED +} + +"Result of a write operation that does not need to return entity data." +type MutationResult { + "Whether the operation succeeded" + success: Boolean! +} + +"Confirmation that a manual agent run was accepted and enqueued. This does not reflect the outcome of the run itself — the execution happens asynchronously. In the future, trigger_uuid can be used to query run status via a dedicated endpoint." +type RunAgentResult { + "Correlation ID for the triggered run. Use this to track or look up the execution in downstream events or future run-status endpoints." + trigger_uuid: String +} + +"Schema description for a trigger field that accepts a structured JSON value" +type TriggerFieldSchema { + "The key to use in field_values when calling add_trigger_to_agent" + field_key: String! + "Human-readable description of the expected JSON shape for this field" + value_schema: String! +} + +"A selection field (e.g. board picker) required when adding this trigger" +type TriggerRequiredField { + "The key to use in field_values" + field_key: String! + "Field keys that must be provided before this field — resolve them in order" + depends_on: [String!]! + "Whether this field can be omitted" + optional: Boolean! +} + +"Input for updating an AI agent — all fields are optional; only provided fields are changed" +input UpdateAgentInput { + "The display name of the agent" + name: String + "The role of the agent" + role: String + "A description of the agent role" + role_description: String + "The execution plan (instructions) for the agent, in markdown format" + plan: String + "The LLM model the agent should use" + agent_model: AgentModel +} + "Response object for app deletion operations" type AppDeletionResponse { "Whether the deletion was successful" @@ -7203,6 +8175,8 @@ type AppType { photo_url_small: String "The app kind" kind: AppKind + "All versions of this app with their current status. Use this to poll promotion progress." + versions: [DeveloperAppVersion!] "The app status (i.e. is live?)" status: AppStatus "The latest version type" @@ -7228,6 +8202,18 @@ limit: Int = 25, "Page number to get, starting at 1." page: Int = 1): [AppFeatureType!] } +"The lifecycle status of an app version" +enum AppVersionStatus { + "Version is in development and not yet live" + DRAFT + "Version is live and available to users" + LIVE + "Version has been superseded by a newer version" + DEPRECATED + "Version is in the process of being promoted" + PROMOTING +} + "Input for creating an app with its configuration data." input CreateAppInput { "The display name of the app" @@ -7262,6 +8248,14 @@ type CreateAppResponse { signing_secret: String } +"An app version" +type DeveloperAppVersion { + "The unique identifier of the app version" + id: ID + "The current lifecycle status of this app version" + status: AppVersionStatus +} + "Input for installing an app on the current account." input InstallAppInput { "The app identifier (numeric ID or slug)" @@ -9597,6 +10591,8 @@ type Meeting { meeting_link: String! "The list of participants in the meeting." participants: [Participant!]! + "A concise AI-generated gist of the meeting." + gist: String "The AI-generated summary of the meeting." summary: String "The topics discussed during the meeting." @@ -10985,6 +11981,16 @@ enum AggregateHistoryFunction { TRIM "Convert to uppercase." UPPER + "Truncate a date or datetime value to the day." + DATE_TRUNC_DAY + "Truncate a date or datetime value to the week." + DATE_TRUNC_WEEK + "Truncate a date or datetime value to the month." + DATE_TRUNC_MONTH + "Truncate a date or datetime value to the quarter." + DATE_TRUNC_QUARTER + "Truncate a date or datetime value to the year." + DATE_TRUNC_YEAR } "Configuration for grouping aggregate results by a column." @@ -11339,6 +12345,14 @@ enum ItemsHistorySortDirection { DESC } +"The account-level default work schedule and time off schedule" +type AccountAvailabilityDefaults { + "The account-level default work schedule" + work_schedule: WorkSchedule! + "The account-level default time off schedule" + time_off: TimeOff! +} + "Response containing per-item results for adding allocations to resources" type AddAllocationsToResourcesResponse { "Per-item results for each allocation in the request" @@ -11467,6 +12481,16 @@ input AllocationUpdateInput { resource_id: ID } +"Input for assigning a work schedule and/or time off schedule to multiple users" +input AssignUserAvailabilityInput { + "IDs of the users to assign schedules to" + user_ids: [ID!]! + "ID of the work schedule to assign; omit to leave unchanged" + work_schedule_id: ID + "ID of the time off schedule to assign; omit to leave unchanged" + time_off_id: ID +} + "Represents a single attribute type option for a resource" type Attribute { "Unique identifier for the attribute" @@ -11477,6 +12501,34 @@ type Attribute { is_active: Boolean! } +"Input for adding a non-working date entry to a time off schedule" +input CreateTimeOffEntryInput { + "ID of the time off schedule to add this entry to" + time_off_id: ID! + "Optional display name for this time off entry" + name: String + "Start date of the non-working period in YYYY-MM-DD format" + start: String! + "End date of the non-working period in YYYY-MM-DD format" + end: String! +} + +"Input for creating a new time off schedule" +input CreateTimeOffInput { + "Display name for the new time off schedule" + name: String! + "Non-working date entries to create alongside the schedule. Subsequent additions/updates use the dedicated time off entry mutations." + entries: [TimeOffEntryInput!] +} + +"Input for creating a new work schedule" +input CreateWorkScheduleInput { + "Display name for the new work schedule" + name: String! + "Per-weekday working hours; if omitted, all seven days are created as inactive" + days: [WorkScheduleDayInput!] +} + "Response indicating whether the allocation deletion succeeded" type DeleteAllocationResponse { "Indicates whether the allocation was successfully deleted." @@ -11509,6 +12561,8 @@ type DirectoryResource { skills: [String!] "The location of the directory resource." location: String + "The type of the resource (user, viewer, or guest)." + resource_type: DirectoryResourceKind } "Attributes that can be updated on a resource directory entry" @@ -11521,6 +12575,16 @@ enum DirectoryResourceAttribute { LOCATION } +"The type of a directory resource" +enum DirectoryResourceKind { + "A member or admin user" + USER + "A view-only user" + VIEWER + "A guest user" + GUEST +} + "Paginated response containing directory resources and cursor for next page" type DirectoryResourcesResponse { "Response identifier" @@ -11617,6 +12681,122 @@ enum ResourceAttributeTypeKey { RESOURCE_MANAGER } +"A named time off schedule with non-working date entries" +type TimeOff { + "Unique identifier of the time off schedule" + id: ID! + "Display name of the time off schedule" + name: String! + "Whether this is the account-level default time off schedule" + is_default: Boolean! + "ID of the user who created this time off schedule, null if system-generated" + created_by: ID + "ISO 8601 timestamp when this record was created" + created_at: Date! + "ISO 8601 timestamp when this record was last updated" + updated_at: Date! + "Paginated non-working date entries in this time off schedule. Use next_time_off_entries_page as the top-level continuation query." + entries_page( "The cursor which allows to fetch the next page of directory resources." +cursor: String, "Number of items to get, the default is 25." +limit: Int = 25): TimeOffEntryPage! +} + +"Result of a time off schedule delete operation" +type TimeOffDeleteResult { + "ID of the deleted time off schedule, null if the operation failed" + id: ID + "Whether the operation succeeded" + success: Boolean! + "Structured error details, null if the operation succeeded" + error: Error +} + +"A non-working date entry within a time off schedule" +type TimeOffEntry { + "Unique identifier of the time off entry" + id: ID! + "ID of the time off schedule this entry belongs to" + time_off_id: ID! + "Optional display name for this time off entry" + name: String + "Start date of the non-working period in YYYY-MM-DD format" + start: String! + "End date of the non-working period in YYYY-MM-DD format" + end: String! + "ID of the user who created this entry" + created_by: ID! + "ISO 8601 timestamp when this record was created" + created_at: Date! + "ISO 8601 timestamp when this record was last updated" + updated_at: Date! +} + +"Result of a time off entry delete operation" +type TimeOffEntryDeleteResult { + "ID of the deleted time off entry, null if the operation failed" + id: ID + "Whether the operation succeeded" + success: Boolean! + "Structured error details, null if the operation succeeded" + error: Error +} + +"A non-working date entry to create inline with a time off schedule" +input TimeOffEntryInput { + "Optional display name for this time off entry" + name: String + "Start date of the non-working period in YYYY-MM-DD format" + start: String! + "End date of the non-working period in YYYY-MM-DD format" + end: String! +} + +"Paginated list of time off entries" +type TimeOffEntryPage { + "Time off entries in this page" + entries: [TimeOffEntry!]! + "Opaque cursor for fetching the next page, null when no more pages exist" + cursor: String +} + +"Result of a time off entry create or update operation" +type TimeOffEntryResult { + "The created or updated time off entry, null if the operation failed" + time_off_entry: TimeOffEntry + "Whether the operation succeeded" + success: Boolean! + "Structured error details, null if the operation succeeded" + error: Error +} + +"Paginated list of time off schedules" +type TimeOffPage { + "Time off schedules in this page" + time_offs: [TimeOff!]! + "Opaque cursor for fetching the next page, null when no more pages exist" + cursor: String +} + +"Result of a time off schedule create or update operation" +type TimeOffResult { + "The created or updated time off schedule, null if the operation failed" + time_off: TimeOff + "Whether the operation succeeded" + success: Boolean! + "Structured error details, null if the operation succeeded" + error: Error +} + +"Input for removing work schedule and/or time off assignments from multiple users" +input UnassignUserAvailabilityInput { + "IDs of the users to remove assignments from" + user_ids: [ID!]! + "Whether to remove the explicit work schedule assignment" + unassign_work_schedule: Boolean + "Whether to remove the explicit time off schedule assignment" + unassign_time_off: Boolean +} + "Result of a single allocation update operation" type UpdateAllocationResult { "Whether the operation succeeded" @@ -11635,6 +12815,152 @@ type UpdateDirectoryResourceAttributesResponse { success: Boolean! } +"Input for updating an existing time off entry" +input UpdateTimeOffEntryInput { + "ID of the time off entry to update" + id: ID! + "New display name for the time off entry" + name: String + "New start date in YYYY-MM-DD format" + start: String + "New end date in YYYY-MM-DD format" + end: String +} + +"Input for updating an existing time off schedule. Entries are managed via the dedicated time off entry mutations (create_time_off_entry, update_time_off_entry, delete_time_off_entry)." +input UpdateTimeOffInput { + "New display name for the time off schedule" + name: String +} + +"Input for updating an existing work schedule" +input UpdateWorkScheduleInput { + "New display name for the work schedule" + name: String + "Updated per-weekday working hours" + days: [WorkScheduleDayInput!] +} + +"A user's assigned work schedule and time off schedule" +type UserAvailability { + "ID of the user" + user_id: ID! + "The work schedule assigned to this user, null if using account default" + work_schedule: WorkSchedule + "The time off schedule assigned to this user, null if using account default" + time_off: TimeOff +} + +"Paginated list of user availability assignments" +type UserAvailabilityPage { + "User availability assignments in this page" + user_availabilities: [UserAvailability!]! + "Opaque cursor for fetching the next page, null when no more pages exist" + cursor: String +} + +"Result of a single user availability assignment. Batch assign/unassign mutations return one of these per requested user, allowing partial success — successful entries have user_availability populated and success=true; failed entries have user_availability=null, success=false, and a populated error." +type UserAvailabilityResult { + "The updated user availability, null if the operation failed for this user" + user_availability: UserAvailability + "Whether the operation succeeded" + success: Boolean! + "Structured error details, null if the operation succeeded" + error: Error +} + +"Day of the week" +enum WeekDay { + "Sunday" + SUNDAY + "Monday" + MONDAY + "Tuesday" + TUESDAY + "Wednesday" + WEDNESDAY + "Thursday" + THURSDAY + "Friday" + FRIDAY + "Saturday" + SATURDAY +} + +"A named work schedule with per-weekday working hours" +type WorkSchedule { + "Unique identifier of the work schedule" + id: ID! + "Display name of the work schedule" + name: String! + "Whether this is the account-level default work schedule" + is_default: Boolean! + "ID of the user who created this work schedule, null if system-generated" + created_by: ID + "ISO 8601 timestamp when this record was created" + created_at: Date! + "ISO 8601 timestamp when this record was last updated" + updated_at: Date! + "Per-weekday working hours for this schedule" + days: [WorkScheduleDay!]! +} + +"Per-weekday working hours for a work schedule" +type WorkScheduleDay { + "Day of the week this entry applies to" + week_day: WeekDay! + "Start of the working day in HH:MM format, null when is_active is false" + start_time: String + "End of the working day in HH:MM format, null when is_active is false" + end_time: String + "Whether this day is a working day" + is_active: Boolean! + "ISO 8601 timestamp when this record was created" + created_at: Date! + "ISO 8601 timestamp when this record was last updated" + updated_at: Date! +} + +"Working hours for a specific day of the week" +input WorkScheduleDayInput { + "Day of the week this entry applies to" + week_day: WeekDay! + "Start of the working day in HH:MM format. Required when is_active is true; ignored otherwise." + start_time: String + "End of the working day in HH:MM format. Required when is_active is true; ignored otherwise." + end_time: String + "Whether this day is a working day" + is_active: Boolean! +} + +"Result of a work schedule delete operation" +type WorkScheduleDeleteResult { + "ID of the deleted work schedule, null if the operation failed" + id: ID + "Whether the operation succeeded" + success: Boolean! + "Structured error details, null if the operation succeeded" + error: Error +} + +"Paginated list of work schedules" +type WorkSchedulePage { + "Work schedules in this page" + work_schedules: [WorkSchedule!]! + "Opaque cursor for fetching the next page, null when no more pages exist" + cursor: String +} + +"Result of a work schedule create or update operation" +type WorkScheduleResult { + "The created or updated work schedule, null if the operation failed" + work_schedule: WorkSchedule + "Whether the operation succeeded" + success: Boolean! + "Structured error details, null if the operation succeeded" + error: Error +} + "Effort hours per kind (allocated, planned, spent, available)." type Effort { "Allocated effort hours." @@ -11936,6 +13262,8 @@ type SearchIndexedBoard { description: String "ID of the workspace containing this board." workspace_id: ID + "ID of the user who created this board." + creator_id: ID "URL to view this board." url: String! } @@ -11995,7 +13323,8 @@ workspace_ids: [ID!]): SearchItemResults! query: String!, "Maximum number of results to return (default 10, max 20)." limit: Int = 10, "Date range filter." date_range: CrossEntityDateRangeInput, "Controls the trade-off between search quality and response time. Defaults to balanced." -strategy: SearchStrategy, "Filter boards to specific workspace IDs." +strategy: SearchStrategy, "Filter boards to specific board IDs." +board_ids: [ID!], "Filter boards to specific workspace IDs." workspace_ids: [ID!]): SearchBoardResults! "Search for documents." docs( "The search query string." @@ -12167,6 +13496,50 @@ type SprintTimeline { to: Date } +"Structured result data for a completed or partially-completed operation" +type AsyncJobResult { + "Total items in the operation" + total: Int + "Successfully processed items" + succeeded: Int + "Items that failed" + failed: Int + "Operation-specific details (failed item IDs, report URLs, etc.)" + details: JSON +} + +"Status information for an async job" +type AsyncJobStatus { + "Unique job identifier" + id: ID + "Current job status" + status: JobState + "When the job was created (ISO 8601)" + created_at: String + "When the job was last updated (ISO 8601)" + updated_at: String + "Error description if the job failed" + error: String + "Structured result data for completed or partially-completed operations" + result: AsyncJobResult +} + +"Status of an async job" +enum JobState { + "Job is queued but not yet started" + PENDING + "Job is actively executing" + RUNNING + "Job completed successfully" + COMPLETED + "Job failed" + FAILED + "Job expired before completion" + EXPIRED + "Job was cancelled" + CANCELLED +} + "A single column value change within a task decision" type ColumnChange { "The identifier of the column that changed" @@ -12407,6 +13780,14 @@ enum BaseRoleName { ADMIN } +"The result of creating a service user." +type CreateServiceUserResult { + "The created service user." + user: User + "The API token for the created service user. Null if token generation failed." + token: String +} + "Attributes of the team to be created." input CreateTeamAttributesInput { "The team's name." @@ -12516,6 +13897,32 @@ type RemoveTeamOwnersResult { errors: [RemoveTeamOwnersError!] } +"A service user in the account." +type ServiceUser { + "The ID of the service user." + id: ID + "The display name of the service user." + name: String + "The title/description of the service user." + title: String + "Whether the service user is active." + enabled: Boolean + "The ID of the user who created this service user." + invited_by_id: ID + "When the service user was created." + created_at: String + "The last time the service user token was used for an API request." + last_token_activity: String +} + +"A service user token result." +type ServiceUserToken { + "The ID of the service user." + service_user_id: ID + "The API token." + token: String +} + "Attributes of the email domain to be updated." input UpdateEmailDomainAttributesInput { "The user identifiers (max 200)" @@ -12663,6 +14070,8 @@ enum InvitationMethod { API_USER_CREATION "Created as an agent user." AGENT_USER_CREATION + "Created via system creation flow." + SYSTEM_CREATION } "URLs for the user's profile photo in various sizes." @@ -12707,6 +14116,8 @@ enum UserKindFilter { PERSONAL_AGENT_MEMBER "A agent signup user user." AGENT_SIGNUP_USER + "A service user user." + SERVICE_USER "A portal user." PORTAL "A portfolio api user user." @@ -12875,6 +14286,76 @@ type WidgetSchemaInfo { schema: JSON } +"A page of live workflow automations with cursor-based pagination metadata" +type LiveWorkflowAutomationsPage { + "List of live workflow automations in this page" + data: [WorkflowAutomation!] + "Cursor-based pagination metadata" + page_info: WorkflowAutomationsPageInfo +} + +"A workflow and its steps" +type WorkflowAutomation { + "Workflow entity ID" + id: ID + "Workflow title" + title: String + "Workflow description" + description: String + "Whether the workflow is currently active" + active: Boolean + "Last update timestamp" + updated_at: String + "Creation timestamp" + created_at: String + "The steps that make up this workflow" + steps: [WorkflowStep!] +} + +"Cursor-based pagination metadata for live workflow automation queries" +type WorkflowAutomationsPageInfo { + "Whether there are more results beyond the current page" + has_next_page: Boolean + "Cursor of the last item in this page; pass as last_id to fetch the next page" + end_cursor: ID +} + +"Cursor-based pagination parameters for workflow automation queries" +input WorkflowAutomationsPaginationInput { + "Maximum number of results to return (default 50, max 100)" + limit: Int + "Cursor of the last item from the previous page; pass page_info.end_cursor from the previous response" + last_id: ID +} + +"Identifiers for a newly created workflow" +type WorkflowBuilderCreateResult { + "Stable workflow entity ID" + workflow_object_id: ID + "Draft workflow ID" + workflow_draft_id: ID +} + +"Privacy level for a workflow" +enum WorkflowBuilderPrivacyKind { + "Workflow is publicly accessible (Main)" + PUBLIC + "Workflow is private and restricted" + PRIVATE + "Workflow is shareable with guests outside the account" + SHAREABLE +} + +"A step instance within a workflow" +type WorkflowStep { + "Unique node ID within the workflow" + node_id: ID + "ID of the block type this step uses" + block_reference_id: ID + "Display title of the step" + title: String +} + "Logical operator for combining rules or conditions. Must be OR — the question is shown if any rule or condition is satisfied." enum ConditionOperator { "Logical OR — any condition being met is sufficient."